RestMan là một ứng dụng web quản lý nhà hàng được phát triển bằng Java Servlet/JSP với MySQL database, tương thích với Tomcat 10.1+ (Jakarta EE 9+).
# Build project
mvn clean package
# Start with Docker Compose (MySQL + RestMan)
docker-compose up -d
# Truy cập
open http://localhost:8080/👉 Xem chi tiết: DOCKER_QUICK_START.md
- Tìm kiếm món ăn: Khách hàng có thể tìm kiếm thông tin món ăn theo menu
- Chọn menu (Trưa, Tối, Đặc biệt, v.v.)
- Tìm kiếm món ăn theo từ khóa
- Xem danh sách kết quả với phân trang và sắp xếp
- Xem chi tiết món ăn (tên, mô tả, giá, hình ảnh)
- Thống kê khách hàng theo doanh thu: Nhân viên có thể xem báo cáo khách hàng
- Lọc theo khoảng thời gian
- Lọc theo hạng thành viên (Bronze, Silver, Gold, VIP)
- Lọc theo doanh thu tối thiểu
- Xem top N khách hàng
- Xem chi tiết đơn hàng của khách
- Xem chi tiết hóa đơn
RestMan/
├── sql/
│ ├── schema.sql # Database schema
│ └── sample_data.sql # Dữ liệu mẫu
├── src/
│ └── main/
│ ├── java/
│ │ ├── dao/ # Data Access Objects
│ │ ├── model/ # Entity models
│ │ │ ├── enums/ # Enumerations
│ │ │ └── vm/ # View Models
│ │ ├── servlet/ # Controllers
│ │ └── util/ # Utilities (DBUtil)
│ └── webapp/
│ ├── css/ # CSS files
│ ├── WEB-INF/
│ │ └── jsp/ # JSP pages
│ │ ├── customer/ # Customer pages
│ │ └── staff/ # Staff pages
│ └── index.jsp # Landing page
├── pom.xml
├── .env.example
└── README.md
- Backend: Java 17, Servlet 4.0, JSP, JSTL
- Database: MySQL 8.x
- Build Tool: Maven
- Libraries:
- MySQL Connector/J 8.3.0
- jBCrypt 0.4 (password hashing)
- dotenv-java 3.0.0 (environment variables)
- SLF4J 2.0.7 (logging)
- JDK 17 hoặc cao hơn
- Maven 3.6+
- MySQL 8.x
- Apache Tomcat 9.x hoặc 10.x
Tạo database:
CREATE DATABASE restman_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Chạy script tạo bảng:
mysql -u root -p restman_db < sql/schema.sqlNạp dữ liệu mẫu (tùy chọn):
mysql -u root -p restman_db < sql/sample_data.sqlCopy file .env.example thành .env và cập nhật thông tin database:
cp .env.example .envChỉnh sửa file .env:
JDBC_URL=jdbc:mysql://localhost:3306/restman_db?useSSL=false&serverTimezone=UTC
JDBC_USER=root
JDBC_PASS=your_passwordBuild project:
mvn clean packageChạy với Tomcat Maven Plugin:
mvn tomcat7:runHoặc deploy file WAR vào Tomcat server:
cp target/RestMan-1.0-SNAPSHOT.war $TOMCAT_HOME/webapps/Truy cập ứng dụng tại: http://localhost:8080/restman
- Truy cập trang chủ và chọn "Khách Hàng"
- Chọn "Tìm Kiếm Món Ăn"
- Chọn menu muốn tìm (Trưa/Tối/Đặc biệt)
- Nhập từ khóa tìm kiếm (hoặc để trống để xem tất cả)
- Chọn cách sắp xếp và số món hiển thị
- Click vào món ăn để xem chi tiết
- Truy cập trang chủ và chọn "Nhân Viên"
- Chọn "Báo Cáo"
- Chọn "Khách Hàng Theo Doanh Thu"
- Nhập các điều kiện lọc:
- Ngày bắt đầu và kết thúc
- Hạng thành viên (tùy chọn)
- Doanh thu tối thiểu (tùy chọn)
- Top N khách hàng (tùy chọn)
- Click "Tạo Báo Cáo"
- Click vào khách hàng để xem chi tiết đơn hàng
- Click vào đơn hàng để xem chi tiết
- Click vào hóa đơn để xem/in hóa đơn
tblAccount: Tài khoản người dùngtblCustomer: Thông tin khách hàngtblMembershipCard: Thẻ thành viêntblMenu: Menu món ăntblDish: Món ăntblMenuItem: Món ăn trong menutblOrder: Đơn hàngtblOrderItem: Chi tiết đơn hàngtblInvoice: Hóa đơn thanh toán
Chi tiết schema xem file sql/schema.sql
GET /catalog- Show menu listGET /catalog?action=searchForm&menuId={id}- Show search formGET /catalog?action=search&menuId={id}&q={keyword}- Search dishesGET /catalog?action=viewDish&dishId={id}- View dish details
GET /report/customer-revenue- Show filter formGET /report/customer-revenue?action=runReport&fromDate={date}&toDate={date}- Run reportGET /report/customer-revenue?action=viewCustomerDetail&customerId={id}- View customer ordersGET /report/customer-revenue?action=viewOrder&orderId={id}- View order detailsGET /report/customer-revenue?action=viewInvoice&invoiceId={id}- View invoice
Phát triển bởi Team PTTK - Phân Tích Thiết Kế Hệ Thống
This project is for educational purposes.