Hệ thống đấu giá trực tuyến bằng JavaFX, MySQL, REST API và TCP Socket.
AuctionSpace là hệ thống đấu giá trực tuyến dạng desktop app, xây dựng theo mô hình client-server. Hệ thống hỗ trợ ba nhóm người dùng chính: Bidder, Seller và Admin.
| Thành phần | Phạm vi |
|---|---|
| Bidder | Xem phiên đấu giá, vào phòng đấu giá, đặt giá, dùng Auto Bid, nạp tiền, xem sản phẩm đã thắng. |
| Seller | Đăng ký và quản lý sản phẩm đưa lên đấu giá. |
| Admin | Quản lý người dùng, duyệt hoặc từ chối phiên đấu giá, theo dõi dashboard hệ thống. |
| Server | Xử lý REST API, socket realtime cho đấu giá và kết nối MySQL. |
| Hạng mục | Công nghệ |
|---|---|
| Ngôn ngữ | Java 21 |
| Giao diện | JavaFX 21, FXML, CSS |
| Build tool | Maven |
| Database | MySQL 8 |
| Persistence | JDBC, HikariCP |
| API | Java HttpServer, Gson |
| Realtime | TCP Socket |
| Bảo mật | BCrypt |
| Test | JUnit 5, Mockito, H2 |
| Yêu cầu | Phiên bản/Ghi chú |
|---|---|
| JDK | 21 |
| Maven | 3.8 trở lên |
| MySQL | 8 |
| Git | Bất kỳ bản ổn định |
| IDE | Khuyến nghị IntelliJ IDEA |
Tạo file .env ở thư mục gốc repository theo mẫu .env.example:
DB_URL=jdbc:mysql://localhost:3306/auction_system?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Ho_Chi_Minh
DB_USERNAME=root
DB_PASSWORD=your_mysql_password
SERVER_HOST=127.0.0.1
SERVER_PORT=18368
API_BASE_URL=http://localhost:8080/api/Server sẽ tự tạo database và seed dữ liệu mẫu từ schema.sql khi khởi động.
AuctionSystem/ # Repository root
├── .env.example # Mẫu cấu hình môi trường
├── README.md # Tài liệu dự án
├── .github/ # CI workflow
└── AuctionSystem/ # Maven project chính
├── pom.xml # Maven config
├── API_Contract.md
├── docs/
└── src/
├── main/
│ ├── java/com/team4/
│ │ ├── client/ # JavaFX API client, socket client
│ │ ├── controller/ # JavaFX controllers
│ │ ├── dao/ # DAO layer
│ │ ├── db/ # Database setup
│ │ ├── dto/ # Request/response DTO
│ │ ├── factory/ # Item factory
│ │ ├── handler/ # HTTP handlers
│ │ ├── mapper/ # DTO mappers
│ │ ├── model/ # Domain models
│ │ ├── server/ # API server, socket server, scheduler
│ │ ├── service/ # Business logic
│ │ └── util/ # Utilities
│ └── resources/
│ ├── com/team4/view/ # FXML, CSS
│ ├── fonts/
│ ├── schema.sql
│ ├── data.sql
│ └── database.properties
└── test/
├── java/com/team4/
└── resources/
Các lệnh dưới đây dùng được trên Windows PowerShell, Windows CMD, Linux và macOS nếu đã cài JDK 21, Maven và MySQL.
cd AuctionSystem| Mục đích | Lệnh |
|---|---|
| Build nhanh không chạy test | mvn -q -DskipTests compile |
| Chạy unit test | mvn test |
Đảm bảo MySQL đang chạy và thông tin kết nối trong .env là đúng.
Mở terminal thứ nhất tại thư mục AuctionSystem/ và chạy:
mvn exec:java "-Dexec.mainClass=com.team4.server.Server"Server sẽ khởi động:
- Database setup.
- REST API tại
http://localhost:8080/api/. - Socket server tại
127.0.0.1:18368. - Scheduler đóng các phiên đấu giá đã hết hạn.
Mở terminal thứ hai tại thư mục AuctionSystem/ và chạy:
mvn exec:java "-Dexec.mainClass=com.team4.Launcher"Lưu ý: phải chạy Server trước Client để đăng nhập, tải dữ liệu và đấu giá realtime hoạt động đúng.
| Nhóm | Chức năng đã hoàn thành |
|---|---|
| Authentication | Đăng nhập theo role, đăng ký Bidder/Seller, Admin login bằng admin code, điều hướng theo role. |
| Bidder | Xem danh sách auction, lọc Pending/Ongoing/Ended, vào phòng đấu giá, đặt giá realtime, xem lịch sử bid, dùng Auto Bid, nạp tiền, xem sản phẩm đã thắng. |
| Seller | Xem dashboard, thêm/sửa/xóa sản phẩm, xem trạng thái sản phẩm/phiên đấu giá, không được phép đặt giá trong phòng đấu giá. |
| Admin | Xem dashboard, tìm kiếm người dùng, cấp/gỡ quyền Admin, duyệt/từ chối phiên đấu giá. |
| Hệ thống | REST API, socket realtime, tự động đóng phiên đấu giá hết hạn, giao diện tiếng Anh, đã loại bỏ chat. |