Bối cảnh và vấn đề nghiên cứu

Trong xu thế phát triển của công nghệ thông tin và mạng internet, hoạt động thương mại điện tử ngày càng đóng vai trò quan trọng trong việc phục vụ nhu cầu đời sống xã hội. Tại Việt Nam, mặc dù hạ tầng viễn thông và các phương thức thanh toán điện tử đang từng bước hoàn thiện, mô hình giao dịch trực tuyến ngày càng trở nên phổ biến, cho phép người tiêu dùng thực hiện mua sắm tiện lợi thông qua các thiết bị kết nối mạng. Bên cạnh các sàn thương mại điện tử tổng hợp, các hệ thống kinh doanh trực tuyến chuyên biệt kết hợp nền tảng quản trị dành cho nhà bán hàng đang trở thành nhu cầu thiết yếu nhằm nâng cao khả năng quản lý sản phẩm, đơn hàng và bảo mật dữ liệu.

Khóa luận tốt nghiệp "Thiết kế và xây dựng website bán sách trực tuyến" được sinh viên Trần Đình Bảo (MSSV: 19110168), ngành Công nghệ thông tin, Khoa Đào tạo Chất Lượng Cao thực hiện dưới sự hướng dẫn của ThS. Nguyễn Minh Đạo.

Mục tiêu nghiên cứu:

  1. Xây dựng ứng dụng bán sách trực tuyến dành cho khách hàng với trải nghiệm thân thiện, tốc độ xử lý nhanh.
  2. Xây dựng website quản trị (Admin Website) tích hợp, hỗ trợ quản lý sản phẩm, đơn đặt hàng và thống kê doanh thu cho nhiều tác nhân trong hệ thống.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và xây dựng hệ thống website bán sách trực tuyến kết hợp website quản trị, bao gồm các quy trình đặt hàng, xử lý đơn hàng, quản lý kho/danh mục và tích hợp thanh toán điện tử.
  • Phạm vi công nghệ:
    • Front-End (Website bán sách): Thư viện ReactJS.
    • Front-End (Admin Website): Thư viện ReactJS.
    • Back-End: Nền tảng NodeJS xây dựng theo mô hình kiến trúc MVC.
  • Phạm vi không gian và thời gian: Đề tài thực hiện tại TP. Hồ Chí Minh trong thời gian từ ngày 20/02/2023 đến ngày 29/05/2023 với quy mô 01 hệ thống ứng dụng bán sách mô phỏng thực tế.

Phương pháp nghiên cứu: Tác giả áp dụng các phương pháp nghiên cứu chủ đạo gồm:

  • Phương pháp phân tích: Phân tích thực trạng các sàn thương mại điện tử lớn tại Việt Nam, phân tích yêu cầu nghiệp vụ và mô hình dữ liệu.
  • Phương pháp mô phỏng: Thiết kế quy trình đặt hàng, xử lý đơn hàng và thanh toán điện tử qua cổng thanh toán quốc tế Paypal.
  • Phương pháp nghiên cứu thực tiễn: Triển khai cài đặt hệ thống phần mềm hoàn chỉnh, tối ưu hiệu năng và bảo mật backend.

Cơ sở lý thuyết và phương pháp

Khảo sát thực trạng các hệ thống thương mại điện tử

Để xác định các chức năng và luồng xử lý cần thiết, tác giả đã tiến hành khảo sát thực trạng ba sàn thương mại điện tử tiêu biểu tại Việt Nam:

