Skip to content

Commit 52e9aeb

Browse files
committed
Thêm README.md theo yêu cầu
1 parent b124756 commit 52e9aeb

1 file changed

Lines changed: 147 additions & 17 deletions

File tree

README.md

Lines changed: 147 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,154 @@
1-
<div align="center">
1+
# AuctionPlatformJava - Hệ thống đấu giá trực tuyến
22

3-
# 🧾 BÀI TẬP LỚN LẬP TRÌNH NÂNG CAO
4-
## 🌐 Phát Triển Hệ Thống Đấu Giá Trực Tuyến
5-
### 👥 Nhóm 2 – CS7 – UET
3+
## Mô tả bài toán và phạm vi
64

7-
</div>
5+
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.
86

9-
---
7+
Phạm vi hiện tại tập trung vào chạy local hoặc trong mạng nội bộ:
108

11-
## 📌 Thành viên
12-
- **Hồ Văn Hợp**
13-
- **Lê Nguyễn Minh Hiếu**
14-
- **Kim Gia Huy**
15-
- **Võ Văn Quốc**
9+
- Quản lý tài khoản theo vai trò `Bidder`, `Seller`, `Admin`.
10+
- Quản lý sản phẩm đấu giá, phiên đấu giá và trạng thái phiên.
11+
- Đặt giá thủ công, auto-bid, lịch sử bid và cập nhật realtime qua WebSocket.
12+
- Lưu dữ liệu bằng SQLite trong file `auction_data.db`.
13+
- Chưa tích hợp cổng thanh toán thật, email/SMS hay triển khai production cloud.
1614

17-
---
15+
## Công nghệ, môi trường và yêu cầu cài đặt
1816

19-
## 🛠️ To-Do (Các điểm cần bổ sung / sửa chữa)
17+
### Công nghệ sử dụng
2018

