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

Trong bối cảnh cuộc Cách mạng Công nghiệp 4.0, thương mại điện tử đóng vai trò then chốt trong việc tối ưu hóa chi phí vận hành, nâng cao hiệu suất kinh doanh và cá nhân hóa trải nghiệm khách hàng. Đối với ngành xuất bản và phân phối ấn phẩm, việc xây dựng một nền tảng số không chỉ đơn thuần dừng lại ở chức năng bán hàng mà còn đòi hỏi không gian tương tác xã hội để kết nối cộng đồng độc giả. Khóa luận tốt nghiệp chuyên ngành Công nghệ phần mềm (Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) của hai tác giả Lê Anh Kiệt và Nguyễn Thanh Sang, dưới sự hướng dẫn của TS. Lê Văn Vinh, tập trung giải quyết bài toán tích hợp giữa sàn thương mại điện tử bán sách và diễn đàn trao đổi thông tin người dùng.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:

  1. Về mặt lý thuyết:

    • Nghiên cứu và làm chủ các công nghệ nền tảng hiện đại bao gồm: Spring Boot, ReactJS, hệ quản trị cơ sở dữ liệu MongoDB và cơ chế xác thực, phân quyền JSON Web Token (JWT).
    • Nghiên cứu mô hình kiến trúc phần mềm ba lớp (Controller – Service – Repository) và vòng đời của thành phần (Component Lifecycle) trong phát triển ứng dụng giao diện đơn trang (SPA).
  2. Về mặt thực hành:

    • Phân tích yêu cầu, khảo sát hiện trạng các nền tảng thương mại điện tử và diễn đàn trực tuyến hiện có.
    • Thiết kế hệ thống chức năng, mô hình hóa dữ liệu (ERD), xây dựng biểu đồ ca sử dụng (Use Case Diagram) và biểu đồ tuần tự (Sequence Diagram).
    • Sử dụng Spring Boot để xây dựng hệ thống RESTful API phục vụ các phân hệ nghiệp vụ.
    • Ứng dụng MongoDB để lưu trữ dữ liệu phi quan hệ linh hoạt (người dùng, đơn hàng, danh mục sách, bài viết, bình luận).
    • Triển khai xác thực và phân quyền truy cập hệ thống thông qua JSON Web Token (JWT).
    • Ứng dụng ReactJS kết hợp các thư viện React Query, Ant Design và CoreUI để thiết kế giao diện cho cả phân hệ người dùng cuối (Customer/Guest) và phân hệ quản trị (Manager/Admin).
    • Thực hiện kiểm thử các chức năng chính nhằm bảo đảm tính ổn định của hệ thống trước khi vận hành.

Đối tượng nghiên cứu của đề tài bao gồm: các đơn vị quản lý bán hàng, doanh nghiệp cung cấp dịch vụ phân phối sách trực tuyến và hành vi, trải nghiệm của người dùng cuối khi tương tác trên nền tảng số. Phạm vi nghiên cứu tập trung vào việc thiết kế giao diện người dùng, tối ưu hóa quy trình đặt hàng và thanh toán trực tuyến, xây dựng không gian diễn đàn cộng đồng và bảo mật dữ liệu người dùng trong khoảng thời gian thực hiện từ ngày 08/01/2024 đến ngày 15/06/2024.


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

Khóa luận xây dựng trên nền tảng lý thuyết công nghệ phần mềm hiện đại và áp dụng các phương pháp nghiên cứu kỹ thuật thực nghiệm:

1. Khung lý thuyết và công nghệ nền tảng

  • Thư viện ReactJS: Sử dụng cơ chế Virtual DOM để tối ưu hóa hiệu năng cập nhật giao diện thông qua thuật toán so sánh (diffing) trước khi đồng bộ với DOM thực tế; sử dụng cú pháp JSX; quản lý luồng dữ liệu thông qua Props (bất biến) và State (trạng thái nội tại); quản lý vòng đời thành phần qua 4 giai đoạn: Khởi tạo (Mounting với constructor, static getDerivedStateFromProps, render, componentDidMount), Cập nhật (Updating với shouldComponentUpdate, componentDidUpdate), Hủy bỏ (Unmounting) và Xử lý lỗi (Error Handling với static getDerivedStateFromError, componentDidCatch). Hỗ trợ xây dựng giao diện bằng Ant Design, CoreUI và quản lý truy xuất dữ liệu bất đồng bộ bằng React Query.
  • Framework Spring Boot: Sử dụng module Spring Boot thuộc Spring Framework nhằm phát triển nhanh ứng dụng (RAD) với cơ chế tự cấu hình (Auto-Configuration) không cần XML, tích hợp sẵn các web server nhúng như Tomcat/Jetty/Undertow. Hệ thống Backend được tổ chức theo kiến trúc 3 tầng độc lập:
    • Controller: Tiếp nhận yêu cầu HTTP từ client, điều hướng xử lý và trả về dữ liệu API JSON.
    • Service: Thực thi toàn bộ logic nghiệp vụ và tính toán.
    • Repository: Đảm nhận thao tác CRUD dữ liệu với hệ quản trị cơ sở dữ liệu.
    • Các module phụ trợ: Spring Web, Spring Security, Spring Data.
  • Hệ quản trị cơ sở dữ liệu MongoDB: Cơ sở dữ liệu NoSQL hướng tài liệu (Document-Oriented), lưu trữ dữ liệu dưới định dạng BSON (Binary JSON), hỗ trợ kiến trúc phân tán (Distributed Architecture) với khả năng mở rộng thông qua Sharding và Replication, tích hợp cơ chế bảo mật xác thực, phân quyền, mã hóa kết nối TLS/SSL và ghi nhật ký giám sát (Audit Logs).
  • Cơ chế xác thực JSON Web Token (JWT): Tạo chuỗi token mã hóa chứa thông tin nhận thực và quyền hạn của người dùng để kiểm soát truy cập trên từng Endpoint API mà không cần lưu trạng thái phiên (stateless session) trên server.

2. Phương pháp nghiên cứu và nguồn dữ liệu

  • Phương pháp khảo sát hiện trạng: Khảo sát, phân tích tính năng, điểm mạnh và điểm yếu của 4 website bán sách trực tuyến (Van Lang Book, Nhà sách Phương Nam, FAHASA, Tiki) và 2 nền tảng diễn đàn (VNWriter, Việt Nam Overnight).
  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng lược đồ Use Case cho 4 nhóm tác nhân, 30 bảng đặc tả kịch bản Use Case, lược đồ tuần tự (Sequence Diagram) mô tả tương tác luồng dữ liệu và lược đồ quan hệ thực thể (ERD).
  • Phương pháp thực nghiệm và kiểm thử phần mềm: Xây dựng các ca kiểm thử hộp đen (Black-box testing) cho các phân hệ chức năng: quản lý tài khoản, giỏ hàng, đặt hàng, quản lý sách và diễn đàn bài viết.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình Client-Server tách rời (Decoupled Architecture), giao tiếp thông qua giao thức HTTP/HTTPS với định dạng dữ liệu chuẩn JSON.

1. Phân quyền và danh sách chức năng

Hệ thống chia làm 4 nhóm tác nhân chính với các chức năng cụ thể:

Nhóm tác nhân Danh sách chức năng chính
Khách (Guest) Đăng ký tài khoản; Xem danh sách, tìm kiếm và lọc sách; Xem bài viết và tìm kiếm bài viết trên diễn đàn.
Khách hàng (Customer) Đăng nhập; Đăng xuất; Tìm kiếm sách nâng cao (theo tên, tác giả, thể loại, bán chạy); Thêm/cập nhật giỏ hàng; Mua hàng nhanh; Mua hàng trong giỏ; Đánh giá chất lượng sách; Theo dõi trạng thái đơn hàng (chờ xác nhận, đang giao, đã giao, đã hủy); Quên mật khẩu qua mã OTP gửi về Email; Xem/sửa thông tin cá nhân và sổ địa chỉ; Đổi mật khẩu; Đăng bài viết, chỉnh sửa bài viết, bình luận bài viết trên diễn đàn.
Nhân viên quản lý (Manager) Quản lý đặt hàng (xem danh sách đơn, trạng thái đơn, xác nhận đơn, giao hàng, hủy đơn); Quản lý sách (xem danh mục sách tồn/đã bán, thêm/sửa thông tin sách, thiết lập chương trình khuyến mãi/giảm giá).
Quản trị viên (Admin) Toàn quyền phân hệ Manager; Quản lý tài khoản khách hàng (thêm, sửa, xóa, khóa/thêm vào danh sách đen - Blacklist); Quản lý tài khoản nhân viên; Quản lý danh mục thể loại sách; Quản lý và kiểm duyệt bài viết trên diễn đàn; Tạo và gửi thông báo hệ thống đến người dùng; Thống kê báo cáo doanh thu theo ngày/tháng, thống kê danh mục, đơn hàng và bài viết.