Nền tảng Điểm đánh giá tốc độ Ưu điểm chính ghi nhận Hạn chế ghi nhận trong văn bản
Tiki (https://tiki.vn) 9.0 / 10 Ban đầu kinh doanh chuyên về sách, danh mục phong phú; hỗ trợ thanh toán trực tuyến/ngoại tuyến, áp dụng voucher; tốc độ tải nhanh dù dữ liệu lớn. Giao diện nhiều tính năng phức tạp khiến người dùng khó tập trung; giá sản phẩm cao hơn một số sàn khác; nguồn gốc hàng hóa chưa đảm bảo tuyệt đối.
Shopee (https://shopee.vn) 9.5 / 10 Giao diện bắt mắt, tính tương thích responsive tốt trên hầu hết thiết bị; tích hợp minigame, chương trình ưu đãi, khung giờ giảm giá linh hoạt. Dữ liệu giao diện nặng; còn lỗi responsive tại form chọn tỉnh/thành trang địa chỉ nhận hàng; nhiều thông báo đẩy gây phiền; khâu kiểm duyệt hàng hóa còn phản ánh.
Sendo (https://sendo.vn) 8.5 / 10 Giao diện đồng nhất, thân thiện, ít hiệu ứng gây nhiễu; quy trình thêm giỏ hàng và đặt hàng dễ thao tác. Sản phẩm chưa đa dạng bằng đối thủ; thiếu các sự kiện và tính năng nổi bật (như giao nhanh 2h hay lắc xu).

Từ kết quả khảo sát, tác giả rút ra bài học thực tiễn về tính phức tạp khi triển khai đơn hàng: một đơn hàng chứa nhiều sản phẩm từ các nhà cung cấp khác nhau hoặc có đặc tính hàng hóa khác nhau (dễ vỡ, hàng nặng, hàng nhẹ, tình trạng còn/hết hàng) sẽ đòi hỏi quy trình chia tách kiện và điều phối giao hàng linh hoạt.

Mô hình phân quyền và kiến trúc hệ thống

Hệ thống được thiết kế hướng đối tượng với 4 vai trò tác nhân (Actors) chính:

  • Khách hàng (User/Guest): Tìm kiếm, xem chi tiết sách, quản lý giỏ hàng, thanh toán (COD, Paypal), quản lý sổ địa chỉ, theo dõi trạng thái đơn hàng và đánh giá sản phẩm.
  • Quản trị viên (Admin): Quản lý hệ thống tài khoản, thực hiện chặn/khóa tài khoản hoặc ép đăng xuất khi phát hiện hành vi khả nghi; quản lý danh mục sản phẩm (thêm, sửa).
  • Nhà bán hàng (Seller): Quản lý danh sách sản phẩm (thêm, sửa chi tiết, sửa nhanh, xóa sản phẩm chưa phát sinh đơn), quản lý và cập nhật đơn hàng của gian hàng mình, theo dõi thống kê đơn hoàn tất và tổng doanh thu.
  • Người giao hàng (Shipper): Quản lý đơn hàng được phân công, cập nhật trạng thái giao hàng hoặc hủy đơn, ghi nhận trạng thái "Bom hàng" khi người nhận từ chối nhận sách.

Thiết kế và triển khai

Hệ thống được thiết kế và hiện thực hóa dưới dạng kiến trúc ứng dụng web toàn diện gồm 2 ứng dụng Front-End độc lập và 1 hệ thống Back-End tập trung.

Công nghệ phát triển

  • Giao diện người dùng: ReactJS xây dựng giao diện người dùng đơn trang (SPA) cho cả Website bán sách và Admin Website.
  • Kiến trúc mã nguồn Back-End: NodeJS triển khai theo mô hình MVC phân tách thành các thư mục chức năng:
    • middlewares: Chứa các hàm trung gian xử lý xác thực, kiểm tra quyền truy cập và lọc dữ liệu.
    • controllers: Tiếp nhận request, điều phối dữ liệu và trả kết quả về client.
    • services: Chứa logic nghiệp vụ cốt lõi và xử lý truy vấn dữ liệu.
  • Cơ sở dữ liệu: MongoDB lưu trữ dữ liệu phi quan hệ.
  • Dịch vụ tích hợp bên ngoài:
    • Google OAuth (Google Login) cho cả khách hàng và nhà bán hàng.
    • Cổng thanh toán quốc tế Paypal hỗ trợ thanh toán trực tuyến.

Kỹ thuật tối ưu hóa hiệu năng và bảo mật Back-End

Tác giả đã triển khai một loạt kỹ thuật tối ưu hóa trong mã nguồn backend:

  1. Promise.all: Tối ưu hóa thời gian phản hồi bằng cách thực thi song song các tác vụ bất đồng bộ độc lập thay vì thực thi tuần tự.
  2. Hàm lean() trong MongoDB: Tối ưu hóa tốc độ truy vấn cơ sở dữ liệu bằng cách chuyển đổi trực tiếp kết quả trả về thành các Plain JavaScript Objects đơn giản, bỏ qua quá trình khởi tạo Mongoose Document phức tạp.
  3. NodeJS Cluster: Khởi tạo nhiều tiến trình con trên hệ thống đa nhân nhằm tận dụng tối đa tài nguyên phần cứng máy chủ.
  4. Thread pool trong NodeJS: Quản lý và phân phối hiệu quả các tác vụ tính toán nặng và I/O không đồng bộ.
  5. class-validator: Xác thực và chuẩn hóa cấu trúc, kiểu dữ liệu của các trường gửi về máy chủ.
  6. XSS Filter: Lọc và loại bỏ các ký tự độc hại nhằm ngăn chặn tấn công Cross-Site Scripting.
  7. Rate Limit: Giới hạn số lượng request từ một địa chỉ trong khoảng thời gian nhất định nhằm chống tấn công từ chối dịch vụ (DoS) và spam request.

Nội dung chính theo từng chương

Chương 1: Phần mở đầu

Chương này thiết lập nền tảng lý luận và bối cảnh nghiên cứu của đề tài. Tác giả trình bày tính cấp thiết của việc kết hợp website bán hàng và nền tảng quản trị chuyên biệt trong thương mại điện tử; xác định mục tiêu nghiên cứu, đối tượng, phạm vi công nghệ (ReactJS, NodeJS) và thời gian thực hiện. Bên cạnh đó, chương 1 dành phần lớn dung lượng để khảo sát thực trạng ba sàn thương mại điện tử lớn (Tiki, Shopee, Sendo), phân tích chi tiết ưu - nhược điểm về giao diện, tính năng, tốc độ tải trang, qua đó rút ra các yêu cầu nghiệp vụ cần thiết cho đồ án.

Chương 2: Chức năng hệ thống

Chương 2 mô tả và phân loại toàn bộ chức năng của hệ thống theo từng nhóm người dùng:

  • Website bán sách: Bảng đặc tả 2.1 liệt kê 30 chức năng chi tiết bao gồm: Đăng nhập, Đăng ký, Đăng ký nhà bán hàng, Quên mật khẩu, Google Login, Quản lý tài khoản, Xem thông tin chi tiết, Sửa thông tin cá nhân, Thay đổi mật khẩu, Xem trang chủ, Tìm kiếm chung, Tìm kiếm theo tên sản phẩm, Tìm kiếm theo danh mục, Tìm kiếm theo nhà bán hàng, Tìm kiếm theo tác giả, Xem giỏ hàng, Thêm sản phẩm vào giỏ, Xóa sản phẩm khỏi giỏ, Xem thông tin nhận hàng, Thêm thông tin nhận hàng, Chỉnh sửa thông tin nhận hàng, Xóa thông tin nhận hàng, Chọn thông tin mặc định, Xem danh sách đơn hàng đã đặt, Đơn hàng chờ xét duyệt, Đơn hàng đã xét duyệt, Đơn hàng đang giao, Đơn hàng hoàn tất, Đơn hàng đã hủy, Đánh giá sản phẩm.
  • Website quản trị: Bảng đặc tả 2.2 liệt kê 12 chức năng chính phân quyền cho Admin, Seller và Shipper: Xem danh sách sản phẩm, Đăng nhập, Đăng xuất, Đăng ký seller (thông qua token tạo từ app), Thêm sản phẩm, Xóa sản phẩm (khi chưa có đơn), Sửa sản phẩm (chi tiết và sửa nhanh), Xem danh sách đơn hàng, Cập nhật trạng thái đơn hàng (ordered, packed, shipped, deliveried), Hủy đơn hàng, Xử lý bom hàng (dành cho Shipper), Quản lý tài khoản và chặn người dùng, Thống kê đơn hàng thành công và doanh thu.

Chương 3: Phân tích và thiết kế hệ thống

Chương 3 là phần trọng tâm về phân tích kỹ thuật của khóa luận:

  • Mô hình Use Case và Đặc tả: Trình bày sơ đồ Use Case tổng quát và 47 bảng đặc tả chi tiết kèm sơ đồ tuần tự (Sequence Diagram) tương ứng cho từng luồng nghiệp vụ (Đăng nhập, Đăng ký, Quên mật khẩu gửi mail reset token, Google Login, Quản lý thông tin, Tìm kiếm gợi ý, Giỏ hàng, Mua hàng, Thanh toán, Quản lý đơn hàng, Chặn tài khoản, Xử lý bom hàng...).
  • Thiết kế giao diện (UI): Chi tiết hóa thiết kế các màn hình trên cả hai phân hệ:
    • Phía Website bán sách: Giao diện đăng nhập/đăng ký, form quên mật khẩu (2 bước: nhập email và reset password với token), trang chủ (thanh tìm kiếm gợi ý, danh mục, slider bán chạy, sản phẩm mới ra mắt, footer), trang chi tiết sản phẩm (đánh giá, mô tả, thông tin seller, sản phẩm tương tự), giỏ hàng, quy trình thanh toán (chọn phương thức, quản lý địa chỉ nhận hàng), lịch sử đơn hàng theo từng trạng thái.
    • Phía Admin Website: Màn hình quản lý sản phẩm (danh sách, thêm mới 2 bước thông tin cơ bản/chi tiết, sửa nhanh), quản lý đơn hàng theo trạng thái, màn hình giao diện của Shipper, màn hình quản trị tài khoản và quản trị danh mục sản phẩm.
  • Thiết kế kiến trúc và dữ liệu: Trình bày sơ đồ Class Diagram và đặc tả chi tiết cấu trúc các module middlewares, services, controllers.

Chương 4: Cài đặt chương trình

Chương 4 trình bày việc hiện thực hóa các chức năng phần mềm:

  • Cài đặt kiến trúc MVC trên nền NodeJS cho hệ thống Back-End.
  • Cài đặt và cấu hình các cơ chế bảo mật và tối ưu hóa hệ thống backend thông qua code minh họa cụ thể: xử lý bất đồng bộ đa luồng với Promise.all, tối ưu truy vấn dữ liệu với lean(), triển khai đa tiến trình Cluster, kiểm soát Thread pool, xác thực dữ liệu đầu vào bằng class-validator, tích hợp bộ lọc mã độc XSS filter và thiết lập giới hạn tần suất truy cập Rate limit.

Chương 5: Kết luận

Chương 5 tổng kết toàn bộ kết quả đạt được của đề tài, đánh giá mức độ hoàn thành so với mục tiêu đề ra ban đầu, chỉ ra các ưu điểm, hạn chế kỹ thuật và đề xuất các định hướng phát triển tiếp theo cho hệ thống.

Chương 6: Tài liệu tham khảo

Liệt kê các tài liệu kỹ thuật, thư viện mã nguồn mở và tài liệu tham khảo được sử dụng trong suốt quá trình nghiên cứu và cài đặt ứng dụng.


Kết quả và đóng góp

Kết quả chính đạt được

  • Về mặt phần mềm: Xây dựng hoàn chỉnh hệ thống thương mại điện tử bán sách trực tuyến gồm 2 nền tảng Front-End bằng ReactJS và 1 hệ thống Back-End bằng NodeJS kết nối cơ sở dữ liệu MongoDB.
  • Về tính năng nghiệp vụ: Hiện thực đầy đủ 30 chức năng phía khách hàng và 12 chức năng phân quyền đa tác nhân phía quản trị, bao gồm các quy trình phức tạp:
    • Tích hợp cổng thanh toán Paypal và phương thức COD.
    • Tích hợp xác thực tài khoản qua Google Login và cơ chế lấy lại mật khẩu an toàn bằng token qua Email.
    • Thiết lập luồng vòng đời đơn hàng chi tiết qua các trạng thái: Đặt hàng (ordered), Đóng gói (packed), Vận chuyển (shipped), Giao thành công (deliveried), Hủy đơn và Xử lý "Bom hàng".
  • Về kỹ thuật Back-End: Ứng dụng thành công 7 kỹ thuật tối ưu hóa và an ninh backend (Promise.all, lean(), Cluster, Thread pool, class-validator, XSS filter, Rate limit).

Phân chia khối lượng thực hiện

Toàn bộ khối lượng công việc được sinh viên Trần Đình Bảo hoàn thành 100%, bao gồm: Code Backend (100%), Code Admin Website (100%), Code Website bán sách (100%) và Viết báo cáo khóa luận (100%), được giáo viên hướng dẫn đánh giá loại "Tốt".


Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế: Đề tài được thực hiện trong thời gian ngắn (khoảng 3 tháng) với kiến thức và kinh nghiệm thực tiễn về triển khai dự án phần mềm quy mô lớn còn hạn chế; hệ thống hiện dừng lại ở quy mô mô phỏng thực tế.
  • Hướng phát triển:
    • Mở rộng thêm các phương thức thanh toán điện tử nội địa phổ biến tại Việt Nam (như ví điện tử, chuyển khoản ngân hàng QR code).
    • Hoàn thiện thuật toán phân bổ đơn hàng tự động và tối ưu hóa lộ trình giao hàng cho đội ngũ Shipper.
    • Nâng cấp hệ thống gợi ý sản phẩm thông minh dựa trên hành vi duyệt web và lịch sử mua sắm của người dùng.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Nắm bắt quy trình xây dựng đồ án tốt nghiệp ứng dụng web theo mô hình MVC toàn diện từ bước khảo sát, thiết kế Use Case, Sequence Diagram, Class Diagram đến cài đặt cụ thể.
  • Lập trình viên phát triển hệ thống E-commerce với NodeJS & ReactJS: Tham khảo phương pháp tổ chức mã nguồn backend (middlewares, controllers, services), giải pháp tích hợp thanh toán Paypal, cơ chế phân quyền đa tác nhân (Admin, Seller, Shipper, User) và các kỹ thuật thực tế nhằm tối ưu tốc độ truy vấn MongoDB (lean()) cũng như an toàn dữ liệu (Rate limit, XSS filter, class-validator).

Câu hỏi thường gặp

1. Hệ thống phân chia quyền hạn và vai trò người dùng như thế nào? Hệ thống được thiết kế với 4 vai trò rõ rệt:

  • Khách hàng (User): Thao tác trên Website bán sách (tìm kiếm, đặt hàng, thanh toán COD/Paypal, đánh giá, quản lý địa chỉ và đơn mua).
  • Quản trị viên (Admin): Thao tác trên Admin Website (quản lý/khóa tài khoản, ép đăng xuất khi phát hiện đáng nghi, quản lý danh mục sách).
  • Nhà bán hàng (Seller): Thao tác trên Admin Website (đăng ký tài khoản qua token từ app, quản lý sản phẩm của gian hàng, xử lý đơn hàng, theo dõi doanh thu).
  • Người giao hàng (Shipper): Thao tác trên Admin Website (tiếp nhận đơn, cập nhật trạng thái vận chuyển/hoàn tất, hủy đơn hoặc cập nhật trạng thái "Bom hàng").

2. Quy trình xử lý khi khách hàng quên mật khẩu được thiết kế ra sao? Quy trình gồm 2 bước: Người dùng nhập email tại trang "Forgot Password"; hệ thống kiểm tra sự tồn tại của email trong CSDL và gửi đường dẫn kèm mã reset token tới email. Người dùng nhấp vào link chuyển hướng đến trang đặt lại mật khẩu, nhập mật khẩu mới và xác nhận; hệ thống xác thực token và kiểm tra thời hạn trước khi cập nhật mật khẩu mới vào cơ sở dữ liệu.

3. Khóa luận đã sử dụng những giải pháp kỹ thuật nào để tối ưu hiệu năng và an ninh cho Back-End NodeJS? Tác giả đã triển khai 7 giải pháp kỹ thuật cụ thể:

  • Tối ưu hiệu năng: Sử dụng Promise.all xử lý bất đồng bộ song song, hàm lean() giảm tải bộ nhớ khi truy vấn MongoDB, kiến trúc Cluster khai thác đa nhân CPU và tối ưu Thread pool của NodeJS.
  • Bảo mật và an toàn dữ liệu: Sử dụng class-validator kiểm tra dữ liệu đầu vào, XSS filter loại bỏ mã độc hại và Rate limit giới hạn tần suất request để chống DoS.

4. Trạng thái "Bom hàng" trong hệ thống được định nghĩa và xử lý bởi ai? Trạng thái "Bom hàng" được quản lý bởi Người giao hàng (Shipper) trên Admin Website. Khi Shipper đã vận chuyển sản phẩm đến địa chỉ người nhận nhưng khách hàng từ chối nhận hàng, Shipper sẽ cập nhật trạng thái này để hệ thống ghi nhận lý do hủy đơn và phục vụ đối soát đơn hàng.


Kết luận

Khóa luận "Thiết kế và xây dựng website bán sách trực tuyến" của tác giả Trần Đình Bảo đã giải quyết trọn vẹn bài toán xây dựng hệ thống thương mại điện tử chuyên ngành sách với đầy đủ hai phân hệ Website bán hàng và Website quản trị đa tác nhân. Bằng việc ứng dụng ngăn xếp công nghệ hiện đại ReactJS, NodeJS, MongoDB kết hợp các kỹ thuật tối ưu hóa hiệu năng và bảo mật chuyên sâu, đề tài đã đáp ứng tốt các yêu cầu nghiệp vụ thực tế từ khảo sát thị trường đến cài đặt hệ thống hoàn chỉnh. Đây là công trình đồ án tốt nghiệp có giá trị tham khảo cao về mặt phương pháp luận phân tích thiết kế hệ thống và kỹ thuật lập trình web full-stack.