21-
### 💰 Xử lý nhập số khi rút tiền
22-
- [x] Giới hạn định dạng nhập (chỉ cho phép số như `1000`, `1000.0`)
23-
- [X] thông báo nhập sai mật khẩu sau khi tạo tài khoản mới hiện xanh -> sửa lại đỏ
24-
- [x] xử lí username và pass khi tạo tk, hiện tại nhập " c " nhận "c" và "c c" nhận "c c" , yêu cầu user và pass không được có dấu cách
19+
- Java 21.
20+
- Gradle Wrapper 9.5.0.
21+
- JavaFX 21 cho giao diện desktop.
22+
- Javalin 6.4.0 cho REST API và WebSocket server.
23+
- SQLite JDBC cho lưu trữ dữ liệu.
24+
- Jackson, Gson và OkHttp cho JSON/HTTP client.
25+
- JUnit 5 cho kiểm thử.
26+
- GitHub Actions cho CI.
27+
28+
### Yêu cầu môi trường
29+
30+
- Cài JDK 21 và đặt `JAVA_HOME` trỏ tới JDK 21.
31+
- Không cần cài Gradle riêng vì dự án dùng Gradle Wrapper.
32+
- Windows: dùng `gradlew.bat`.
33+
- Linux/macOS: dùng `./gradlew`; nếu file chưa có quyền chạy, chạy:
34+
35+
```bash
36+
chmod +x ./gradlew
37+
```
38+
39+
## Cấu trúc thư mục
40+
41+
```text
42+
AuctionPlatformJava/
43+
├── client/ # JavaFX desktop client, FXML, CSS, REST client
44+
├── server/ # Javalin server, REST/WebSocket API, SQLite repositories
45+
├── shared/ # Model, service nghiệp vụ, repository interface, exception, test
46+
├── gradle/wrapper/ # Gradle Wrapper
47+
├── .github/workflows/ # GitHub Actions CI
48+
├── build.gradle # Cấu hình Gradle chung
49+
├── settings.gradle # Khai báo module shared/server/client
50+
├── gradlew # Gradle Wrapper cho Linux/macOS
51+
└── gradlew.bat # Gradle Wrapper cho Windows
52+
```
53+
54+
## Câu lệnh chạy chương trình
55+
56+
Tất cả lệnh dưới đây chạy từ thư mục gốc của dự án.
57+
58+
### Kiểm tra và build
59+
60+
Windows PowerShell:
61+
62+
```powershell
63+
.\gradlew.bat test
64+
.\gradlew.bat build
65+
```
66+
67+
Linux/macOS:
68+
69+
```bash
70+
./gradlew test
71+
./gradlew build
72+
```
73+
74+
### Chạy server
75+
76+
Server mặc định chạy tại `http://localhost:8080/api`.
77+
78+
Windows PowerShell:
79+
80+
```powershell
81+
.\gradlew.bat :server:run
82+
```
83+
84+
Linux/macOS:
85+
86+
```bash
87+
./gradlew :server:run
88+
```
89+
90+
Có thể đổi port bằng tham số dòng lệnh:
91+
92+
Windows PowerShell:
93+
94+
```powershell
95+
.\gradlew.bat :server:run --args="8081"
96+
```
97+
98+
Linux/macOS:
99+
100+
```bash
101+
./gradlew :server:run --args='8081'
102+
```
103+
104+
### Chạy client
105+
106+
Mở terminal mới, giữ server đang chạy, sau đó chạy client.
107+
108+
Windows PowerShell:
109+
110+
```powershell
111+
.\gradlew.bat :client:run
112+
```
113+
114+
Linux/macOS:
115+
116+
```bash
117+
./gradlew :client:run
118+
```
119+
120+
Client 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.
121+
122+
## Hướng dẫn chạy Server/Client theo thứ tự
123+
124+
1. Mở terminal tại thư mục gốc dự án.
125+
2. Chạy server bằng `.\gradlew.bat :server:run` trên Windows hoặc `./gradlew :server:run` trên Linux/macOS.
126+
3. Chờ log server báo đã khởi động tại `http://localhost:8080/api`.
127+
4. Mở terminal thứ hai.
128+
5. Chạy client bằng `.\gradlew.bat :client:run` trên Windows hoặc `./gradlew :client:run` trên Linux/macOS.
129+
6. Đăng nhập hoặc đăng ký tài khoản mới để sử dụng.
130+
131+
Tài khoản admin mặc định được tạo khi server khởi động lần đầu:
132+
133+
- Username: `admin`
134+
- Password: `admin`
135+
136+
## Danh sách chức năng đã hoàn thành
137+
138+
- Đăng ký, đăng nhập và xác thực bằng token.
139+
- Phân quyền theo vai trò `Bidder`, `Seller`, `Admin`.
140+
- Tạo, sửa, xóa và xem danh sách sản phẩm đấu giá.
141+
- 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.
142+
- Người bán mở phiên đấu giá cho sản phẩm.
143+
- Admin có thể bắt đầu, kết thúc sớm hoặc hủy phiên đấu giá.
144+
- Đặt giá thủ công với kiểm tra giá hợp lệ, số dư và trạng thái phiên.
145+
- 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.
146+
- Chống sniping: tự gia hạn phiên khi có bid trong những giây cuối.
147+
- Tự động đóng phiên đấu giá khi hết thời gian.
148+
- Cập nhật trạng thái `OPEN`, `RUNNING`, `FINISHED`, `PAID`, `CANCELED`.
149+
- Cập nhật danh sách và màn hình bid realtime qua WebSocket.
150+
- Xem lịch sử bid và biểu đồ diễn biến giá.
151+
- 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á.
152+
- Lưu dữ liệu bằng SQLite.
153+
- Kiểm thử tự động bằng JUnit 5.
154+
- CI GitHub Actions chạy `./gradlew test` trên Ubuntu.

0 commit comments

Comments
 (0)