2. Thiết kế kịch bản nghiệp vụ (Use Case Scenario)

Hệ thống xây dựng 30 kịch bản Use Case chi tiết (từ UC01 đến UC30). Một số luồng xử lý nghiệp vụ tiêu biểu gồm:

  • UC01 - Đăng nhập: Người dùng nhập Email và Mật khẩu $\rightarrow$ Hệ thống gửi dữ liệu về máy chủ xác thực $\rightarrow$ Trả về mã JWT hợp lệ và cấp quyền truy cập. Nếu sai thông tin, hệ thống hiển thị thông báo lỗi.
  • UC02 - Đăng ký: Người dùng nhập họ tên, email, mật khẩu, số điện thoại $\rightarrow$ Server kiểm tra trùng lặp $\rightarrow$ Tạo tài khoản mới hoặc báo lỗi nếu email/số điện thoại đã tồn tại.
  • UC04 & UC05 - Quản lý giỏ hàng: Cho phép người dùng thêm sách từ trang chi tiết. Nếu số lượng chọn vượt quá số lượng tồn trong cơ sở dữ liệu, hệ thống đưa ra cảnh báo. Cho phép tăng/giảm số lượng bằng nút +/- hoặc xóa sách; khi số lượng điều chỉnh về 0, mục sách tự động bị xóa khỏi giỏ.
  • UC06 & UC07 - Quy trình đặt hàng: Hỗ trợ hai phương thức "Mua hàng nhanh" trực tiếp từ trang chi tiết và "Mua hàng trong giỏ hàng". Người dùng chọn địa chỉ nhận hàng từ danh sách lưu sẵn, lựa chọn hình thức thanh toán, hệ thống tạo bản ghi đơn hàng với trạng thái "Chờ xác nhận".
  • UC08 - Quên mật khẩu: Người dùng nhập Email $\rightarrow$ Hệ thống kiểm tra và gửi mã OTP/URL xác nhận về hòm thư $\rightarrow$ Người dùng nhập mật khẩu mới và xác nhận mật khẩu để cập nhật.
  • UC13 & UC15 - Tương tác diễn đàn: Người dùng đăng nhập có quyền tạo bài viết mới (nhập tiêu đề, nội dung, chuyên mục) $\rightarrow$ Dữ liệu gửi về máy chủ và hiển thị trên diễn đàn sau khi được xử lý; người dùng khác có thể gửi bình luận trực tiếp dưới mỗi bài viết.

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

Phần Mở đầu

Trình bày tính cấp thiết của việc số hóa dịch vụ phân phối sách trong kỷ nguyên công nghệ số; xác định rõ đối tượng, phạm vi nghiên cứu, mục tiêu xây dựng website tích hợp bán sách và diễn đàn; làm rõ ý nghĩa khoa học trong việc ứng dụng ReactJS - Spring Boot - MongoDB và ý nghĩa thực tiễn đối với người tiêu dùng và doanh nghiệp.

Chương 1: Cơ sở lý thuyết

