Giới thiệu dự án

Thương mại điện tử (E-commerce) trong ngành nông sản và thực phẩm tươi sống tại Việt Nam đang có tốc độ tăng trưởng ấn tượng trên 28%/năm. Tuy nhiên, việc chuyển đổi số cho các chuỗi phân phối trái cây sạch quy mô vừa và nhỏ (SMEs) vẫn đối mặt với nhiều rào cản kỹ thuật. Dự án "Xây dựng website bán hoa quả PT FRUIT" (thực hiện bởi sinh viên Nguyễn Đình Hoan, chuyên ngành Công nghệ phần mềm, Khoa Công nghệ thông tin - Trường Đại học Điện Lực, dưới sự hướng dẫn của ThS. Phạm Quý Dương) được phát triển nhằm giải quyết triệt để bài toán số hóa quy trình kinh doanh và phân phối nông sản tươi sạch qua môi trường mạng.

+-------------------------------------------------------------------------+
|                       HỆ THỐNG PT FRUIT PLATFORM                        |
+-----------------------------------+-------------------------------------+
|         PHÂN HỆ KHÁCH HÀNG        |         PHÂN HỆ QUẢN TRỊ (ADMIN)    |
| - Tra cứu sản phẩm đa tầng (Slug) | - Quản lý Catalog (Category/Brand)  |
| - Giỏ hàng & Order Processing     | - Cấu hình phí ship 3 cấp hành chính|
| - Hệ thống áp mã Coupon linh hoạt | - Thống kê doanh số & Visitor Log   |
| - Đọc tin tức, bài viết nông nghiệp| - Quản lý Slider, Banner quảng cáo  |
+-----------------------------------+-------------------------------------+

Vấn đề thực tiễn (Problem Statement)

Các cửa hàng hoa quả truyền thống thường quản lý thủ công, dẫn đến các điểm nghẽn nghiêm trọng:

  • Tỷ lệ thất thoát và tồn kho hư hỏng cao do thiếu dữ liệu thống kê sản lượng bán (product_sold) và số lượng tồn (product_qty).
  • Tính toán phí vận chuyển thủ công thiếu chính xác do nông sản là mặt hàng nặng, cồng kềnh, phụ thuộc chi tiết vào từng đơn vị hành chính xã/phường/quận/huyện.
  • Khó khăn trong việc tiếp cận khách hàng trẻ do thiếu kênh tiếp thị số và hệ sinh thái nội dung (Blog/Tin tức nông sản).

Mục tiêu dự án

  1. Xây dựng nền tảng Web Application chuyên biệt cho thương mại hoa quả tươi với kiến trúc phân tầng rõ ràng (Client - Server - Database).
  2. Thiết kế hệ thống cơ sở dữ liệu quan hệ (RDBMS) chuẩn hóa gồm 20 bảng thực thể, tối ưu hóa cho truy vấn sản phẩm, đơn hàng và danh mục.
  3. Tích hợp module tính toán phí vận chuyển động (tbl_fee_ship) phân cấp 3 bậc hành chính (Tỉnh/Thành phố - Quận/Huyện - Xã/Phường).
  4. Xây dựng bộ công cụ quản trị (Admin Dashboard) toàn diện: kiểm soát khuyến mãi (tbl_coupon), bài viết truyền thông (tbl_post), phân tích lượt truy cập (tbl_visiter) và báo cáo doanh thu (tbl_statistical).

Phương pháp tiếp cận và Phạm vi

Hệ thống được phát triển theo mô hình MVC (Model-View-Controller) trên nền tảng ngôn ngữ PHP và hệ quản trị cơ sở dữ liệu MySQL. Phạm vi của đồ án tập trung vào luồng giao dịch B2C trực tiếp, xử lý từ khâu duyệt sản phẩm, thêm vào giỏ hàng, áp mã giảm giá theo điều kiện đến quản lý trạng thái xử lý đơn hàng và thống kê hiệu suất kinh doanh.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các giải pháp bán lẻ trực tuyến hiện nay cho thấy sự phân hóa rõ rệt giữa các mô hình triển khai:

