AuctionPlatformJava là ứng dụng đấu giá trực tuyến gồm server HTTP/WebSocket và client desktop JavaFX. Hệ thống hỗ trợ người bán đăng sản phẩm, mở phiên đấu giá, người mua đặt giá, theo dõi lịch sử đấu giá và nhận cập nhật tự động khi dữ liệu thay đổi.
Phạm vi hiện tại tập trung vào chạy local hoặc trong mạng nội bộ:
- Quản lý tài khoản theo vai trò
Bidder,Seller,Admin. - Quản lý sản phẩm đấu giá, phiên đấu giá và trạng thái phiên.
- Đặt giá thủ công, auto-bid, lịch sử bid và cập nhật realtime qua WebSocket.
- Lưu dữ liệu bằng SQLite trong file
auction_data.db. - Chưa tích hợp cổng thanh toán thật, email/SMS hay triển khai production cloud.
Xem video demo đầy đủ các tính năng của hệ thống đấu giá trực tuyến trên YouTube.
Báo cáo chi tiết về thiết kế và triển khai hệ thống: docs/BaoCaoBaiTapLon.docx
- Java 21.
- Gradle Wrapper 9.5.0.
- JavaFX 21 cho giao diện desktop.
- Javalin 6.4.0 cho REST API và WebSocket server.
- SQLite JDBC cho lưu trữ dữ liệu.
- Jackson, Gson và OkHttp cho JSON/HTTP client.
- JUnit 5 cho kiểm thử.
- GitHub Actions cho CI.
- Cài JDK 21 và đặt
JAVA_HOMEtrỏ tới JDK 21. - Không cần cài Gradle riêng vì dự án dùng Gradle Wrapper.
- Windows: dùng
gradlew.bat. - Linux/macOS: dùng
./gradlew; nếu file chưa có quyền chạy, chạy:
chmod +x ./gradlewAuctionPlatformJava/
├── client/ # JavaFX desktop client, FXML, CSS, REST client
├── server/ # Javalin server, REST/WebSocket API, SQLite repositories
├── shared/ # Model, service nghiệp vụ, repository interface, exception, test
├── gradle/wrapper/ # Gradle Wrapper
├── .github/workflows/ # GitHub Actions CI
├── build.gradle # Cấu hình Gradle chung
├── settings.gradle # Khai báo module shared/server/client
├── gradlew # Gradle Wrapper cho Linux/macOS
└── gradlew.bat # Gradle Wrapper cho Windows
Tất cả lệnh dưới đây chạy từ thư mục gốc của dự án.
Windows PowerShell:
.\gradlew.bat test
.\gradlew.bat buildLinux/macOS:
./gradlew test
./gradlew buildServer mặc định chạy tại http://localhost:8080/api.
Windows PowerShell:
.\gradlew.bat :server:runLinux/macOS:
./gradlew :server:runCó thể đổi port bằng tham số dòng lệnh:
Windows PowerShell:
.\gradlew.bat :server:run --args="8081"Linux/macOS:
./gradlew :server:run --args='8081'Mở terminal mới, giữ server đang chạy, sau đó chạy client.
Windows PowerShell:
.\gradlew.bat :client:runLinux/macOS:
./gradlew :client:runClient mặc định kết nối tới http://localhost:8080/api. Nếu server chạy ở địa chỉ khác, nhập URL server ở màn hình đăng nhập.
- Mở terminal tại thư mục gốc dự án.
- Chạy server bằng
.\gradlew.bat :server:runtrên Windows hoặc./gradlew :server:runtrên Linux/macOS. - Chờ log server báo đã khởi động tại
http://localhost:8080/api. - Mở terminal thứ hai.
- Chạy client bằng
.\gradlew.bat :client:runtrên Windows hoặc./gradlew :client:runtrên Linux/macOS. - Đăng nhập hoặc đăng ký tài khoản mới để sử dụng.
Tài khoản admin mặc định được tạo khi server khởi động lần đầu:
- Username:
admin - Password:
admin
- Đăng ký, đăng nhập và xác thực bằng token.
- Phân quyền theo vai trò
Bidder,Seller,Admin. - Tạo, sửa, xóa và xem danh sách sản phẩm đấu giá.
- Hỗ trợ nhiều loại sản phẩm bằng kế thừa và factory: đồ điện tử, tác phẩm nghệ thuật, phương tiện, loại khác.
- Người bán mở phiên đấu giá cho sản phẩm.
- Admin có thể bắt đầu, kết thúc sớm hoặc hủy phiên đấu giá.
- Đặt giá thủ công với kiểm tra giá hợp lệ, số dư và trạng thái phiên.
- Auto-bid với giới hạn giá tối đa và cooldown 5 giây giữa các lượt auto-bid.
- Chống sniping: tự gia hạn phiên khi có bid trong những giây cuối.
- Tự động đóng phiên đấu giá khi hết thời gian.
- Cập nhật trạng thái
OPEN,RUNNING,FINISHED,PAID,CANCELED. - Cập nhật danh sách và màn hình bid realtime qua WebSocket.
- Xem lịch sử bid và biểu đồ diễn biến giá.
- Quản lý số dư người dùng, nạp/rút tiền và thanh toán sau khi kết thúc đấu giá.
- Lưu dữ liệu bằng SQLite.
- Kiểm thử tự động bằng JUnit 5.
- CI GitHub Actions chạy
./gradlew testtrên Ubuntu.