Tập trung làm rõ các nền tảng kỹ thuật được áp dụng trong toàn bộ dự án:

  • Phân tích chi tiết cơ chế hoạt động của ReactJS: Virtual DOM, JSX, Props, State, Component, vòng đời thành phần (Mounting, Updating, Unmounting, Error Handling).
  • Khái quát về Spring Boot, các ưu điểm về tự động cấu hình, kiến trúc phân tầng MVC độc lập (Controller - Service - Repository), các thư viện hỗ trợ (Spring Data, Spring Security, Spring Web).
  • Khái niệm và đặc tính của hệ cơ sở dữ liệu MongoDB: mô hình tài liệu BSON, cơ chế đánh chỉ mục (Index), tính năng phân tán (Sharding/Replication) và bảo mật an toàn dữ liệu.

Chương 2: Khảo sát hiện trạng

Tiến hành khảo sát, so sánh chi tiết tính năng, ưu điểm và hạn chế của 6 hệ thống thực tế:

Tên hệ thống Loại hình Chức năng chính Ưu điểm Hạn chế ghi nhận
Van Lang Book (vanlang.vn) Bán sách trực tuyến Xem, tìm kiếm, lọc sách; giỏ hàng; danh sách yêu thích; thanh toán (COD, Visa, Ví điện tử, QR); theo dõi đơn hàng. Phân loại chi tiết (giá cả, màu sắc...); phương thức thanh toán đa dạng; tra cứu đơn tốt. Chưa có tính năng gợi ý kết quả tìm kiếm.
Nhà sách Phương Nam (nhasachphuongnam.com/vi/) Bán sách trực tuyến Tương tự Van Lang Book; đặt hàng và theo dõi đơn trực tuyến. Phân loại sách chi tiết; thanh toán phong phú. Chưa có gợi ý tìm kiếm; truy xuất dữ liệu chậm; tự động thêm vào giỏ hàng khi người dùng chưa xác nhận.
FAHASA (fahasa.com) Bán sách trực tuyến Tìm kiếm danh mục; đề cử sách nổi bật; ví voucher giảm giá; quản lý đơn hàng; thông tin sự kiện văn hóa. Danh mục phong phú; gợi ý chính xác; nhiều mã khuyến mại. Giao diện hiển thị nhiều khối thông tin, còn rối mắt.
Tiki (Nhà sách Tiki) (tiki.vn/nha-sach-tiki) Sàn TMĐT (nhánh sách) Lọc sách theo đánh giá sao, mức giá; quản lý giỏ hàng, thông tin cá nhân. Danh mục đa dạng, thao tác tiện lợi, dễ sử dụng. Tìm kiếm đôi khi chưa chuẩn xác; giao diện đơn điệu về màu sắc.
VNWriter (vnwriter.net) Diễn đàn sách Đọc review sách, đánh giá tác phẩm, tìm kiếm sách nổi bật, đọc trích dẫn. Bài viết phân tích sâu sắc, nhiều chủ đề, có trích dẫn thu hút. Không có bộ lọc phân loại; bài viết đơn lẻ; thiếu tính năng bình luận tương tác.
Việt Nam Overnight (dembuon.vn/forums/) Diễn đàn cộng đồng Đăng bài viết, tìm kiếm bài viết theo chủ đề/thể loại, đánh giá bài viết. Chủ đề và thể loại chia sẻ đa dạng. Giao diện phức tạp, khó thao tác; thiếu công cụ tìm kiếm tối ưu.

Chương 3: Phân tích thiết kế

Chương này chiếm khối lượng lớn nhất của đồ án, bao gồm:

  • Xác lập danh sách chức năng chi tiết cho 4 phân hệ: Guest (3 chức năng), Customer (14 chức năng), Manager (2 chức năng chính), Admin (7 chức năng quản lý mở rộng).
  • Thiết kế 2 biểu đồ Use Case tổng quát: Phân hệ Customer - Guest và Phân hệ Manager - Admin.
  • Xây dựng 30 bảng đặc tả Use Case chi tiết (từ UC01 đến UC30) bao gồm điều kiện tiên quyết, điều kiện sau, luồng sự kiện chính, luồng sự kiện phụ và luồng ngoại lệ.
  • Xây dựng hệ thống biểu đồ tuần tự (Sequence Diagram) tương ứng cho 30 Use Case.
  • Xây dựng Lược đồ quan hệ thực thể (ERD) tổ chức các thực thể dữ liệu trong MongoDB.
  • Thiết kế chi tiết giao diện người dùng bằng Figma và xây dựng các bảng mô tả giao diện: 11 giao diện phân hệ Admin (Đăng nhập, Trang chủ, Quản lý khách hàng, Danh sách đơn hàng, Chi tiết đơn hàng, Thêm sách, Thêm thể loại/tác giả, Danh sách sách, Quản lý bài viết, Thống kê bán hàng) và 23 giao diện phân hệ Khách hàng (Đăng ký, Đăng nhập, Quên mật khẩu, Xác thực OTP, Trang chủ, Chi tiết sách, Giỏ hàng, Đặt hàng, Danh sách giảm giá, Yêu thích, Thông tin cá nhân, Địa chỉ, Đổi mật khẩu, Lịch sử đơn hàng, Trang diễn đàn, Bình luận, Chi tiết bài viết).