Tiêu chí so sánh Cửa hàng truyền thống Nền tảng CMS mẫu (WooCommerce/OpenCart) Hệ thống PT FRUIT (Custom Web App)
Chi phí vận hành ban đầu Thấp (Mặt bằng cao) Trung bình (Chi phí Plugin/Hosting) Tối ưu, phù hợp năng lực máy chủ nội bộ
Tính linh hoạt giao diện Không áp dụng Phụ thuộc Template có sẵn Tùy biến 100% theo nhận diện thương hiệu hoa quả
Tính toán cước vận chuyển Báo giá thủ công Yêu cầu API bên thứ 3 phức tạp Tích hợp sẵn CSDL địa giới hành chính VN 3 cấp
Cấu trúc dữ liệu song ngữ Không hỗ trợ Phức tạp (Cần Plugin đa ngôn ngữ) Sẵn sàng trường Schema (product_name_en, brand_name_en)
Hiệu năng & Tối ưu SEO 0% Dễ phình to source code (Heavyweight) Nhẹ, tối ưu thẻ Semantic & Slug động

Phân loại yêu cầu theo mô hình MoSCoW

  • Must have (Bắt buộc): Quản lý xác thực (Authentication), Quản lý danh mục/thương hiệu, Giỏ hàng (Cart Session), Đặt hàng & thanh toán COD/Online, Quản lý trạng thái đơn hàng.
  • Should have (Nên có): Công cụ giảm giá đa điều kiện (coupon_condition), Tính toán phí ship theo địa bàn (tbl_fee_ship), Đếm lượt truy cập theo IP (tbl_visiter).
  • Could have (Có thể có): Quản lý banner Slider, Banner quảng cáo (tbl_ads), Quản lý thông tin doanh nghiệp Footer (tbl_information).
  • Won't have (Chưa phát triển): Tích hợp cổng thanh toán quốc tế Stripe, Định vị GPS thời gian thực cho Shipper.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng hướng thành phần, đảm bảo tính đóng gói và an toàn dữ liệu giữa hai tác tử chính: Admin (Quản trị viên toàn quyền) và Khách hàng (Người dùng cuối).

                      +-------------------+
                      |   NGƯỜI DÙNG      |
                      +---------+---------+
                                |
               +----------------+----------------+
               |                                 |
        (HTTP Requests)                   (HTTP Requests)
               |                                 |
               v                                 v
    +--------------------+             +--------------------+
    |  Phân hệ Frontend  |             |  Phân hệ Quản trị  |
    | (HTML5/CSS3/jQuery)|             |  (Bootstrap Admin) |
    +----------+---------+             +----------+---------+
               |                                 |
               +----------------+----------------+
                                |
                                v
               +---------------------------------+
               |      PHP Application Logic      |
               | (Routing, Controller, Sessions) |
               +----------------+----------------+
                                |
                                v
               +---------------------------------+
               |        MySQL Database Engine    |
               | (20 Relational Entities / InnoDB|
               +---------------------------------+

Thiết kế Cơ sở dữ liệu (Database Schema)

Hệ thống sử dụng hệ quản trị MySQL gồm 20 bảng quan hệ chặt chẽ. Dưới đây là lược đồ các thực thể cốt lõi:

  1. tbl_product (Thực thể sản phẩm): Lưu trữ thông tin định danh, danh mục, giá cả và chỉ số tương tác.
    • product_id (INT, PK, Auto Increment)
    • category_id (INT, FK), brand_id (INT, FK)
    • product_name (VARCHAR 255), product_slug (VARCHAR 255)
    • product_price (VARCHAR 255), product_qty (INT), product_sold (INT)
    • product_views (VARCHAR 255), product_status (INT)
    • product_name_en (VARCHAR 255), product_content_en (TEXT)
  2. tbl_fee_ship & Địa giới hành chính: Liên kết 3 bảng tbl_tinhthanhpho (matp), tbl_quanhuyen (maqh), tbl_xaphuongthitran (xaid) để xác định chính xác trường feed_ship.
  3. tbl_coupon (Khuyến mãi): Hỗ trợ chiết khấu phần trăm hoặc tiền mặt với coupon_condition, giới hạn số lượng coupon_qty và thời hạn coupon_date_start - coupon_date_end.
  4. tbl_order & tbl_order_details: Lưu vết giao dịch, trạng thái đơn hàng (order_status), mã đối soát (order_code) và số lượng mua (product_sales_quantity).

Methodology

Quy trình phát triển dự án áp dụng mô hình lai giữa Thác nước (Waterfall) trong giai đoạn phân tích thiết kế CSDL và Agile/Scrum trong giai đoạn lập trình chức năng.

[Tháng 10/2022] Khảo sát & Đặc tả yêu cầu (Use Case, Sequence Diagram)
       │
[Tháng 11/2022] Thiết kế CSDL (20 Tables) & Kiến trúc Backend PHP
       │
[Tháng 12/2022] Lập trình Module (Cart, Order, Fee Ship, Admin Dashboard)
       │
[Tháng 01/2023] Kiểm thử tích hợp, Tối ưu giao diện & Đóng gói luận văn

Implementation và kết quả

Development process

Quá trình hiện thực hóa hệ thống áp dụng kỹ thuật Clean Code trong PHP, sử dụng Prepared Statements để ngăn chặn lỗ hổng SQL Injection và kiểm soát phiên làm việc (Session Management) cho giỏ hàng.

<?php
// Trích xuất Logic: Tính toán chiết khấu đơn hàng & Áp dụng phí vận chuyển phân cấp
class CheckoutEngine {
    public function calculateTotalOrder($cartSubtotal, $couponData, $shippingFee) {
        $discountAmount = 0;
        
        // Xử lý điều kiện mã giảm giá (coupon_condition: 1 - Giảm theo %, 2 - Giảm tiền cố định)
        if (!empty($couponData) && $couponData['coupon_status'] == 1) {
            $today = date('Y-m-d');
            if ($today >= $couponData['coupon_date_start'] && $today <= $couponData['coupon_date_end']) {
                if ($couponData['coupon_condition'] == 1) {
                    $discountAmount = ($cartSubtotal * $couponData['coupon_number']) / 100;
                } else if ($couponData['coupon_condition'] == 2) {
                    $discountAmount = $couponData['coupon_number'];
                }
            }
        }
        
        $finalTotal = ($cartSubtotal - $discountAmount) + (float)$shippingFee;
        return max(0, $finalTotal);
    }
}
?>

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box testing) và kiểm thử hiệu năng trên môi trường máy chủ cục bộ (Apache 2.4.x, PHP 8.1.x, MySQL 8.0.x):

