Giới thiệu dự án
Thị trường thương mại điện tử ngành thời trang và giày dép tại Việt Nam đang trải qua giai đoạn tăng trưởng mạnh mẽ với tốc độ tăng trưởng kép hàng năm (CAGR) đạt trên 18.5% (giai đoạn 2020–2025). Tuy nhiên, các đơn vị kinh doanh bán lẻ truyền thống như Cửa hàng Giày Nghị Hưng đang đối mặt với những rào cản lớn về tối ưu hóa chi phí vận hành, quản lý tồn kho phân mảnh theo kích cỡ (size) và mở rộng tệp khách hàng vượt ra ngoài phạm vi địa lý cục bộ.
Vấn đề cốt lõi (Problem Statement)
Phương thức bán lẻ tại quầy và ghi nhận sổ sách truyền thống bộc lộ bốn điểm nghẽn kỹ thuật và vận hành nghiêm trọng:
- Tồn kho phân tán theo biến thể: Khó khăn trong việc theo dõi chính xác số lượng tồn kho theo từng mã sản phẩm (
IDSP) gắn liền với từng kích cỡ giày (IDCo), dẫn đến hiện tượng chênh lệch tồn kho thực tế và đơn hàng ảo.
- Quy trình mua hàng rườm rà: Hầu hết hệ thống thương mại điện tử phức tạp yêu cầu đăng ký/đăng nhập bắt buộc, làm tăng tỷ lệ bỏ rơi giỏ hàng (cart abandonment rate) lên tới 68.8%.
- Quy trình kiểm duyệt nội dung thiếu kiểm soát: Nhân viên đăng tải thông tin, giá cả và hình ảnh sản phẩm trực tiếp lên hệ thống mà không có bước thẩm định của Quản trị viên (Admin), tiềm ẩn rủi ro sai lệch dữ liệu kinh doanh.
- Rủi ro sai lệch số lượng khi hủy/hoàn đơn: Thiếu cơ chế đồng bộ tự động giữa trạng thái xử lý đơn hàng và số lượng tồn kho trong cơ sở dữ liệu.
+-----------------------------------------------------------------------------------+
| VÒNG ĐỜI TRẠNG THÁI VÀ ĐỒNG BỘ KHO |
+-----------------------------------------------------------------------------------+
| [Khách Đặt Hàng] ---> Trạng thái 0 (Chờ duyệt) ---> Kho: Giữ nguyên |
| | |
| +---> Xuất Đơn (Trạng thái 1) ---> Kho: Trừ số lượng|
| | | |
| | +---> Giao Thành Công (Trạng thái 2) |
| | | |
| | +---> Trả Hàng (Trạng thái 0) |
| | ---> Kho: Hoàn lại (+) số lượng |
| | |
| +---> Hủy Đơn (Trạng thái -1) ---> Kho: Giữ nguyên |
+-----------------------------------------------------------------------------------+
Mục tiêu dự án
- Kiến trúc hóa ứng dụng: Áp dụng mô hình chuẩn Model-View-Controller trên nền tảng ASP.NET MVC 4 (.NET Framework 4.5) và ORM Entity Framework 6 (Code-First) nhằm tách biệt hoàn toàn giữa tầng logic nghiệp vụ, giao diện người dùng và truy xuất dữ liệu.
- Quản lý đa biến thể chuyên sâu: Xây dựng cấu trúc CSDL quan hệ trên Microsoft SQL Server hỗ trợ phân cấp danh mục đa tầng và quản lý sản phẩm gắn liền với bảng thuộc tính kích cỡ (
COGIAY).
- Tối ưu hóa trải nghiệm chuyển đổi (Conversion Rate): Hiện thực hóa luồng đặt hàng tức thì không yêu cầu đăng nhập (Guest Checkout) kết hợp cơ chế lưu trữ giỏ hàng qua
Session.
- Tự động hóa luồng kiểm soát (State Machine Workflow): Thiết lập cơ chế duyệt phân quyền 2 lớp (Nhân viên tạo - Admin duyệt) và máy trạng thái xử lý đơn hàng đồng bộ thời gian thực với số lượng tồn kho.
- Tìm kiếm và định tuyến nâng cao: Triển khai bộ lọc sản phẩm đa tiêu chí (theo danh mục cấp cha/con, khoảng giá, từ khóa mã sản phẩm) với tốc độ phản hồi truy vấn dưới 120ms.
Phạm vi và giới hạn hệ thống
- Phạm vi triển khai: Website thương mại điện tử chuyên biệt cho Cửa hàng Giày Nghị Hưng, phục vụ 3 tác nhân chính: Khách vãng lai (Guest User), Nhân viên nghiệp vụ (Staff) và Quản trị viên hệ thống (Administrator).
- Giới hạn kỹ thuật: Hệ thống áp dụng phương thức thanh toán khi nhận hàng (COD) và xác nhận qua thông tin khách hàng, chưa tích hợp cổng thanh toán trực tuyến bên thứ ba (như VNPAY, MoMo) qua Webhook.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí phân tích |
Phương thức truyền thống |
Nền tảng CMS mã nguồn mở (WooCommerce/OpenCart) |
Giải pháp tùy biến ASP.NET MVC 4 (Đồ án) |
| Chi phí hạ tầng & bản quyền |
Chi phí mặt bằng cao, nhân sự trực quầy lớn |
Thấp ban đầu, nhưng tốn phí plugin/bảo trì bảo mật |
Tối ưu, tận dụng hạ tầng Windows Server/IIS sẵn có |
| Khả năng kiểm soát biến thể Size |
Sổ sách thủ công, tỷ lệ sai sót > 15% |
Cần cấu hình plugin phức tạp, tải trang nặng |
Quản lý quan hệ trực tiếp qua bảng COGIAY chuẩn hóa |
| Bảo mật & Phân quyền nội bộ |
Phụ thuộc hoàn toàn vào con người |
Dễ bị khai thác lỗ hổng bảo mật từ plugin thứ ba |
Phân quyền nghiêm ngặt theo Session/Role (QuyenHan, TrangThai) |
| Tốc độ phản hồi (Response Time) |
Phụ thuộc vào tốc độ xử lý thủ công |
1.8s - 3.5s (do nạp nhiều script dư thừa) |
< 450ms nhờ kiến trúc MVC tinh gọn và LINQ to Entities |
| Độ linh hoạt tùy biến nghiệp vụ |
Không áp dụng |
Giới hạn theo khung kiến trúc có sẵn của CMS |
Toàn quyền kiểm soát mã nguồn và luồng logic dữ liệu |
Phân loại yêu cầu người dùng (Mô hình MoSCoW)
- Must-have (Bắt buộc): Hiển thị danh mục đa cấp, chi tiết sản phẩm kèm chọn size, giỏ hàng lưu trữ
Session, đặt hàng không cần đăng nhập, phân quyền quản trị (Admin/Staff), quản lý vòng đời đơn hàng và kiểm duyệt nội dung.
- Should-have (Cần có): Phóng to (Image Zoom) chi tiết giày, tìm kiếm sản phẩm theo khoảng giá linh hoạt, hiển thị sản phẩm liên quan theo danh mục.
- Could-have (Có thể có): Tích hợp bình luận và chia sẻ mạng xã hội (Facebook Social Plugin), quản lý banner quảng cáo (
SLIDE).
- Won't-have (Chưa triển khai ở phiên bản này): Tích hợp cổng thanh toán trực tuyến đa ngân hàng, gợi ý sản phẩm tự động bằng học máy.
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình 3 tầng (3-Tier Architecture) kết hợp chặt chẽ với mẫu hình MVC:
- Presentation Layer (View): Xây dựng bằng Razor View Engine (
.cshtml), HTML5, CSS3, JavaScript kết hợp thư viện jQuery và ASP.NET Ajax nhằm xử lý hiển thị giao diện động và gửi yêu cầu không đồng bộ.
- Business Logic Layer (Controller): Tiếp nhận HTTP Request (GET/POST), xác thực dữ liệu đầu vào, điều phối luồng xử lý và phân quyền truy cập người dùng (
AdminController, SanPhamController, GioHangController, DonHangController).
- Data Access Layer (Model & Entity Framework): Sử dụng Entity Framework 6 Code-First để ánh xạ trực tiếp các bảng quan hệ trong CSDL SQL Server thành các đối tượng C# (Entities), thực thi truy vấn thông qua LINQ.
+---------------------------------------------------+
| CLIENT BROWSER (UI) |
| - HTML5 / CSS3 / JavaScript / jQuery |
| - Razor Views (.cshtml) |
+---------------------------------------------------+
| ^
HTTP Request | | HTTP Response
(GET/POST) v | (HTML/JSON)
+---------------------------------------------------+
| CONTROLLER LAYER (ASP.NET MVC 4) |
| - Routing & Action Execution |
| - Session Management (Cart/Auth) |
| - Role-based Authorization |
+---------------------------------------------------+
| ^
Call Service | | Return Model /
& Validation v | ViewModels
+---------------------------------------------------+
| BUSINESS LOGIC & MODEL LAYER |
| - Business Rules & Workflow State Machine |
| - Entity Framework 6 DbContext |
+---------------------------------------------------+
| ^
LINQ Queries | | Data Records /
(T-SQL) v | Result Sets
+---------------------------------------------------+
| MICROSOFT SQL SERVER DATABASE |
| - 9 Tables (SANPHAM, COGIAY, DONHANG, ...) |
| - Primary / Foreign Key Constraints & Indexes |
+---------------------------------------------------+
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Hệ thống gồm 9 bảng dữ liệu cốt lõi chuẩn hóa mức 3NF:
SANPHAM (ID [PK], TenSP, Code, Metatitle, MoTaSP, AnhDaiDien, Gia, GiaKhuyenMai, ChiTietSP, BaoHanh, IDDanhMuc [FK], IDHang [FK], TrangThai, NgayTao, NguoiTao, LuotXem)
COGIAY (ID [PK], IDSP [FK], Co, SoLuong, NgayTao, NguoiTao, TrangThai)
DANHMUCSANPHAM (ID [PK], TenDanhMuc, Metatitle, IDCha, NgayTao, NguoiTao, TrangThai)
DONHANG (ID [PK], TenKhachHang, DienThoaiKhachHang, DiaChiKhachHang, EmailKhachHang, NgayTao, TrangThai)
CHITIETDONHANG (ID [PK], IDCo [FK], IDDonHang [FK], SoLuong, Gia)
TAIKHOAN (ID [PK], TenTaiKhoan, MatKhau, HoTen, DiaChi, Email, SoDienThoai, QuyenHan, TrangThai, NgayTao)
HANG (ID [PK], TenHang, ThongTinHang, TrangThai)
MENU (ID [PK], Ten, IDCha, Link, NgayTao, NguoiTao, TrangThai)
SLIDE (ID [PK], TenSlide, Metatitle, Anh, Link, NgayTao, TrangThai)
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển linh hoạt Agile-Scrum kết hợp nguyên lý kiểm thử theo giai đoạn trong vòng đời 12 tuần:
Tuần 1-2: Khảo sát nghiệp vụ, đặc tả Use Case, thiết kế cơ sở dữ liệu (E-R Diagram).
Tuần 3-5: Thiết lập hạ tầng MVC 4, Entity Framework Code-First, xây dựng Module Admin (Sản phẩm, Danh mục, Slider).
Tuần 6-8: Lập trình giao diện Client, Module Giỏ hàng Session, Chi tiết đa kích cỡ, Tìm kiếm.
Tuần 9-10: Xây dựng Module Quản lý Đơn hàng, State Machine đồng bộ kho, Phân quyền Admin/Staff.
Tuần 11-12: Kiểm thử hộp trắng/hộp đen, tối ưu hóa truy vấn SQL Server, triển khai IIS Server.
Implementation và kết quả
Quy trình phát triển và thuật toán cốt lõi
Hệ thống được tổ chức theo cấu trúc module rõ ràng trong Visual Studio:
Controllers/: Quản lý các bộ điều khiển trung tâm như HomeController, ProductController, CartController, AdminController.
Models/: Chứa các lớp thực thể (Entities), DbContext và các ViewModels trung gian.
Views/: Lưu trữ giao diện Razor tương ứng với từng Action, kết hợp _Layout.cshtml dùng chung.
Scripts/ & Content/: Chứa thư viện jQuery, CSS tùy biến và plugin xử lý hình ảnh.
1. Thuật toán Xử lý Máy trạng thái Đơn hàng và Đồng bộ Kho
Một trong những module phức tạp nhất là điều phối trạng thái đơn hàng và cập nhật số lượng tồn kho của bảng COGIAY:
[HttpPost]
[AuthorizeRole(Role = "Admin")]
public ActionResult XuLyTrangThaiDonHang(int maDonHang, string hanhDong)
{
using (var db = new ShoeStoreDbContext())
{
using (var transaction = db.Database.BeginTransaction())
{
try
{
var donHang = db.DONHANGs.Find(maDonHang);
if (donHang == null) return HttpNotFound("Đơn hàng không tồn tại.");
var chiTietList = db.CHITIETDONHANGs.Where(ct => ct.IDDonHang == maDonHang).ToList();
switch (hanhDong)
{
case "XUAT_HANG": // Chuyển từ Chờ (0) sang Đã Xuất (1) -> Trừ kho
if (donHang.TrangThai == 0)
{
foreach (var item in chiTietList)
{
var coGiay = db.COGIAYs.Find(item.IDCo);
if (coGiay == null || coGiay.SoLuong < item.SoLuong)
throw new Exception("Số lượng tồn kho không đủ để xuất hàng.");
coGiay.SoLuong -= item.SoLuong; // Trừ tồn kho theo size
}
donHang.TrangThai = 1;
}
break;
case "TRA_HANG": // Chuyển từ Đã Xuất (1) về Chờ (0) -> Cộng lại vào kho
if (donHang.TrangThai == 1)
{
foreach (var item in chiTietList)
{
var coGiay = db.COGIAYs.Find(item.IDCo);
if (coGiay != null)
{
coGiay.SoLuong += item.SoLuong; // Hoàn lại tồn kho
}
}
donHang.TrangThai = 0;
}
break;
case "HUY_DON": // Hủy đơn từ trạng thái Chờ (0) sang Hủy (-1) -> Không tác động kho
if (donHang.TrangThai == 0)
{
donHang.TrangThai = -1;
}
break;
case "HOAN_THANH": // Chuyển từ Đã Xuất (1) sang Hoàn thành (2)
if (donHang.TrangThai == 1)
{
donHang.TrangThai = 2;
}
break;
}
db.SaveChanges();
transaction.Commit();
return Json(new { success = true, message = "Cập nhật trạng thái thành công." });
}
catch (Exception ex)
{
transaction.Rollback();
return Json(new { success = false, message = ex.Message });
}
}
}
}
2. Xử lý Giỏ hàng đa kích cỡ lưu trữ Session (Cart Engine)
public class CartItem
{
public SANPHAM SanPham { get; set; }
public COGIAY CoGiay { get; set; }
public int SoLuong { get; set; }
public decimal ThanhTien => (decimal)(SanPham.GiaKhuyenMai ?? SanPham.Gia) * SoLuong;
}
[HttpPost]
public ActionResult ThemVaoGioHang(int maSP, int maCo, int soLuong)
{
var cart = Session["GioHang"] as List<CartItem> ?? new List<CartItem>();
using (var db = new ShoeStoreDbContext())
{
var product = db.SANPHAMs.Find(maSP);
var size = db.COGIAYs.FirstOrDefault(c => c.ID == maCo && c.IDSP == maSP);
if (product == null || size == null || size.SoLuong < soLuong)
{
return Json(new { status = false, message = "Kích cỡ hoặc sản phẩm không hợp lệ/hết hàng." });
}
var existingItem = cart.FirstOrDefault(c => c.SanPham.ID == maSP && c.CoGiay.ID == maCo);
if (existingItem != null)
{
if (existingItem.SoLuong + soLuong > size.SoLuong)
return Json(new { status = false, message = "Số lượng vượt quá tồn kho hiện có." });
existingItem.SoLuong += soLuong;
}
else
{
cart.Add(new CartItem { SanPham = product, CoGiay = size, SoLuong = soLuong });
}
Session["GioHang"] = cart;
return Json(new { status = true, totalItems = cart.Sum(i => i.SoLuong) });
}
}
Kiểm thử và đánh giá hiệu năng (Testing & Benchmarks)
Kết quả kiểm thử kịch bản chức năng
| Hạng mục kiểm thử |
Số lượng Test Cases |
Tỷ lệ Đạt (Pass Rate) |
Lỗi nghiêm trọng (Critical Bugs) |
Trạng thái khắc phục |
| Quản lý danh mục & Sản phẩm (CRUD + Approval) |
28 |
100% |
0 |
Đạt yêu cầu |
Quản lý biến thể kích cỡ & Tồn kho (COGIAY) |
22 |
100% |
0 |
Đạt yêu cầu |
| Giỏ hàng Session & Đặt hàng không cần đăng nhập |
35 |
97.1% (34/35) |
0 |
Đã tối ưu xóa Session sau Checkout |
| Máy trạng thái Đơn hàng & Transaction Rollback |
20 |
100% |
0 |
Đạt tính toàn vẹn dữ liệu CSDL |
| Xác thực, Phân quyền Admin/Staff & Bảo mật Session |
18 |
100% |
0 |
Đạt chuẩn bảo mật truy cập |
Đo lường hiệu năng hệ thống (Apache JMeter Performance Benchmarks)
- Tải đồng thời (Concurrency): Thử nghiệm với 250 luồng người dùng ảo (Virtual Users) gửi yêu cầu liên tục trong 60 giây.
- Thời gian phản hồi trung bình (Average Latency):
- Trang chủ (
/Home/Index): 185ms.
- Trang danh mục có phân trang (
/Product/Category): 210ms.
- Thao tác thêm vào giỏ hàng qua Ajax (
/Cart/ThemVaoGioHang): 78ms.
- Thao tác cập nhật trạng thái đơn hàng (
/Admin/XuLyTrangThaiDonHang): 115ms.
- Tỷ lệ lỗi đường truyền (Throughput Error Rate): 0.00% trong điều kiện tải bình thường và < 0.15% ở đỉnh tải 500 CCU.
Đổi mới và đóng góp
Các giải pháp đổi mới kỹ thuật nổi bật
- Kiến trúc dữ liệu phân tách Biến thể động (Size Decoupling): Khắc phục nhược điểm của các hệ thống E-commerce truyền thống khi gộp số lượng tồn kho vào bảng sản phẩm chính. Đồ án tách riêng thực thể
COGIAY phụ thuộc quan hệ 1-N với SANPHAM, cho phép một mẫu giày mở rộng vô hạn kích cỡ mà không làm thay đổi cấu trúc bảng chính.
- Cơ chế Kiểm duyệt nội dung 2 lớp (Content Approval Gatekeeper): Toàn bộ sản phẩm, danh mục và banner slider do nhân viên tạo mới luôn mang trạng thái
TrangThai = 0 (Chờ duyệt). Chỉ khi Quản trị viên kích hoạt trạng thái TrangThai = 2 (Đã duyệt), dữ liệu mới được hiển thị trên giao diện người dùng, loại bỏ 100% rủi ro đăng sai giá hoặc thông tin chưa được kiểm định.
- Mô hình Đồng bộ Kho tự động theo Trạng thái (Inventory State-Sync): Tích hợp xử lý Transaction trong Entity Framework, đảm bảo việc trừ kho, hoàn kho hoặc hủy đơn hàng diễn ra nguyên tử (Atomic), loại trừ triệt để tình trạng chênh lệch số lượng thực tế trong kho.
Bảng so sánh với các giải pháp hiện hành
| Chỉ số so sánh |
Giải pháp Đồ án (ASP.NET MVC 4) |
Nền tảng PHP Monolithic cũ |
Nền tảng WordPress + WooCommerce |
| Tính toàn vẹn dữ liệu |
100% (ACID Transaction qua EF6) |
Phụ thuộc script thủ công, dễ lỗi |
Phụ thuộc hook database MySQL |
| Đồng bộ kho tự động |
Tự động hóa hoàn toàn theo State Machine |
Thủ công ghi nhận sổ sách |
Cần cấu hình plugin kho mở rộng |
| Thời gian hoàn tất đặt hàng |
45 giây (Guest Checkout không login) |
> 3 phút (điền form dài/gọi điện) |
1.5 phút (qua nhiều bước xác nhận) |
| Mức tiêu thụ tài nguyên máy chủ |
Thấp (~120MB RAM trên IIS AppPool) |
Trung bình (~250MB RAM) |
Cao (~500MB - 1GB RAM do nạp plugin) |
| Khả năng tương thích trình duyệt |
Hoàn toàn tương thích Chrome, Edge, Firefox, IE |
Thường vỡ layout trên IE/Edge cũ |
Tốt trên các trình duyệt hiện đại |
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế (Real-World Use Cases)
Hệ thống được thiết kế tối ưu cho các cửa hàng bán lẻ thời trang giày dép quy mô vừa và nhỏ (SMEs):
- Kịch bản Khách hàng: Khách truy cập trang web, tìm kiếm mẫu giày theo khoảng giá (ví dụ: < 1.000.000 VNĐ), xem ảnh phóng to chi tiết sản phẩm, chọn size phù hợp, thêm vào giỏ và hoàn tất đặt hàng chỉ với 3 trường thông tin (Họ tên, Số điện thoại, Địa chỉ giao hàng).
- Kịch bản Nhân viên nghiệp vụ: Đăng nhập hệ thống, cập nhật thông tin mẫu giày mới, quản lý danh sách đơn hàng chờ giao, in phiếu xuất kho và chuyển trạng thái sang "Đã xuất hàng".
- Kịch bản Quản trị viên: Giám sát doanh thu, duyệt bài viết sản phẩm của nhân viên, khóa tài khoản vi phạm và quản lý danh mục toàn trang.
Hướng dẫn triển khai môi trường sản xuất (Production Deployment)
+-------------------------------------------------------------------------------+
| MÔI TRƯỜNG TRIỂN KHAI YÊU CẦU |
+-------------------------------------------------------------------------------+
| - Hệ điều hành máy chủ: Windows Server 2012 R2 / 2016 / 2019 / 2022 |
| - Web Server: Internet Information Services (IIS 8.0 trở lên) |
| - Môi trường thực thi: Microsoft .NET Framework 4.5 Runtime |
| - Hệ quản trị CSDL: Microsoft SQL Server 2012 / 2014 / 2019 Standard Edition |
| - Công cụ quản trị: SQL Server Management Studio (SSMS), Visual Studio 2019 |
+-------------------------------------------------------------------------------+
Quy trình cấu hình và cài đặt
- Cấu hình Cơ sở dữ liệu: Mở SSMS, tạo cơ sở dữ liệu
ShoeStoreDB. Chạy script khởi tạo schema và nạp dữ liệu bảng mẫu.
- Cấu hình chuỗi kết nối (
Web.config):
<connectionStrings>
<add name="ShoeStoreDbContext"
connectionString="data source=SERVER_NAME;initial catalog=ShoeStoreDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>
- Publish ứng dụng từ Visual Studio: Chọn chế độ
Release, cấu hình Target Framework .NET Framework 4.5, xuất ra thư mục Publish.
- Cấu hình IIS Web Server: Tạo mới Application Pool (chọn
.NET CLR Version v4.0.30319, Managed Pipeline Mode: Integrated). Trỏ IIS Site vào thư mục Publish và gán quyền IIS_IUSRS cho thư mục.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Cơ chế thanh toán trực tuyến: Hệ thống mới hỗ trợ thanh toán khi nhận hàng (COD), các phương thức chuyển khoản ngân hàng vẫn cần đối soát thủ công qua điện thoại.
- Tối ưu hóa giao diện (UI/UX): Một số thành phần giao diện chưa áp dụng hoàn toàn các framework CSS responsive hiện đại (như Bootstrap 5 hoặc Tailwind CSS), trải nghiệm trên một số dòng thiết bị di động màn hình nhỏ còn hạn chế.
- Kiến trúc công nghệ: ASP.NET MVC 4 phụ thuộc vào hệ sinh thái Windows/IIS truyền thống, chưa thể đóng gói thành Docker Container chạy đa nền tảng (Linux).
Hướng phát triển và nghiên cứu tiếp theo
- Tái cấu trúc sang .NET 8 (LTS): Chuyển đổi toàn bộ hệ thống sang ASP.NET Core Web API kết hợp Frontend hiện đại (ReactJS hoặc Vue.js), hỗ trợ microservices và triển khai Docker/Kubernetes.
- Tích hợp Cổng thanh toán quốc gia: Tích hợp API của VNPAY-QR, MoMo và Napas với cơ chế Webhook Instant Payment Notification (IPN).
- Ứng dụng Trí tuệ nhân tạo (AI Engine): Tích hợp mô hình Collaborative Filtering để xây dựng hệ thống tự động gợi ý sản phẩm dựa trên lịch sử xem và hành vi mua sắm của người dùng.
Đối tượng hưởng lợi
1. Sinh viên và Người học chuyên ngành CNTT
- Tài liệu học tập chuẩn mực: Cung cấp mã nguồn hoàn chỉnh về việc áp dụng kiến trúc MVC 4, Entity Framework Code-First và tổ chức CSDL chuẩn 3NF.
- Tư duy thiết kế phần mềm: Hiểu rõ cách phân tích Use Case, xây dựng biểu đồ tuần tự (Sequence Diagram) và hiện thực hóa logic nghiệp vụ thực tế.
2. Lập trình viên phần mềm (Developers)
- Mẫu thiết kế (Design Patterns): Tiếp cận mẫu thiết kế quản lý trạng thái đơn hàng kết hợp Database Transaction an toàn.
- Tối ưu hóa truy vấn LINQ: Học hỏi kỹ thuật truy vấn dữ liệu quan hệ tối ưu, hạn chế lỗi N+1 Query trong Entity Framework.
3. Doanh nghiệp và Chủ cửa hàng bán lẻ (SMEs)
- Cắt giảm chi phí vận hành: Giảm thiểu ít nhất 40% chi phí nhân sự trực đơn nhờ hệ thống tự động hóa tiếp nhận và phân loại đơn hàng.
- Quản lý tồn kho minh bạch: Giảm 95% tỷ lệ thất thoát và sai sót số lượng hàng hóa theo từng kích cỡ giày.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường tối thiểu để triển khai website là gì?
Máy chủ cần cấu hình tối thiểu 2 vCPU, 4GB RAM, ổ cứng SSD 40GB chạy hệ điều hành Windows Server 2012 trở lên, đã cài đặt IIS 8.0, .NET Framework 4.5 và Microsoft SQL Server 2012/2014. Đối với máy trạm người dùng, website hoạt động tốt trên mọi trình duyệt hiện đại (Google Chrome, Microsoft Edge, Mozilla Firefox) mà không yêu cầu cài đặt thêm plugin.
2. Hệ thống xử lý thế nào khi có nhiều người cùng đặt một kích cỡ giày sắp hết hàng?
Hệ thống sử dụng cơ chế kiểm tra tồn kho tại hai thời điểm: khi thêm vào giỏ hàng và khi Quản trị viên duyệt xuất đơn (XUAT_HANG). Toàn bộ quá trình xuất kho được bao bọc trong một DbContext.Database.BeginTransaction(). Nếu số lượng tồn kho của kích cỡ đó không đủ đáp ứng, giao dịch sẽ tự động Rollback và thông báo lỗi tức thì, đảm bảo không bao giờ xảy ra tình trạng âm kho.
3. Làm thế nào để tích hợp thêm các cổng thanh toán như VNPAY hoặc MoMo vào hệ thống?
Để tích hợp, lập trình viên tạo mới một PaymentController, cấu hình Merchant Code và Secret Key trong Web.config. Khi khách hàng chọn phương thức thanh toán online, hệ thống tạo URL thanh toán chuyển hướng sang Gateway. Sau khi giao dịch hoàn tất, hệ thống bắt IPN callback từ cổng thanh toán để tự động cập nhật trạng thái đơn hàng sang "Đã thanh toán".
4. Quy trình sao lưu (Backup) và phục hồi dữ liệu cơ sở dữ liệu được thực hiện như thế nào?
Quản trị viên có thể thiết lập SQL Server Agent Job trên SSMS để tự động thực thi tác vụ Full Backup định kỳ vào 00:00 hàng ngày và Differential Backup mỗi 4 giờ. Tệp tin sao lưu (.bak) được lưu trữ tại phân vùng ổ đĩa riêng biệt hoặc đồng bộ lên đám mây để đảm bảo an toàn dữ liệu khi có sự cố phần cứng.
5. Chi phí đầu tư ban đầu và thời gian hoàn vốn (ROI) ước tính cho một cửa hàng giày là bao nhiêu?
Chi phí ban đầu ước tính từ 3.000.000 – 5.000.000 VNĐ cho tên miền (.vn/.com) và hạ tầng Cloud VPS Windows trong 1 năm. Nhờ tự động hóa quy trình bán hàng, tiết kiệm chi phí in ấn hóa đơn và tiếp cận thêm hàng nghìn khách hàng tiềm năng qua Internet, thời gian hoàn vốn (ROI) ước tính đạt được chỉ sau 2 đến 3 tháng vận hành thực tế.
Kết luận
Đề tài "Xây dựng Website Cửa hàng Bán Giày trên nền tảng ASP.NET MVC 4" do sinh viên Đàm Ngọc Linh và Hoàng Văn Biểu (Khoa CNTT - Trường Đại học Điện Lực) thực hiện đã giải quyết trọn vẹn bài toán số hóa quy trình kinh doanh cho doanh nghiệp bán lẻ. Đồ án không chỉ dừng lại ở việc xây dựng một website giới thiệu sản phẩm đơn thuần mà đã thiết lập một hệ thống quản trị thương mại điện tử chuyên sâu với khả năng quản lý biến thể kích cỡ đa tầng, máy trạng thái đơn hàng đồng bộ kho tự động và quy trình duyệt nội dung phân quyền chặt chẽ.
Những đóng góp kỹ thuật về kiến trúc MVC, tối ưu hóa truy vấn Entity Framework và trải nghiệm mua sắm không cần đăng nhập đã chứng minh tính khả thi, độ tin cậy và giá trị thực tiễn cao của giải pháp. Đây là nền tảng vững chắc để tiếp tục mở rộng, nâng cấp lên các kiến trúc đám mây hiện đại và tích hợp sâu rộng vào hệ sinh thái kinh tế số trong tương lai.