Chương 4: Cài đặt và kiểm thử

Trình bày kết quả cài đặt hệ thống và bảng kết quả kiểm thử chức năng (Testing) được phân chia theo 4 nhóm nghiệp vụ chính:

  1. Bảng kiểm thử các chức năng quản lý tài khoản (Đăng ký, đăng nhập, đổi mật khẩu, OTP, quản lý thông tin).
  2. Bảng kiểm thử các chức năng quản lý đơn hàng và giỏ hàng (Thêm giỏ, cập nhật giỏ, mua hàng nhanh, thanh toán, hủy đơn).
  3. Bảng kiểm thử các chức năng quản lý sách (Thêm mới, sửa, cập nhật tồn kho, khuyến mãi, danh mục).
  4. Bảng kiểm thử các chức năng quản lý diễn đàn (Đăng bài viết, sửa bài, bình luận, kiểm duyệt bài viết).

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

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

  • Xây dựng hoàn chỉnh website thương mại điện tử tích hợp diễn đàn với đầy đủ hai phân hệ độc lập: Phân hệ người dùng và Phân hệ quản trị.
  • Backend triển khai bằng Spring Boot kết nối thành công cơ sở dữ liệu MongoDB, cung cấp hệ thống RESTful API an toàn với cơ chế bảo mật JWT.
  • Frontend triển khai hoàn chỉnh bằng ReactJS kết hợp Ant Design và CoreUI, đảm bảo tính thẩm mỹ, khả năng phản hồi mượt mà và tương thích trải nghiệm người dùng.
  • Thực hiện đầy đủ các kịch bản kiểm thử cho 4 nhóm chức năng lớn, đảm bảo luồng nghiệp vụ hoạt động đúng đặc tả yêu cầu.

2. Giải pháp và đóng góp kỹ thuật

  • Tích hợp hai mô hình dịch vụ trên cùng một nền tảng: Kết hợp trực tiếp chức năng mua sắm ấn phẩm (E-commerce) với không gian thảo luận, review sách (Forum/Community), giúp khắc phục điểm yếu của các nền tảng đơn lẻ (như VNWriter thiếu phần bình luận/mua hàng, hay Fahasa/Tiki thiếu không gian thảo luận chuyên sâu cho độc giả).
  • Quy trình xác thực an toàn: Ứng dụng mô hình gửi mã OTP qua Email cho quy trình cấp lại mật khẩu giúp tăng cường bảo mật thông tin tài khoản người dùng.
  • Kiến trúc phân tầng chuẩn mực: Backend tổ chức nghiêm ngặt theo mô hình Controller - Service - Repository giúp mã nguồn dễ bảo trì, mở rộng và kiểm thử độc lập.

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