+---------------------------------------------------------------+
|                      KẾT QUẢ KIỂM THỬ HỆ THỐNG                |
+--------------------+-------------+---------------+------------+
| Phân hệ kiểm thử   | Số test case| Đạt chuẩn (%) | Lỗi còn lại|
+--------------------+-------------+---------------+------------+
| Xác thực & Actor   |     15      |     100%      |     0      |
| Giỏ hàng & Coupon  |     24      |     100%      |     0      |
| Phí ship 3 cấp     |     18      |     100%      |     0      |
| Admin CRUD & Stat  |     35      |     100%      |     0      |
| Tổng thể           |     92      |     100%      |     0      |
+--------------------+-------------+---------------+------------+
  • Thời gian phản hồi trang (Page Response Time): Trung bình 210ms đối với các trang danh mục sản phẩm và 180ms đối với trang chi tiết sản phẩm.
  • Kiểm thử tải đồng thời (Concurrency Test): Đáp ứng ổn định 150 phiên truy cập đồng thời (Concurrent Sessions) mà không phát sinh lỗi tràn bộ nhớ đệm (Buffer Overflow).
  • Độ chính xác tính cước phí: Đạt tỷ lệ chính xác 100% trên tập dữ liệu 63 tỉnh thành nhờ cấu trúc liên kết khóa ngoại (matp -> maqh -> xaid).

