Link Demo:https://drive.google.com/file/d/1hqICk4utgtWYR5lZ6V7nbMjN7afOTYZn/view?usp=sharing- Đây là một dự án web full-stack mô phỏng Hệ thống Quản lý Quán Cà Phê (POS) hoàn chỉnh, được xây dựng từ đầu bằng Spring Boot và Thymeleaf.
- Ứng dụng bao gồm các chức năng nghiệp vụ phức tạp từ quản lý nhân viên, kiểm soát kho hàng, quản lý thực đơn (bao gồm định lượng nguyên liệu), đến một giao diện bán hàng trực quan (xem, chuyển, gộp, tách bàn) và hệ thống báo cáo tài chính.
- Đăng nhập: Sử dụng Spring Security, mật khẩu được mã hóa bằng BCrypt.
- Phân quyền (Role-Based): Giao diện và chức năng được hiển thị động tùy theo vai trò (ROLE_ADMIN hoặc ROLE_STAFF).
- Admin: Thấy tất cả các mô-đun quản lý (Nhân viên, Kho, Báo cáo...).
- Staff (Nhân viên): Chỉ thấy các mô-đun cơ bản (Trang cá nhân, Quản lý Bán hàng).
- Bảo vệ Endpoint: Các API backend được bảo vệ (ví dụ: /admin/** chỉ Admin mới được truy cập).
- Bảo vệ CSRF: Kích hoạt cho tất cả các yêu cầu POST, đảm bảo an toàn.
- Đây là mô-đun phức tạp nhất, xử lý logic nghiệp vụ theo thời gian thực:
- Hiển thị bàn: Hiển thị lưới các bàn với màu sắc động theo trạng thái (Trống, Có khách, Đặt trước).
- Xem thông tin bàn: Popup hiển thị các món đã gọi và thông tin đặt trước.
- Chọn & Cập nhật món: Thêm/sửa/xóa món ăn cho một hóa đơn đang mở.
- Nghiệp vụ Bàn:
- Chuyển bàn: Chuyển toàn bộ hóa đơn từ bàn A (có khách) sang bàn B (trống).
- Gộp bàn: Gộp các món và tổng tiền từ nhiều bàn nguồn vào một bàn đích.
- Tách bàn: Chuyển một số món (với số lượng tùy chọn) từ bàn A sang bàn B.
- Thanh toán: Xử lý thanh toán, tính tiền thối, và tự động cập nhật trạng thái hóa đơn (HoaDon.TrangThai) và trạng thái bàn (Ban.TinhTrang).
- Quản lý Nhân viên: CRUD, tích hợp tạo TaiKhoan và phân quyền.
- Quản lý Thực đơn: CRUD, bao gồm logic phức tạp để quản lý thành phần nguyên liệu (ChiTietThucDon).
- Quản lý Kho hàng (HangHoa): Tích hợp logic Nhập/Xuất kho, tự động cập nhật số lượng tồn (soLuong).
- Quản lý Thiết bị & Khuyến mãi: CRUD tiêu chuẩn.
- Lọc động: Lọc báo cáo theo khoảng ngày và loại báo cáo (Thu/Chi, Lương).
- Tổng hợp dữ liệu: Tự động tổng hợp dữ liệu từ nhiều bảng (HoaDon, ChiTieu, NhanVien, ChucVu) bằng Java Streams ở tầng Service.
- Xuất file (Demo): Xây dựng API backend (/admin/reports/export) có khả năng tạo và trả về file Excel (.xls) (sử dụng thư viện Apache POI).
- Backend,"Spring Boot, Spring Security (Auth, BCrypt, CSRF), Spring Data JPA (Hibernate)"
- Frontend,"Thymeleaf (Server-Side Rendering), JavaScript (Fetch API, DOM)"
- Database,MySQL
- Build/Dependency,Maven
- Libraries,"Lombok, Apache POI (Xuất Excel)"
- Bạn có thể chạy toàn bộ dự án (Backend + CSDL) chỉ bằng một lệnh duy nhất với Docker.
- Yêu cầu: Đã cài đặt
Docker Desktop(phiên bản cho Windows, Mac, hoặc Linux). - Hướng dẫn chạy: Tải file
docker-compose.ymlvà fileinit.sqltừ repo này về. Đặt cả hai file vào chung một thư mục trống (ví dụ: D:\CafeApp)
- Di chuyền đến thư mục bạn vừa tạo
cd D:\CafeApp
- Chạy lệnh sau để tải images (ảnh) và khởi động các container (ứng dụng + CSDL). Docker sẽ tự động nạp file
init.sqlđể tạo dữ liệu mẫu. docker-compose up -d-
- Truy cập ứng dụng
- Đợi khoảng 1-2 phút để ứng dụng khởi động hoàn toàn.
- Mở trình duyệt và truy cập:
http://localhost:8080
- Admin:
admin / 123456 - Staff:
phucvu01 / 123456
git clone https://github.com/JosephHieu/QuanLyQuanCaPhe.git
-
- Mở MySQL và tạo một database mới
CREATE DATABASE CafeManagement;
- Mở MySQL và tạo một database mới
-
- Script SQL để tạo bảng và chèn dữ liệu mẫu (đã bao gồm UUID) nằm ở thư mục
database-script. Hoặc bạn có thể dựa vào cấu hình spring.jpa.hibernate.ddl-auto (nếu đặt là create hoặc update) để Hibernate tự tạo bảng.
- Script SQL để tạo bảng và chèn dữ liệu mẫu (đã bao gồm UUID) nằm ở thư mục
-
- Cấu hình kết nối src/main/resources/application.properties và cập nhật thông tin CSDL của bạn:
properties- spring.datasource.url=jdbc:mysql://localhost:3306/CafeManagement
- spring.datasource.username=your_username
- spring.datasource.password=your_password
- spring.jpa.hibernate.ddl-auto=validate # (hoặc update/create)
- Bạn có thể chạy bằng Maven hoặc trực tiếp từ IDE:
- Sử dụng
mvn spring-boot:run - Ứng dụng sẽ chạy tại http://localhost:8080
Admin:- Username: admin
- Password 123456 (Đã mã hóa mật khẩu trong csdl)
- Username: phucvu01
- Password: 123456 (Đã mã hóa mật khẩu trong csdl)