Khóa luận chỉ ra một số hạn chế nội tại và định hướng nâng cấp trong tương lai:

  • Hạn chế: Hệ thống mới hoàn thiện các chức năng nghiệp vụ cốt lõi; một số tính năng nâng cao như cơ chế gợi ý sách thông minh dựa trên học máy (Recommendation System) hoặc tích hợp đa dạng cổng thanh toán trực tuyến trung gian (VNPay, MoMo, ZaloPay) chưa được tích hợp toàn diện.
  • Hướng phát triển tiếp theo:
    • Tích hợp thêm các cổng thanh toán điện tử trực tiếp để tối ưu hóa quy trình thanh toán không tiền mặt.
    • Xây dựng thuật toán gợi ý tự động (sách gợi ý, bài viết liên quan) dựa trên lịch sử xem và hành vi mua hàng của khách hàng.
    • Phát triển ứng dụng di động (Mobile App) đồng bộ dữ liệu với hệ thống website để gia tăng sự tiện lợi cho người dùng.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị học thuật và kỹ thuật thực tiễn:

  • Đối tượng tham khảo: Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin đang thực hiện đồ án môn học, đồ án tốt nghiệp về xây dựng ứng dụng web thương mại điện tử hoặc mạng xã hội.
  • Nội dung giá trị nhất:
    • Quy trình mô hình hóa yêu cầu hệ thống bài bản với 30 Use Case đặc tả chi tiết và lược đồ tuần tự đi kèm.
    • Mẫu thiết kế kiến trúc Backend 3 tầng với Spring Boot kết hợp MongoDB và xác thực bảo mật qua JWT.
    • Phương pháp phân tích, đánh giá hiện trạng website thương mại điện tử phục vụ nghiên cứu ứng dụng.

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

1. Khóa luận sử dụng công nghệ nào để phát triển Frontend và Backend?
Khóa luận sử dụng thư viện ReactJS kết hợp Ant Design, CoreUI và React Query để phát triển giao diện người dùng (Frontend); sử dụng Java Spring Boot kết hợp hệ quản trị cơ sở dữ liệu NoSQL MongoDB và cơ chế phân quyền JSON Web Token (JWT) để xây dựng hệ thống API phía máy chủ (Backend).

2. Hệ thống phân chia bao nhiêu nhóm vai trò người dùng và gồm những vai trò nào?
Hệ thống phân chia thành 4 nhóm tác nhân rõ rệt: Khách vãng lai (Guest), Khách hàng đã đăng nhập (Customer), Nhân viên quản lý đơn hàng/sách (Manager) và Quản trị viên toàn quyền hệ thống (Admin).

3. Quy trình cấp lại mật khẩu (UC08 - Quên mật khẩu) được thực hiện như thế nào?
Khi người dùng chọn quên mật khẩu và nhập địa chỉ Email, hệ thống sẽ kiểm tra tài khoản trong cơ sở dữ liệu, tự động gửi một email chứa mã xác thực OTP/đường dẫn xác nhận đến hòm thư của người dùng, sau đó cho phép người dùng thiết lập và xác nhận mật khẩu mới.

4. Khóa luận đã tiến hành khảo sát những website thực tế nào trước khi thiết kế hệ thống?
Khóa luận khảo sát 6 nền tảng gồm 4 website bán sách trực tuyến (Van Lang Book, Nhà sách Phương Nam, FAHASA, Nhà sách Tiki) và 2 website diễn đàn cộng đồng về sách (VNWriter, Việt Nam Overnight).

5. Điểm khác biệt chính của đề tài so với các website bán sách truyền thống là gì?
Đề tài kết hợp trực tiếp giữa nền tảng thương mại điện tử bán sách với diễn đàn trao đổi thông tin, cho phép người dùng vừa mua sắm sách, vừa đăng bài viết, chia sẻ cảm nhận, thảo luận và tương tác bình luận với cộng đồng độc giả trên cùng một hệ thống.


Kết luận

Khóa luận tốt nghiệp của sinh viên Lê Anh Kiệt và Nguyễn Thanh Sang đã hoàn thành đầy đủ mục tiêu xây dựng website kết hợp bán sách và diễn đàn cộng đồng. Bằng việc ứng dụng thành công các công nghệ Spring Boot, ReactJS, MongoDB và JWT, nhóm tác giả đã thiết kế và cài đặt một hệ thống phần mềm có cấu trúc phân tầng rõ ràng, bảo mật và đáp ứng tốt các quy trình nghiệp vụ từ đặt hàng đến thảo luận trực tuyến. Đề tài cung cấp tài liệu tham khảo hoàn chỉnh về phân tích thiết kế hệ thống thông tin hướng đối tượng cho sinh viên ngành Công nghệ phần mềm.