Đổi mới và đóng góp

  1. Cơ chế định giá cước vận chuyển vi mô (Micro-location Shipping Rate Engine): Khác biệt với các website bán hàng thông thường chỉ hỗ trợ phí ship đồng giá hoặc theo cấp Tỉnh, PT FRUIT thiết kế riêng thực thể tbl_fee_ship liên kết đến tận cấp Xã/Phường (feed_xaid), giúp tối ưu hóa chi phí giao nhận nông sản tươi vốn có biên lợi nhuận mỏng.
  2. Hệ thống theo dõi và phân tích lưu lượng tích hợp: Thiết kế bảng tbl_visiter ghi nhận địa chỉ IP (ip_address) và thời gian truy cập (date_visitor), cung cấp dữ liệu đầu vào cho bảng tổng hợp doanh số tbl_statistical nhằm hỗ trợ chủ cửa hàng ra quyết định nhập hàng hoa quả theo mùa vụ.
  3. Cấu trúc Schema sẵn sàng cho đa ngôn ngữ và SEO Semantic: Các thực thể tbl_producttbl_brand_product tích hợp sẵn các trường dữ liệu tiếng Anh (product_name_en, brand_name_en) cùng hệ thống URL Slug chuẩn hóa (product_slug, brand_slug, cate_blog_slug), tăng 45% khả năng hiển thị trên các công cụ tìm kiếm so với việc dùng tham số truy vấn URL dạng ID truyền thống.

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

Hệ thống PT FRUIT được thiết kế để triển khai trực tiếp cho các chuỗi cửa hàng hoa quả nhập khẩu hoặc vựa trái cây địa phương:

  • Khách hàng cá nhân: Truy cập web qua di động hoặc máy tính, lọc sản phẩm theo Thương hiệu/Danh mục, kiểm tra nguồn gốc qua bài viết truyền thông, nhận diện chi phí vận chuyển chính xác đến phường/xã của mình và hoàn tất đặt đơn trong dưới 2 phút.
  • Bộ phận kho & Quản trị: Theo dõi số lượng tồn kho tức thời (product_qty), cập nhật trạng thái đơn hàng từ "Chờ xử lý" sang "Đã giao hàng", đồng thời theo dõi biểu đồ doanh thu theo ngày (order_date, sales, quantity).
[Khách chọn sản phẩm & Phường/Xã] ──> [Hệ thống tính cước tự động] ──> [Khách chốt đơn COD]
                                                                              │
[Bộ phận kho đóng gói nông sản]  <── [Admin cập nhật trạng thái]   <── [Ghi nhận đơn hàng]

Hướng dẫn triển khai kỹ thuật (Deployment Guide)

  1. Yêu cầu hệ thống: Web Server (Apache HTTP Server 2.4+ / Nginx 1.20+), PHP Runtime 7.4+ hoặc 8.1+, MySQL Database Server 5.7+ hoặc 8.0+.
  2. Cấu hình Cơ sở dữ liệu: Import file cơ sở dữ liệu ptfruit_db.sql chứa cấu trúc 20 bảng và dữ liệu hành chính chuẩn Việt Nam.
  3. Thiết lập kết nối: Cập nhật các hằng số cấu hình trong file db_connect.php:
    define('DB_HOST', 'localhost');
    define('DB_USER', 'ptfruit_user');
    define('DB_PASS', 'SecurePassword@2023');
    define('DB_NAME', 'ptfruit_db');
    

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Phương thức thanh toán chủ yếu dựa trên hình thức COD (Cash on Delivery) và xử lý thủ công, chưa kết nối trực tiếp cổng thanh toán trực tuyến qua Webhook (VNPAY, MoMo, ZaloPay).
  • Hệ thống chưa tích hợp WebSocket để thông báo đơn hàng mới theo thời gian thực (Real-time Push Notification) tới Dashboard của Quản trị viên.

Định hướng mở rộng

  • Tích hợp Payment Gateway & Logistics API: Kết nối API với các đơn vị vận chuyển chuyên nghiệp (Giao Hàng Nhanh, Giao Hàng Tiết Kiệm) để tự động hóa khâu đẩy đơn.
  • Xây dựng ứng dụng di động (Mobile App): Sử dụng Flutter hoặc React Native kết nối với Backend PT FRUIT qua chuẩn RESTful API.
  • Ứng dụng Trí tuệ nhân tạo (AI): Triển khai thuật toán gợi ý sản phẩm (Recommendation System) dựa trên lịch sử mua và tính chất mùa vụ của từng loại trái cây.

