Hệ thống Backend cung cấp các API RESTful cho nền tảng đặt vé máy bay trực tuyến. Dự án được thiết kế theo kiến trúc Domain-Driven Design (DDD), phân tách rõ ràng các module nghiệp vụ, hỗ trợ khả năng mở rộng và dễ dàng bảo trì.
- 🔐 Nhận dạng & Phân quyền (Identity): Xác thực người dùng bằng JWT (JSON Web Token), quản lý quyền hạn (Admin/Customer), và cơ chế vô hiệu hóa token an toàn (Logout/Blacklist).
- 🛫 Quản lý lịch trình & Chuyến bay (Inventory): Quản lý sân bay, hãng hàng không, máy bay. Tự động đồng bộ dữ liệu chuyến bay thực tế từ bên thứ 3 (Aviationstack API) thông qua hệ thống Cron Jobs.
- 🎫 Hệ thống đặt chỗ (Booking): Xử lý luồng đặt vé, giữ chỗ, mua thêm dịch vụ phụ trợ (hành lý, suất ăn). Tự động tạo vé điện tử (e-ticket) dưới định dạng PDF.
- 💳 Tích hợp thanh toán (Payment): Tích hợp cổng thanh toán trực tuyến VNPay, xử lý IPN, quản lý trạng thái giao dịch an toàn và các Job xử lý đơn hàng quá hạn.
- 📧 Hệ thống thông báo (Notification): Tự động gửi email xác nhận đặt vé, hỗ trợ khôi phục mật khẩu sử dụng Thymeleaf Template.
- 📊 Báo cáo & Thống kê (Dashboard): API cung cấp dữ liệu thống kê doanh thu theo ngày, tháng và phân tích các tuyến bay phổ biến dành riêng cho trang quản trị (Admin).
- Ngôn ngữ: Java 17+
- Framework: Spring Boot 3.x, Spring Data JPA, Spring Security
- Database: PostgreSQL
- Cache: Redis
- Công cụ & Thư viện phụ trợ:
- Cổng thanh toán: VNPay API
- Xuất file PDF: OpenPDF
- Gửi Email: Spring Boot Starter Mail, Thymeleaf
- Mapping Object: MapStruct
- Kiến trúc: RESTful API, Cron Jobs (Scheduler), Module-based Architecture
Dự án được chia theo các domain độc lập để đảm bảo tính đóng gói:
src/main/java/com/utc/flight_booking_service/
├── identity/ # Xác thực, Phân quyền, JWT
├── inventory/ # Chuyến bay, Hãng bay, Đồng bộ dữ liệu Aviationstack
├── booking/ # Đặt chỗ, Dịch vụ phụ trợ, Xuất file PDF
├── payment/ # Giao dịch, Cổng thanh toán VNPay
├── notification/ # Gửi Email, Thymeleaf templates
├── dashboard/ # Thống kê doanh thu cho Admin
├── exception/ # Xử lý lỗi tập trung (Global Exception Handler)
└── common/ # Chứa các Base Entity, Constants, Response chung
- JDK 17 hoặc mới hơn.
- Maven 3.x.
- Redis Server (đang chạy ở port mặc định 6379).
- Cơ sở dữ liệu PostgreSQL.
1. Clone repository này về máy:
git clone https://github.com/Giap0201/flight-booking-service.git2. Cấu hình môi trường (application.properties):
Cập nhật các thông tin cấu hình trong src/main/resources/application.properties bao gồm:
- Thông tin kết nối PostgreSQL (
spring.datasource.url=jdbc:postgresql://..., username, password). - Cấu hình Redis (
spring.data.redis.*). - Khóa API của Aviationstack (
aviationstack.api.key). - Cấu hình VNPay (
vnpay.tmnCode,vnpay.hashSecret). - Cấu hình SMTP Email để gửi thông báo.
3. Build và chạy dự án:
mvn clean install
mvn spring-boot:runHệ thống sẽ chạy mặc định ở cổng http://localhost:8080.
Dự án được thiết kế và phát triển bởi nhóm 3 thành viên, chia theo các domain nghiệp vụ:
- Nguyễn Hữu Giáp - Phát triển module Đặt chỗ (Booking), Tích hợp Thanh toán (VNPay), Quản lý giao dịch và Job xử lý trạng thái tự động.
- Lê Xuân Thành - Phát triển module Kho lưu trữ (Inventory), Quản lý chuyến bay & Thiết lập Scheduler tự động đồng bộ dữ liệu API Aviationstack.
- Phạm Duy Nghĩa - Xây dựng hệ thống Xác thực/Phân quyền (Identity), Thông báo qua Email (Notification) và Báo cáo Thống kê cho Admin (Dashboard).
Dự án được phát triển nhằm mục đích học tập, nghiên cứu và xây dựng hệ thống thực tế.