Giới thiệu dự án
Thương mại điện tử (E-Commerce) tại Việt Nam đang trải qua giai đoạn tăng trưởng vượt bậc với tốc độ tăng trưởng kép hàng năm (CAGR) duy trì ở mức 20–25%. Sự chuyển dịch thói quen tiêu dùng từ mua sắm trực tiếp sang các nền tảng trực tuyến đặt ra yêu cầu cấp thiết cho các cửa hàng bán lẻ truyền thống trong việc số hóa quy trình kinh doanh.
Đề tài "Xây dựng website bán giày cho cửa hàng DTNSHOP" do sinh viên Đặng Tiến Nam thực hiện dưới sự hướng dẫn của TS. Phạm Văn Hiệp tại Trường Đại học Công nghiệp Hà Nội (HaUI) tập trung giải quyết bài toán chuyển đổi số toàn diện cho mô hình bán lẻ thời trang giày dép quy mô vừa và nhỏ.
+-----------------------------------------------------------------------------------+
| VẤN ĐỀ CỦA DTNSHOP |
| - 100% doanh thu phụ thuộc vào kênh offline tại cửa hàng |
| - Quản lý kích thước (size giày) và tồn kho phân mảnh, dễ sai lệch thủ công |
| - Thiếu hụt công cụ tiếp thị, quản lý mã giảm giá và đo lường doanh số/lợi nhuận |
+-----------------------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------------------+
| GIẢI PHÁP ĐỀ XUẤT |
| - Hệ thống E-Commerce đa tầng trên nền tảng Java Spring Boot và MySQL |
| - Cơ chế quản lý biến thể kích cỡ độc lập (Product-Size SKU Matrix) |
| - Tích hợp động cơ khuyến mại đa điều kiện và phân tích doanh thu tự động |
+-----------------------------------------------------------------------------------+
Vấn đề thực tiễn (Problem Statement)
Trước khi triển khai dự án, cửa hàng DTNSHOP đối mặt với 5 điểm nghẽn nghiêm trọng trong vận hành:
- Giới hạn phạm vi tiếp cận: Không thể tiếp cận tệp khách hàng trực tuyến, mất thị phần vào tay các đối thủ đã chuyển đổi số.
- Khó khăn trong quản trị biến thể sản phẩm: Giày dép là ngành hàng đặc thù với nhiều kích cỡ (size 38–45). Việc ghi chép thủ công gây sai lệch tồn kho giữa các size, dẫn đến tỷ lệ hủy đơn cao.
- Chi phí vận hành và marketing cao: Thiếu công cụ truyền thông trực tiếp, không có khả năng cá nhân hóa ưu đãi và tiếp thị lại (remarketing).
- Mất dấu hành vi tiêu dùng: Không có hệ thống theo dõi lượt xem (
product_view), đánh giá chất lượng và phản hồi hình ảnh thực tế từ người mua.
- Thiếu số liệu kinh doanh tức thời: Báo cáo doanh số và lợi nhuận thuần bị chậm trễ do tổng hợp thủ công cuối tháng.
Mục tiêu dự án
- Xây dựng nền tảng E-Commerce hoàn chỉnh: Cung cấp đầy đủ phân hệ Khách hàng (Client Storefront) và Quản trị viên (Admin Dashboard).
- Chuẩn hóa quy trình quản lý kho giày đa thuộc tính: Tự động hóa cập nhật số lượng tồn kho theo từng cặp
(product_id, size).
- Thiết kế kiến trúc hệ thống chuẩn doanh nghiệp: Ứng dụng mô hình MVC (Model-View-Controller) kết hợp Spring Data JPA và Hibernate ORM nhằm tối ưu hóa hiệu năng truy vấn dữ liệu.
- Tích hợp module phân tích kinh doanh: Tính toán tự động doanh thu (
sales), lợi nhuận (profit) và số lượng bán ra (quantity) theo thời gian thực.
Phương pháp tiếp cận và kết quả kỳ vọng
Dự án áp dụng phương pháp lập trình hướng đối tượng (OOP) trên nền tảng Java Enterprise, kết hợp cơ chế Server-side Rendering tối ưu SEO thông qua Thymeleaf Template Engine và tương tác dữ liệu không đồng bộ qua AJAX. Hệ thống kỳ vọng đạt thời gian phản hồi trang dưới 1.2 giây, xử lý đồng thời hơn 500 người dùng hoạt động (CCU) mà không gây tắc nghẽn cơ sở dữ liệu.
Phạm vi nghiên cứu bao gồm: quy trình đặt hàng, quản lý vòng đời đơn hàng, xác thực phân quyền Role-Based Access Control (RBAC), quản lý khuyến mại và đánh giá sản phẩm. Dự án không bao gồm việc tích hợp cổng thanh toán quốc tế phức tạp mà ưu tiên tối ưu cổng giao vận nội địa và thanh toán khi nhận hàng (COD).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
DTNSHOP (Spring Boot Tùy biến) |
Giải pháp SaaS (Shopify/Haravan) |
Mã nguồn mở (WooCommerce/WordPress) |
| Chi phí bản quyền/duy trì |
Miễn phí mã nguồn mở, chỉ tốn phí hosting |
500.000 – 2.000.000 VNĐ/tháng |
Miễn phí cốt lõi, phí cao cho plugin chuyên sâu |
| Khả năng mở rộng biến thể Size |
Tối ưu hóa sâu qua bảng quan hệ product_size |
Giới hạn số lượng biến thể (100 variants/SKU) |
Phụ thuộc plugin, dễ phình to database |
| Kiểm soát bảo mật & Dữ liệu |
Toàn quyền kiểm soát 100% CSDL MySQL |
Dữ liệu lưu trên cloud nhà cung cấp |
Tiềm ẩn lỗ hổng bảo mật từ plugin bên thứ ba |
| Hiệu năng chịu tải |
Cao (Spring Boot + Connection Pool HikariCP) |
Trung bình - Phụ thuộc gói thuê bao |
Thấp - Trung bình khi mở rộng nhiều module |
| Tùy biến luồng nghiệp vụ |
Tuyệt đối linh hoạt theo yêu cầu quản trị |
Bị bó buộc bởi khung API và theme mẫu |
Linh hoạt nhưng đòi hỏi can thiệp mã PHP sâu |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must have (Bắt buộc có): Đăng ký/đăng nhập, lọc sản phẩm theo size/thương hiệu, giỏ hàng, đặt hàng (Checkout), quản lý đơn hàng, quản lý kho theo size, bảo mật mật khẩu.
- Should have (Nên có): Áp dụng mã khuyến mại (
promotion), bình luận/đánh giá sản phẩm kèm ảnh feedback, bảng điều khiển thống kê doanh thu/lợi nhuận.
- Could have (Có thể có): Quản lý bài viết/tin tức thời trang, đếm lượt xem sản phẩm (
product_view), gợi ý sản phẩm bán chạy.
- Won't have (Chưa thực hiện trong giai đoạn này): Tích hợp cổng thanh toán Crypto, hệ thống tự động định tuyến kho đa chi nhánh (Multi-warehouse).
Thiết kế hệ thống
Kiến trúc tổng thể hệ thống
Hệ thống được thiết kế theo mô hình phân tầng chuẩn MVC tách biệt rõ ràng giữa tầng hiển thị, tầng xử lý nghiệp vụ và tầng lưu trữ dữ liệu.
graph TD
UserClient[Web Browser / Client] -->|HTTP / HTTPS / AJAX Requests| SpringController[Spring MVC Controller Layer]
subgraph Backend_Application [Spring Boot E-Commerce Engine]
SpringController -->|Data Transfer Objects / Validation| ServiceLayer[Business Logic / Service Layer]
ServiceLayer -->|Transaction Management| RepoLayer[Spring Data JPA Repository Layer]
RepoLayer -->|Hibernate ORM Mapping| DBEngine[(MySQL Database 8.0)]
end
subgraph View_Rendering_Engine [View Layer]
SpringController -->|Model Attributes| Thymeleaf[Thymeleaf Template Engine]
Thymeleaf -->|HTML5 / Bootstrap 5 / DOM| UserClient
end
subgraph Media_Storage [Static Resources]
ServiceLayer -->|Persist Metadata| DBEngine
ServiceLayer -->|Write Files| FileSystem[Uploads: Images & Post Thumbnails]
end
Công nghệ sử dụng và phiên bản cụ thể
- Ngôn ngữ lập trình: Java (JDK 11 / JDK 17 LTS).
- Khung ứng dụng Backend: Spring Boot 2.7.x, Spring MVC, Spring Data JPA.
- Hệ quản trị cơ sở dữ liệu: MySQL Server 8.0.
- ORM Provider: Hibernate ORM 5.6.x.
- Giao diện Frontend: HTML5, CSS3, JavaScript (ES6+), Bootstrap 5.3, Thymeleaf 3.0.
- Xử lý bất đồng bộ: AJAX (jQuery 3.6 / Fetch API).
- Công cụ thiết kế và phát triển: IntelliJ IDEA Ultimate, MySQL Workbench 8.0, Rational Rose (UML Modeling), Apache Maven 3.8.
Thiết kế cơ sở dữ liệu (Database Schema)
Hệ thống CSDL bao gồm 14 bảng quan hệ được chuẩn hóa nhằm triệt tiêu dư thừa dữ liệu và tối ưu hiệu suất truy vấn.
erDiagram
USERS ||--o{ CART : owns
USERS ||--o{ ORDERS : places
USERS ||--o{ COMMENT : writes
BRAND ||--o{ PRODUCT : manufactures
CATEGORY ||--o{ PRODUCT_CATEGORY : categorizes
PRODUCT ||--o{ PRODUCT_CATEGORY : belongs_to
PRODUCT ||--o{ PRODUCT_SIZE : contains
PRODUCT ||--o{ PRODUCT_CART : added_as
CART ||--o{ PRODUCT_CART : holds
ORDERS ||--o{ STATISTIC : generates
PROMOTION ||--o{ ORDERS : discounts
USERS {
bigint id PK
varchar email UK
varchar password
varchar full_name
varchar phone
varchar address
json roles
tinyint status
}
PRODUCT {
varchar_255 id PK
varchar name
varchar slug UK
bigint price
bigint sale_price
bigint total_sold
int product_view
json images
json image_feedback
text description
bigint brand_id FK
}
PRODUCT_SIZE {
varchar_255 product_id PK,FK
int size PK
int quantity
}
PROMOTION {
bigint id PK
varchar coupon_code UK
int discount_type
bigint discount_value
bigint maximum_discount_value
tinyint is_active
tinyint is_public
datetime expired_at
}
STATISTIC {
bigint id PK
bigint order_id FK
bigint sales
bigint profit
int quantity
datetime created_at
}
- Bảng
product_size: Khóa chính phức hợp (product_id, size) quản lý chính xác tồn kho của từng số size giày.
- Cột kiểu dữ liệu
json: Sử dụng trong product.images, product.image_feedback và users.roles cho phép lưu trữ danh sách hình ảnh và danh sách quyền hạn (ROLE_USER, ROLE_ADMIN) một cách linh hoạt mà không cần tạo thêm các bảng trung gian không cần thiết.
Thiết kế RESTful API và Endpoints chính
| Method |
Endpoint URI |
Phân quyền |
Chức năng nghiệp vụ |
POST |
/api/auth/register |
Public |
Đăng ký tài khoản khách hàng mới |
POST |
/api/auth/login |
Public |
Xác thực thông tin người dùng, tạo session |
GET |
/api/products?brand={id}&size={size} |
Public |
Lọc danh sách sản phẩm theo tiêu chí |
POST |
/api/cart/add |
Authenticated |
Thêm sản phẩm cùng kích cỡ xác định vào giỏ hàng |
PUT |
/api/cart/update-quantity |
Authenticated |
Cập nhật số lượng sản phẩm trong giỏ qua AJAX |
POST |
/api/orders/create |
Authenticated |
Khởi tạo đơn hàng, trừ tồn kho và ghi nhận giao dịch |
POST |
/api/admin/promotions |
ADMIN |
Khởi tạo mã khuyến mại mới kèm hạn mức chiết khấu |
GET |
/api/admin/statistics/dashboard |
ADMIN |
Lấy dữ liệu tổng hợp doanh thu, lợi nhuận |
Phương pháp luận phát triển (Methodology)
Dự án được triển khai theo mô hình Agile/Scrum rút gọn với chu kỳ 4 Sprint (mỗi Sprint 2 tuần):
Sprint 1: Phân tích nghiệp vụ, mô hình hóa UML, thiết kế CSDL trên MySQL Workbench.
Sprint 2: Xây dựng Backend Core (Entity, Repository, Service) và xác thực người dùng.
Sprint 3: Xây dựng giao diện Client (Storefront, Cart, Checkout, AJAX Dynamic UI).
Sprint 4: Xây dựng Admin Dashboard, hệ thống Báo cáo thống kê, Unit Test và UAT.
Implementation và kết quả
Quy trình phát triển và hiện thực hóa thuật toán
1. Thuật toán kiểm tra tồn kho theo kích cỡ và thêm vào giỏ hàng
Hệ thống ngăn chặn tình trạng đặt hàng vượt quá số lượng tồn kho thực tế của từng size thông qua việc kiểm tra tính khả dụng tại tầng Service trước khi cập nhật bảng product_cart.
@Service
@Transactional
public class CartServiceImpl implements CartService {
@Autowired
private ProductSizeRepository productSizeRepository;
@Autowired
private ProductCartRepository productCartRepository;
@Autowired
private CartRepository cartRepository;
@Override
public CartResponse addToCart(String productId, int size, int quantity, Long userId) {
// 1. Kiểm tra tồn kho cho size cụ thể
ProductSize productSize = productSizeRepository.findByProductIdAndSize(productId, size)
.orElseThrow(() -> new ResourceNotFoundException("Kích thước giày không tồn tại trên hệ thống"));
if (productSize.getQuantity() < quantity) {
throw new InsufficientInventoryException("Số lượng tồn kho cho size " + size + " chỉ còn: " + productSize.getQuantity());
}
// 2. Tìm hoặc khởi tạo giỏ hàng cho người dùng
Cart cart = cartRepository.findByUserId(userId)
.orElseGet(() -> cartRepository.save(new Cart(userId)));
// 3. Kiểm tra sản phẩm và size đã tồn tại trong giỏ chưa
Optional<ProductCart> existingItem = productCartRepository.findByCartIdAndProductIdAndSize(cart.getId(), productId, size);
if (existingItem.isPresent()) {
ProductCart item = existingItem.get();
int newQuantity = item.getQuantity() + quantity;
if (newQuantity > productSize.getQuantity()) {
throw new InsufficientInventoryException("Tổng số lượng trong giỏ vượt quá tồn kho thực tế");
}
item.setQuantity(newQuantity);
item.setTotalPrice(newQuantity * item.getProduct().getSalePrice());
productCartRepository.save(item);
} else {
ProductCart newItem = new ProductCart();
newItem.setCart(cart);
newItem.setProductId(productId);
newItem.setSize(size);
newItem.setQuantity(quantity);
newItem.setTotalPrice(quantity * productSize.getProduct().getSalePrice());
productCartRepository.save(newItem);
}
return new CartResponse(200, "Thêm vào giỏ hàng thành công!");
}
}
2. Động cơ tính toán khuyến mại đa điều kiện (Promotion Engine)
Thuật toán xử lý giảm giá theo 2 hình thức: Giảm theo tỷ lệ phần trăm (có chặn mức giảm tối đa) hoặc Giảm theo số tiền tuyệt đối.
@Service
public class PromotionServiceImpl implements PromotionService {
@Autowired
private PromotionRepository promotionRepository;
@Override
public long calculateDiscount(String couponCode, long orderTotal) {
Promotion promo = promotionRepository.findByCouponCodeAndIsActiveTrue(couponCode)
.orElseThrow(() -> new InvalidCouponException("Mã khuyến mại không hợp lệ hoặc đã hết hạn"));
if (promo.getExpiredAt().isBefore(LocalDateTime.now())) {
throw new InvalidCouponException("Mã khuyến mại đã hết hạn sử dụng");
}
long calculatedDiscount = 0;
// DiscountType = 1: Giảm theo % | DiscountType = 2: Giảm số tiền cố định
if (promo.getDiscountType() == 1) {
calculatedDiscount = (orderTotal * promo.getDiscountValue()) / 100;
if (promo.getMaximumDiscountValue() > 0 && calculatedDiscount > promo.getMaximumDiscountValue()) {
calculatedDiscount = promo.getMaximumDiscountValue();
}
} else if (promo.getDiscountType() == 2) {
calculatedDiscount = promo.getDiscountValue();
}
return Math.min(calculatedDiscount, orderTotal);
}
}
3. Xử lý cập nhật giỏ hàng không tải lại trang bằng AJAX
Giao diện người dùng tích hợp AJAX giúp tối ưu hóa băng thông truyền tải và nâng cao trải nghiệm mua sắm:
function updateCartItemQuantity(cartItemId, newQuantity) {
$.ajax({
url: '/api/cart/update-quantity',
type: 'PUT',
contentType: 'application/json',
data: JSON.stringify({
id: cartItemId,
quantity: newQuantity
}),
success: function(response) {
$('#item-total-price-' + cartItemId).text(formatCurrency(response.itemTotalPrice));
$('#cart-subtotal').text(formatCurrency(response.cartSubtotal));
toastr.success('Cập nhật giỏ hàng thành công!');
},
error: function(xhr) {
toastr.error(xhr.responseJSON.message || 'Lỗi cập nhật giỏ hàng');
}
});
}
Kiểm thử và đánh giá chất lượng (Testing & Validation)
+-----------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ HỆ THỐNG DTNSHOP |
| - Unit Test Coverage: 84.5% (Tầng Service & Business Rules) |
| - Kiểm thử tải (Load Test): 500 CCU trong 15 phút không phát sinh lỗi 5xx |
| - Điểm hài lòng người dùng (SUS Score): 84.2/100 (Hạng A - Excellent) |
+-----------------------------------------------------------------------------------+
1. Kiểm thử tải và hiệu năng với Apache JMeter
| Kịch bản kiểm thử (Scenario) |
Số lượng kết nối (Concurrency) |
Thời gian phản hồi TB (Avg Latency) |
Tỷ lệ lỗi (Error Rate) |
Thông lượng (Throughput) |
| Tìm kiếm sản phẩm theo từ khóa |
500 CCU |
112 ms |
0.00% |
420 req/s |
| Thêm sản phẩm vào giỏ hàng |
300 CCU |
148 ms |
0.00% |
285 req/s |
| Thực hiện Checkout tạo đơn hàng |
200 CCU |
230 ms |
0.00% |
170 req/s |
| Tải trang chủ & lọc danh mục |
1000 CCU |
380 ms |
0.02% |
610 req/s |
2. Kết quả kiểm thử chấp nhận người dùng (UAT)
Thực hiện khảo sát trên 30 người dùng (25 khách hàng ngẫu nhiên và 5 nhân viên quản trị) trong thời gian 1 tuần:
- Tỷ lệ hoàn thành tác vụ mua hàng không cần hướng dẫn: 96.7%.
- Tỷ lệ thao tác quản lý đơn hàng chính xác của nhân viên: 100%.
- Điểm đánh giá hệ thống (System Usability Scale - SUS): 84.2/100 điểm.
Đổi mới và đóng góp
Các cải tiến kỹ thuật chính
- Kiến trúc dữ liệu biến thể giày tối ưu: Thay vì lưu trữ mỗi size giày thành một SKU riêng biệt làm phình to bảng sản phẩm chính, hệ thống chuẩn hóa bằng quan hệ bảng phụ
product_size, giúp giảm dung lượng index cơ sở dữ liệu xuống 42% và tăng tốc độ tìm kiếm sản phẩm.
- Quản lý danh sách động qua kiểu dữ liệu JSON: Sử dụng thuộc tính
json trong MySQL cho các trường đa trị như danh sách URL hình ảnh (images), hình ảnh phản hồi từ khách (image_feedback) và mảng phân quyền (roles). Giải pháp này giúp cắt giảm 3 bảng quan hệ thừa, giảm bớt các câu truy vấn phức tạp (Heavy JOINs).
- Mô hình hóa chỉ số kinh doanh tự động: Module thống kê liên kết trực tiếp với bảng
orders để trích xuất sales, profit và quantity ngay khi đơn hàng chuyển sang trạng thái "Thành công", cung cấp báo cáo tài chính trực quan cho chủ shop.
So sánh hiệu quả vận hành trước và sau khi triển khai
| Tiêu chí so sánh |
Quy trình truyền thống (Trước) |
Website DTNSHOP (Sau) |
Mức độ cải thiện (%) |
| Thời gian xử lý 1 đơn hàng |
12 - 15 phút (gọi điện, ghi sổ) |
1.5 - 2 phút (duyệt tự động) |
Rút ngắn 86.6% |
| Tỷ lệ sai sót tồn kho kích cỡ |
8 - 12% tổng đơn hàng |
0.0% (Khóa tồn kho thời gian thực) |
Triệt tiêu sai sót 100% |
| Thời gian tổng hợp báo cáo tháng |
2 - 3 ngày làm việc |
Tức thì (Real-time Dashboard) |
Tăng tốc 99% |
| Khả năng tiếp cận khách hàng |
Giới hạn bán kính 5 - 10 km |
Toàn quốc qua Internet |
Mở rộng không giới hạn |
Ứng dụng thực tế và triển khai
Hướng dẫn triển khai môi trường Production
# 1. Cài đặt môi trường runtime trên Ubuntu Server 22.04 LTS
sudo apt update && sudo apt install -y openjdk-17-jdk mysql-server nginx
# 2. Khởi tạo Cơ sở dữ liệu và phân quyền
mysql -u root -p -e "CREATE DATABASE dtnshop_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p -e "CREATE USER 'dtn_admin'@'localhost' IDENTIFIED BY 'SecurePass#2023';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON dtnshop_db.* TO 'dtn_admin'@'localhost'; FLUSH PRIVILEGES;"
# 3. Đóng gói ứng dụng Spring Boot thành tệp thực thi độc lập (.jar)
mvn clean package -DskipTests
# 4. Thiết lập Systemd Service chạy nền ứng dụng Java
sudo tee /etc/systemd/system/dtnshop.service <<EOF
[Unit]
Description=DTNSHOP E-Commerce Application
After=syslog.target network.target
[Service]
User=ubuntu
ExecStart=/usr/bin/java -jar -Xms512m -Xmx1024m /var/www/dtnshop/dtnshop-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 5. Khởi động ứng dụng
sudo systemctl daemon-reload
sudo systemctl enable dtnshop && sudo systemctl start dtnshop
Phân tích hiệu quả kinh tế (Cost-Benefit Analysis)
- Chi phí đầu tư ban đầu: Máy chủ Cloud VPS (2 vCPU, 4GB RAM, 50GB NVMe SSD): ~180.000 VNĐ/tháng (~2.160.000 VNĐ/năm). Tên miền (.com/.vn): ~450.000 VNĐ/năm.
- Doanh thu kỳ vọng: Tăng trưởng thêm 35 - 50 đơn hàng online/tháng trong quý đầu tiên, đóng góp lợi nhuận gộp ước tính 15.000.000 – 25.000.000 VNĐ/tháng.
- Thời gian hoàn vốn (ROI Timeline): Ước tính cửa hàng đạt điểm hòa vốn chi phí đầu tư hạ tầng chỉ sau 1.5 tháng đi vào hoạt động chính thức.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Phương thức thanh toán: Hệ thống chủ yếu tập trung vào cơ chế Ship COD (thanh toán khi nhận hàng), chưa tích hợp cổng thanh toán trực tuyến qua mã QR (VNPay, MoMo, ZaloPay).
- Kiến trúc lưu trữ tập trung: Các tệp tin hình ảnh tải lên được lưu trực tiếp tại File System nội bộ của máy chủ, chưa sử dụng dịch vụ lưu trữ đám mây chuyên dụng (như AWS S3 hoặc Cloudinary).
- Đồng bộ hóa cache: Chưa triển khai tầng Redis Cache riêng biệt để tối ưu hóa triệt để các truy vấn danh mục sản phẩm có tần suất đọc cao.
Hướng phát triển trong tương lai
- Tích hợp cổng thanh toán VNPAY / MoMo API: Xây dựng quy trình xử lý giao dịch Instant Payment Notification (IPN) tự động xác nhận đơn hàng khi thanh toán thành công.
- Ứng dụng hệ thống gợi ý sản phẩm (Recommendation System): Ứng dụng giải thuật Lọc cộng tác (Collaborative Filtering) để gợi ý mẫu giày phù hợp dựa trên lịch sử xem hàng của người dùng.
- Nâng cấp hạ tầng kiến trúc: Đưa ứng dụng vào container Docker, tách biệt Database và File Storage lên S3 để hỗ trợ mở rộng quy mô (Horizontal Scaling).
Đối tượng hưởng lợi
+---------------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
| |
| [SINH VIÊN & HỌC VIÊN CNTT] --> Tài liệu mẫu chuẩn về phân tích thiết kế hệ |
| thống và hiện thực hóa Spring Boot + Hibernate |
| |
| [LẬP TRÌNH VIÊN JAVA] --> Bộ khung (Boilerplate) thương mại điện tử hoàn |
| chỉnh với kiến trúc module phân tầng chuẩn MVC |
| |
| [CHỦ CỬA HÀNG DTNSHOP & RETAIL] --> Công cụ vận hành tự động, tăng 40% hiệu suất, |
| tiết kiệm 100% chi phí bản quyền phần mềm |
+---------------------------------------------------------------------------------------+
- Sinh viên chuyên ngành CNTT/KTPM: Nắm bắt quy trình xây dựng đồ án tốt nghiệp thực tế từ phân tích biểu đồ Use Case, Sequence Diagram đến hiện thực hóa mã nguồn Java doanh nghiệp.
- Lập trình viên (Developers): Tham khảo cấu trúc thiết kế CSDL tối ưu cho bài toán biến thể đa thuộc tính (Size/Color) và cách xử lý giao dịch giỏ hàng đồng thời.
- Doanh nghiệp bán lẻ nhỏ: Sở hữu giải pháp chuyển đổi số bán lẻ độc lập, tiết kiệm chi phí thuê nền tảng hàng tháng mà vẫn đảm bảo tính an toàn dữ liệu.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?
Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (Ubuntu 20.04/22.04 LTS) hoặc Windows Server, tối thiểu 1 vCPU, 2GB RAM và 20GB dung lượng ổ cứng khả dụng. Môi trường thực thi cần cài đặt sẵn Java Runtime Environment (JRE 11 hoặc 17) và hệ quản trị CSDL MySQL Server phiên bản 8.0 trở lên.
2. Hệ thống xử lý thế nào khi có nhiều khách hàng cùng đặt một size giày sắp hết hàng?
Tầng Service sử dụng cơ chế quản lý giao dịch @Transactional kết hợp kiểm tra tính toàn vẹn tồn kho tại thời điểm commit đơn hàng. Khi số lượng đặt vượt quá tồn kho thực tế trong bảng product_size, hệ thống lập tức ném ra ngoại lệ InsufficientInventoryException và thực hiện Rollback toàn bộ dữ liệu, đảm bảo không bao giờ xảy ra tình trạng bán vượt tồn kho (Over-selling).
3. Có thể tích hợp thêm các dịch vụ vận chuyển như Giao Hàng Nhanh (GHN) hoặc Giao Hàng Tiết Kiệm (GHTK) không?
Hệ thống được thiết kế theo mô hình hướng dịch vụ (Service-Oriented). Lập trình viên có thể dễ dàng bổ sung thêm ShippingIntegrationService để gọi REST API của bên thứ ba, tự động đồng bộ mã vận đơn và trạng thái giao nhận trực tiếp vào bảng orders.
4. Chi phí bảo trì định kỳ của website bao gồm những khoản nào?
Chi phí vận hành định kỳ chỉ bao gồm phí duy trì tên miền (khoảng 350.000 – 450.000 VNĐ/năm) và chi phí thuê máy chủ Cloud VPS (khoảng 150.000 – 200.000 VNĐ/tháng). Hệ thống sử dụng hoàn toàn các công nghệ mã nguồn mở (Java, MySQL, Spring Boot, Linux) nên không phát sinh bất kỳ khoản phí cấp phép phần mềm nào.
5. Dữ liệu mật khẩu của người dùng được bảo vệ như thế nào?
Mật khẩu người dùng được mã hóa một chiều thông qua thuật toán băm mạnh BCrypt kết hợp Salt ngẫu nhiên trước khi lưu trữ vào trường password của bảng users. Ngay cả khi cơ sở dữ liệu bị rò rỉ, mật khẩu gốc của người dùng vẫn được bảo vệ an toàn trước các cuộc tấn công tra cứu bảng băm (Rainbow Table Attacks).
Kết luận
Đồ án tốt nghiệp "Xây dựng website bán giày cho cửa hàng DTNSHOP" của sinh viên Đặng Tiến Nam đã hoàn thành toàn diện các mục tiêu nghiên cứu và ứng dụng thực tiễn đề ra. Dự án không chỉ giải quyết thành công bài toán chuyển đổi số cho cửa hàng DTNSHOP mà còn minh chứng cho tính hiệu quả, độ ổn định và khả năng mở rộng của nền tảng công nghệ Java Spring Boot kết hợp hệ quản trị cơ sở dữ liệu MySQL.
Hệ thống đã chuẩn hóa quy trình quản lý tồn kho đa kích cỡ phức tạp, loại bỏ hoàn toàn các sai sót trong quản trị đơn hàng thủ công và cung cấp bộ công cụ phân tích kinh doanh trực quan theo thời gian thực. Đây là tiền đề vững chắc để cửa hàng DTNSHOP gia tăng doanh số trực tuyến, nâng cao trải nghiệm khách hàng và mở rộng quy mô kinh doanh bền vững trong thời đại kinh tế số.