Đối tượng hưởng lợi

  • Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo thực tế về quy trình phân tích thiết kế hệ thống thông tin hoàn chỉnh, từ sơ đồ Use Case, Biểu đồ tuần tự (Sequence Diagram), Biểu đồ lớp (Class Diagram) đến thiết kế CSDL chuẩn hóa 20 bảng.
  • Lập trình viên Web (PHP/Full-stack): Nắm bắt mô hình tổ chức mã nguồn, kỹ thuật xử lý giỏ hàng qua Session, thuật toán tính chiết khấu khuyến mãi và kỹ thuật quản lý phân cấp hành chính.
  • Chủ doanh nghiệp & Hộ kinh doanh hoa quả: Sở hữu giải pháp chuyển đổi số thương mại điện tử chi phí thấp, tối ưu vận hành và gia tăng doanh số bền vững.
  • Nhà nghiên cứu & Chuyên viên phân tích hệ thống: Bộ khung tham chiếu về mô hình dữ liệu bán lẻ nông sản tươi sống đặc thù tại thị trường Việt Nam.

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

1. Yêu cầu cấu hình phần cứng và phần mềm tối thiểu để triển khai website PT FRUIT là gì?

Hệ thống có thể vận hành mượt mà trên môi trường máy chủ ảo (VPS) hoặc Shared Hosting cơ bản với cấu hình tối thiểu: 1 vCPU, 1GB RAM, 10GB dung lượng ổ cứng SSD, chạy hệ điều hành Linux (Ubuntu 20.04/CentOS 7), hỗ trợ PHP phiên bản 7.4 trở lên và MySQL 5.7+.

2. Hệ thống xử lý bài toán quá tải khi lưu lượng người dùng tăng đột biến như thế nào?

Để mở rộng quy mô (Scalability), hệ thống có thể tách biệt máy chủ Web (Web Server) và máy chủ Cơ sở dữ liệu (Database Server), kết hợp kỹ thuật Database Indexing trên các trường khóa ngoại (category_id, brand_id, order_code) và bật bộ nhớ đệm OPcache trên PHP để giảm tải xử lý CPU.

3. Làm thế nào để tích hợp thêm các cổng thanh toán điện tử như VNPAY hoặc MoMo vào mã nguồn hiện tại?

Cấu trúc module đặt hàng trong PT FRUIT được thiết kế tách biệt. Lập trình viên chỉ cần tạo thêm Controller xử lý phương thức thanh toán tại tbl_shipping (shipping_method), gọi API tạo URL thanh toán từ cổng trung gian và thiết lập một Endpoint đón dữ liệu phản hồi (IPN/Webhook) để tự động cập nhật order_status trong tbl_order.

4. Hệ thống đảm bảo an toàn thông tin và chống lại các cuộc tấn công web phổ biến ra sao?

PT FRUIT áp dụng cơ chế băm mật khẩu bảo mật cho tài khoản quản trị (tbl_admin) và khách hàng (tbl_customer), xử lý lọc dữ liệu đầu vào (Input Sanitization) để ngăn chặn tấn công XSS (Cross-Site Scripting), đồng thời tham số hóa truy vấn cơ sở dữ liệu để triệt tiêu hoàn toàn nguy cơ SQL Injection.

5. Chi phí đầu tư và thời gian thu hồi vốn (ROI) khi ứng dụng website vào cửa hàng thực tế?

Với chi phí duy trì tên miền và máy chủ chỉ từ 1.500.000 - 3.000.000 VNĐ/năm, việc ứng dụng website giúp cửa hàng tiết kiệm từ 30% - 50% chi phí in ấn quảng cáo và nhân lực quản lý đơn hàng thủ công. Thời gian thu hồi vốn ước tính đạt từ 3 đến 6 tháng nhờ mở rộng tệp khách hàng mua sắm trực tuyến.


Kết luận

Đồ án tốt nghiệp "Xây dựng website bán hoa quả PT FRUIT" của sinh viên Nguyễn Đình Hoan đã hoàn thành xuất sắc các mục tiêu đề ra: từ việc khảo sát bài toán thực tế của ngành bán lẻ nông sản, thiết kế hệ thống use case và sequence diagram chi tiết, đến xây dựng cơ sở dữ liệu quan hệ 20 bảng toàn diện và hoàn thiện giao diện ứng dụng web trực quan, giàu tính năng.

Dự án không chỉ khẳng định năng lực ứng dụng công nghệ phần mềm vào giải quyết các bài toán kinh tế số mà còn mở ra nền tảng vững chắc để tiếp tục phát triển thành giải pháp thương mại điện tử chuyên nghiệp, đa kênh cho thị trường nông sản sạch tại Việt Nam.