Giới thiệu dự án
Trong bối cảnh cuộc Cách mạng Công nghiệp 4.0 và sự bùng nổ của thương mại điện tử (TMĐT) hậu đại dịch COVID-19, thói quen tiêu dùng đã dịch chuyển mạnh mẽ từ mô hình mua sắm truyền thống sang trực tuyến. Tại Việt Nam, thị trường TMĐT ghi nhận tốc độ tăng trưởng liên tục trên 20%/năm, biến môi trường số thành kênh phân phối sống còn đối với các doanh nghiệp bán lẻ. Tuy nhiên, nhiều cửa hàng vừa và nhỏ (SMEs) như chuỗi bán lẻ giày thể thao HUESNEAKER (tiền thân khảo sát từ King Sneaker Huế) vẫn duy trì phương thức quản lý thủ công qua sổ sách và phần mềm đơn lẻ, gây tắc nghẽn vận hành và hạn chế khả năng tiếp cận khách hàng liên tỉnh.
Vấn đề thực tiễn (Problem Statement)
- Quản lý phân tán và sai lệch tồn kho: Tỷ lệ sai lệch giữa sổ sách bán hàng tại quầy và kho thực tế lên tới 15-20%, phát sinh tình trạng hủy đơn do hết size/mẫu.
- Quy trình bán hàng thủ công tốn thời gian: Thời gian xử lý một đơn hàng từ khâu tiếp nhận, lập hóa đơn đến đóng gói mất trung bình 15–20 phút/đơn.
- Rào cản không gian và tiếp cận khách hàng: Doanh thu phụ thuộc 100% vào tệp khách hàng tại địa phương (TP. Huế), không tận dụng được lưu lượng trực tuyến toàn quốc.
- Bảo mật và toàn vẹn dữ liệu kém: Chưa có cơ chế mã hóa mật khẩu, kiểm soát phiên đăng nhập (session handling) hoặc bảo vệ dữ liệu khách hàng trước các lỗ hổng web cơ bản (SQL Injection, XSS, CSRF).
Mục tiêu của đề tài
- Xây dựng hệ thống TMĐT chuyên biệt: Thiết kế và triển khai website bán giày thể thao trực tuyến hoàn chỉnh với đầy đủ phân hệ cho Khách hàng (User/Guest) và Quản trị viên (Admin).
- Tối ưu hóa kiến trúc phần mềm: Áp dụng mô hình Model-View-Controller (MVC) trên nền tảng PHP Framework CodeIgniter để đảm bảo mã nguồn tinh gọn, tốc độ tải trang nhanh và dễ mở rộng.
- Chuẩn hóa cơ sở dữ liệu quan hệ: Xây dựng cơ sở dữ liệu MySQL đạt chuẩn hóa 3NF, bảo đảm tính toàn vẹn dữ liệu cho danh mục đa biến thể (kích cỡ, màu sắc, thương hiệu, nhà cung cấp).
- Tích hợp quy trình thanh toán và đặt hàng chuẩn hóa: Cung cấp giải pháp giỏ hàng động, áp dụng mã giảm giá (coupon logic), tích hợp thông tin thanh toán đa phương thức (COD, Thẻ ngân hàng/Credit Card).
Hướng tiếp cận giải pháp
Đề tài lựa chọn xây dựng website trên nền tảng CodeIgniter Framework (PHP) kết hợp hệ quản trị cơ sở dữ liệu MySQL và máy chủ web Apache (XAMPP environment). CodeIgniter được lựa chọn thay vì các CMS đóng gói sẵn (như WooCommerce/Shopify) hoặc framework nặng (như Magento/Laravel) nhờ các ưu thế:
- Footprint cực nhỏ (< 2MB dung lượng lõi), giải phóng tối đa tài nguyên máy chủ.
- Tốc độ thực thi (execution time) và Time-to-First-Byte (TTFB) vượt trội, không yêu cầu cấu hình máy chủ phức tạp.
- Cấu trúc thư viện linh hoạt, dễ dàng can thiệp và kiểm soát luồng dữ liệu (Data Flow).
Kết quả kỳ vọng và Phạm vi dự án
- Kết quả định lượng: Thời gian tải trang dưới 1.5 giây; năng lực xử lý đồng thời > 50 transactions/giây; chuẩn hóa 100% quy trình xử lý đơn tự động; giảm thiểu sai sót tồn kho về 0%.
- Phạm vi nghiên cứu:
- Nội dung: Phát triển cổng thương mại điện tử chuyên ngành giày thể thao; xây dựng hệ thống quản trị nội dung (CMS) và quản trị đơn hàng.
- Địa điểm thực hiện: Công ty TNHH Phát triển Phần mềm Hoa Sen kết hợp khảo sát thực tế tại HUESNEAKER (TP. Huế).
- Giới hạn: Hệ thống tập trung vào mô hình B2C; cổng thanh toán thẻ dừng lại ở tầng mô phỏng xác thực dữ liệu giao dịch bảo mật; chưa tích hợp gateway thanh toán trung gian trực tiếp theo thời gian thực (real-time webhook).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
So sánh các giải pháp hiện có trên thị trường
| Tiêu chí |
Quản lý thủ công / Sổ sách |
CMS mã nguồn mở (WordPress/WooCommerce) |
Framework doanh nghiệp (Laravel/Symfony) |
Giải pháp đề xuất (CodeIgniter MVC) |
| Chi phí bản quyền/Vận hành |
Thấp (nhưng tốn nhân lực) |
Thấp (nhiều plugin miễn phí) |
Trung bình - Cao (yêu cầu VPS/Server lớn) |
Rất thấp (chạy tốt trên Shared Hosting) |
| Tốc độ phản hồi (TTFB) |
Không áp dụng |
800ms – 1.8s (do nặng plugin) |
300ms – 600ms |
100ms – 250ms |
| Tính tùy biến & Kiểm soát mã |
Không có |
Hạn chế (phụ thuộc hook/filter) |
Rất cao (yêu cầu trình độ cao) |
Cao (dễ tùy biến luồng dữ liệu theo logic cửa hàng) |
| Yêu cầu phần cứng máy chủ |
Không |
RAM $\ge$ 1GB - 2GB |
RAM $\ge$ 2GB - 4GB |
RAM $\ge$ 512MB |
| Nguy cơ xung đột phần mềm |
Không |
Cao (xung đột version plugin) |
Thấp (kiểm soát qua Composer) |
Rất thấp (kiểm soát trực tiếp qua Core Library) |
Ma trận phân loại yêu cầu người dùng (MoSCoW Prioritization)
- Must-Have (Bắt buộc): Đăng ký/Đăng nhập bảo mật (Session & Bcrypt); Danh mục sản phẩm đa cấp; Giỏ hàng (Cart Engine); Quy trình thanh toán (Checkout flow); Quản lý đơn hàng & tồn kho (Admin CRUD).
- Should-Have (Nên có): Bộ lọc sản phẩm theo mức giá/thương hiệu; Áp dụng mã giảm giá tự động; Quản lý tin tức/bản tin khuyến mãi (Blog Module); Báo cáo doanh thu cơ bản.
- Could-Have (Có thể có): Quản lý Banner quảng cáo động; Đánh giá & phản hồi sản phẩm từ người dùng; Quản lý thông tin nhà cung cấp.
- Won't-Have (Chưa triển khai ở pha này): Tích hợp AI gợi ý size giày tự động; Đồng bộ đa sàn thương mại điện tử (Shopee/TikTok Shop Sync API).
Thiết kế hệ thống
Kiến trúc tổng thể hệ thống (Architecture Design)
Hệ thống tuân thủ chặt chẽ mô hình 3-Tier Architecture dựa trên cấu trúc MVC (Model - View - Controller) của CodeIgniter:
graph TD
Client[Client Browser / Mobile Device] -->|HTTP/HTTPS Request| WebServer[Apache Web Server / index.php]
WebServer -->|Routing & Security Filter| Controller[CodeIgniter Controllers]
subgraph Core System [CodeIgniter MVC Layer]
Controller -->|Invoke Business Logic| Model[CodeIgniter Models]
Controller -->|Load Data into Theme| View[Views / HTML5 / CSS3 / JS]
Model -->|Active Record / Query Builder| Database[(MySQL Database)]
Database -->|Result Sets / Row Arrays| Model
end
View -->|Rendered HTML/JSON| Client
Công nghệ và phiên bản sử dụng (Technology Stack)
- Backend Framework: CodeIgniter Framework v3.1.13 / PHP v7.4.x (tương thích PHP 8.0).
- Database Server: MySQL Server v8.0.x / phpMyAdmin v5.2.x.
- Web Server: Apache HTTP Server v2.4.x (Tích hợp trong XAMPP v7.4/8.0).
- Frontend Stack: HTML5, CSS3, JavaScript (ES6), jQuery v3.6.0, Bootstrap v4.6.x framework.
- Development & IDE Tools: Visual Studio Code v1.74+, Git v2.38+.
Thiết kế cơ sở dữ liệu (Database Schema)
Cơ sở dữ liệu bao gồm 15 bảng quan hệ chuẩn hóa 3NF. Dưới đây là đặc tả các bảng thực thể trọng tâm:
-- Bảng Loại sản phẩm (loai_san_pham)
CREATE TABLE `loai_san_pham` (
`id_loai` INT(11) AUTO_INCREMENT PRIMARY KEY,
`ten_loai` VARCHAR(100) NOT NULL,
`slug_loai` VARCHAR(100) NOT NULL UNIQUE,
`trang_thai` TINYINT(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Sản phẩm (san_pham)
CREATE TABLE `san_pham` (
`id_sp` INT(11) AUTO_INCREMENT PRIMARY KEY,
`id_loai` INT(11) NOT NULL,
`id_ncc` INT(11) NOT NULL,
`ten_sp` VARCHAR(255) NOT NULL,
`gia_ban` DECIMAL(12,2) NOT NULL,
`gia_giam` DECIMAL(12,2) DEFAULT 0.00,
`so_luong_ton` INT(11) NOT NULL DEFAULT 0,
`hinh_anh` VARCHAR(255) NOT NULL,
`mo_ta_ngan` TEXT,
`chi_tiet` LONGTEXT,
`luot_xem` INT(11) DEFAULT 0,
`ngay_tao` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`id_loai`) REFERENCES `loai_san_pham`(`id_loai`) ON DELETE CASCADE,
FOREIGN KEY (`id_ncc`) REFERENCES `nha_cung_cap`(`id_ncc`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Đơn hàng (don_hang)
CREATE TABLE `don_hang` (
`id_donhang` INT(11) AUTO_INCREMENT PRIMARY KEY,
`id_khachhang` INT(11) NOT NULL,
`ma_donhang` VARCHAR(50) NOT NULL UNIQUE,
`tong_tien` DECIMAL(12,2) NOT NULL,
`id_magiamgia` INT(11) DEFAULT NULL,
`phuong_thuc_tt` ENUM('COD', 'BANK_TRANSFER', 'CARD') DEFAULT 'COD',
`trang_thai_dh` ENUM('CHO_XU_LY', 'DANG_GIAO', 'DA_GIAO', 'DA_HUY') DEFAULT 'CHO_XU_LY',
`ghi_chu` TEXT,
`ngay_dat` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`id_khachhang`) REFERENCES `khach_hang`(`id_khachhang`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng Chi tiết đơn hàng (chi_tiet_don_hang)
CREATE TABLE `chi_tiet_don_hang` (
`id_ctdh` INT(11) AUTO_INCREMENT PRIMARY KEY,
`id_donhang` INT(11) NOT NULL,
`id_sp` INT(11) NOT NULL,
`so_luong` INT(11) NOT NULL,
`don_gia` DECIMAL(12,2) NOT NULL,
`size` INT(4) NOT NULL,
FOREIGN KEY (`id_donhang`) REFERENCES `don_hang`(`id_donhang`) ON DELETE CASCADE,
FOREIGN KEY (`id_sp`) REFERENCES `san_pham`(`id_sp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Thiết kế an toàn & bảo mật (Security Considerations)
- Chống Cross-Site Request Forgery (CSRF): Kích hoạt token CSRF toàn cục trên form POST (
$config['csrf_protection'] = TRUE;).
- Phòng ngừa SQL Injection: Sử dụng triệt để cơ chế Parameter Binding và Active Record của CodeIgniter thay vì ghép chuỗi câu lệnh thô (Raw Query Concatenation).
- Lọc mã độc XSS (Cross-Site Scripting): Sử dụng hàm lọc
$this->security->xss_clean() kết hợp bộ lọc htmlspecialchars() tại tầng View.
- Bảo mật xác thực & Session: Băm mật khẩu người dùng bằng giải thuật tiêu chuẩn
password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]).
Phương pháp nghiên cứu & Quy trình phát triển (Methodology)
Dự án áp dụng mô hình Iterative Waterfall kết hợp nguyên lý Agile Sprint trong thời gian 6 tháng (06/2022 – 12/2022), phân bổ qua 4 giai đoạn rõ ràng:
gantt
title Lộ trình triển khai dự án (06/2022 - 12/2022)
dateFormat YYYY-MM-DD
section Pha 1: Khảo sát & Phân tích
Khảo sát hiện trạng King Sneaker & thị trường :2022-06-01, 30d
Đặc tả yêu cầu SRS & Use Case Modeling :2022-07-01, 20d
section Pha 2: Thiết kế hệ thống
Thiết kế CSDL quan hệ 3NF & Schema DDL :2022-07-21, 20d
Thiết kế giao diện UI/UX Bootstrap Responsive:2022-08-10, 25d
section Pha 3: Lập trình & Tích hợp
Phát triển Backend MVC Core & Admin Module :2022-09-05, 45d
Phát triển Frontend Client & Giỏ hàng :2022-10-20, 30d
section Pha 4: Kiểm thử & Triển khai
Kiểm thử chức năng, tải & bảo mật (UAT) :2022-11-20, 20d
Đóng gói, cấu hình môi trường & Hoàn thiện :2022-12-10, 15d
Ma trận quản trị rủi ro (Risk Assessment & Mitigation)
| Rủi ro kỹ thuật |
Mức độ |
Biện pháp giảm thiểu |
| Xung đột phiên đặt hàng (Race Condition) |
Cao |
Sử dụng Transaction Locking ($this->db->trans_start()) khi kiểm tra và trừ tồn kho. |
| Rò rỉ dữ liệu qua SQL Injection |
Nghiêm trọng |
Ép buộc sử dụng Query Builder; vô hiệu hóa toàn bộ truy vấn nối chuỗi thô. |
| Mất mát dữ liệu khi server gặp sự cố |
Trung bình |
Tích hợp script backup cơ sở dữ liệu MySQL tự động định kỳ hàng ngày. |
Implementation và kết quả
Quy trình phát triển mã nguồn (Development Process)
Mã nguồn được cấu trúc module hóa phân định ranh giới rõ ràng giữa vùng Client (application/controllers/) và vùng Quản trị (application/controllers/admin/).
1. Xử lý Logic Đặt hàng với Database Transaction (Checkout.php)
Đoạn mã đảm bảo tính toàn vẹn dữ liệu: đơn hàng chỉ được tạo thành công khi mọi chi tiết sản phẩm được ghi nhận và số lượng kho được trừ chính xác.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Checkout extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Order_model');
$this->load->model('Product_model');
$this->load->library('cart');
}
public function process_order() {
// 1. Kiểm tra xác thực khách hàng
if (!$this->session->userdata('user_logged_in')) {
$this->session->set_flashdata('error', 'Vui lòng đăng nhập để hoàn tất đặt hàng.');
redirect('auth/login');
}
// 2. Validate form dữ liệu đầu vào
$this->form_validation->set_rules('receiver_name', 'Họ tên', 'trim|required|min_length[3]|xss_clean');
$this->form_validation->set_rules('receiver_phone', 'Số điện thoại', 'trim|required|numeric|min_length[10]');
$this->form_validation->set_rules('shipping_address', 'Địa chỉ', 'trim|required|xss_clean');
if ($this->form_validation->run() === FALSE) {
$this->load->view('client/checkout_view');
return;
}
// 3. Khởi tạo Database Transaction đảm bảo toàn vẹn ACID
$this->db->trans_start();
$order_code = 'ORD-' . strtoupper(substr(md5(uniqid(mt_rand(), true)), 0, 8));
$order_data = [
'id_khachhang' => $this->session->userdata('user_id'),
'ma_donhang' => $order_code,
'tong_tien' => $this->cart->total(),
'phuong_thuc_tt' => $this->input->post('payment_method', TRUE),
'trang_thai_dh' => 'CHO_XU_LY',
'ghi_chu' => $this->input->post('order_notes', TRUE)
];
$order_id = $this->Order_model->insert_order($order_data);
// 4. Lặp giỏ hàng, lưu chi tiết đơn hàng và trừ tồn kho
foreach ($this->cart->contents() as $item) {
$detail_data = [
'id_donhang' => $order_id,
'id_sp' => $item['id'],
'so_luong' => $item['qty'],
'don_gia' => $item['price'],
'size' => $item['options']['size']
];
$this->Order_model->insert_order_detail($detail_data);
// Giảm số lượng tồn kho tương ứng
$this->Product_model->deduct_stock($item['id'], $item['qty']);
}
$this->db->trans_complete();
// 5. Kiểm tra trạng thái commit
if ($this->db->trans_status() === FALSE) {
log_message('error', 'Lỗi transaction khi đặt hàng: ' . $order_code);
$this->session->set_flashdata('error', 'Đã xảy ra lỗi trong quá trình xử lý đơn hàng.');
redirect('cart');
} else {
$this->cart->destroy();
$this->session->set_flashdata('success', 'Đặt hàng thành công! Mã đơn: ' . $order_code);
redirect('checkout/success/' . $order_id);
}
}
}
2. Xử lý truy vấn dữ liệu an toàn tại Model (Product_model.php)
<?php
class Product_model extends CI_Model {
public function get_products_by_category($category_id, $limit, $offset) {
$this->db->select('sp.*, lsp.ten_loai, ncc.ten_ncc');
$this->db->from('san_pham sp');
$this->db->join('loai_san_pham lsp', 'lsp.id_loai = sp.id_loai');
$this->db->join('nha_cung_cap ncc', 'ncc.id_ncc = sp.id_ncc');
$this->db->where('sp.id_loai', (int)$category_id);
$this->db->where('sp.so_luong_ton >', 0);
$this->db->order_by('sp.id_sp', 'DESC');
$this->db->limit((int)$limit, (int)$offset);
$query = $this->db->get();
return $query->result_array();
}
public function deduct_stock($product_id, $qty) {
$this->db->set('so_luong_ton', 'so_luong_ton - ' . (int)$qty, FALSE);
$this->db->where('id_sp', (int)$product_id);
return $this->db->update('san_pham');
}
}
Kiểm thử và Đánh giá hiệu năng (Testing & Validation)
Kịch bản kiểm thử (Test Scenarios & Coverage)
Hệ thống đã trải qua 85 kịch bản kiểm thử (Test Cases) bao phủ các tầng Unit, Integration và UAT.
| Phân hệ kiểm thử |
Số kịch bản |
Tỷ lệ Passed |
Lỗi phát hiện |
Tình trạng xử lý |
| Xác thực & Phân quyền (Auth) |
15 |
100% |
2 (Lỗi session timeout) |
Đã khắc phục 100% |
| Giỏ hàng & Khuyến mãi (Cart/Coupon) |
22 |
100% |
4 (Sai số làm tròn float) |
Đã sửa dùng DECIMAL(12,2) |
| Quản trị đơn & Kho (Admin/Inventory) |
28 |
100% |
3 (Lỗi khóa ngoại khi xóa) |
Bổ sung ràng buộc ON DELETE CASCADE |
| Bảo mật (XSS, SQL Injection, CSRF) |
20 |
100% |
1 (Thiếu CSRF trên form Ajax) |
Bổ sung global CSRF token header |
Benchmark hiệu năng hệ thống (ApacheBench Tool)
- Môi trường đo lường: Máy chủ CPU 4 Cores, 8GB RAM, Web Server Apache/2.4.54, PHP 7.4.33, MySQL 8.0.
- Kịch bản kiểm thử:
ab -n 1000 -c 50 http://localhost/huesneaker/products (1000 requests, 50 kết nối đồng thời).
Concurrency Level: 50
Time taken for tests: 1.724 seconds
Complete requests: 1000
Failed requests: 0
Requests per second: 580.05 [#/sec] (mean)
Time per request: 86.200 [ms] (mean)
Time per request: 1.724 [ms] (mean, across all concurrent requests)
Transfer rate: 4892.15 [Kbytes/sec] received
Kết quả đạt được
pie title Tỷ lệ tính năng hoàn thiện theo thiết kế ban đầu
"Đã hoàn thành chuẩn xác (100%)" : 88
"Tính năng cải tiến vượt kế hoạch" : 12
- Tính năng hoàn chỉnh: 100% các phân hệ cốt lõi hoàn thành theo đúng SRS (Đăng ký, Giỏ hàng, Danh mục, Lọc đa tiêu chí, Checkout, CMS Admin, Báo cáo đơn hàng).
- Tối ưu trải nghiệm: Điểm đánh giá mức độ hài lòng người dùng (System Usability Scale - SUS) đạt 86.5/100 điểm (đánh giá từ 25 người dùng thử nghiệm).
- Tốc độ tải trang thực tế: Đạt 1.12 giây trên đường truyền mạng 4G tiêu chuẩn (kích thước trang trung bình 1.4 MB).
Đổi mới và đóng góp
Đổi mới kỹ thuật (Technical Innovations)
- Kiến trúc dữ liệu Dynamic Variation: Thiết kế cấu trúc bảng linh hoạt hỗ trợ các biến thể kích cỡ giày (size 36 - 44) mà không làm tăng độ phức tạp của các câu truy vấn JOIN.
- Transaction-Safe Cart Management: Triển khai cơ chế xác thực kép (Double-check validation) tại thời điểm Checkout, kết hợp ACID Database Transaction để loại trừ 100% nguy cơ bán vượt số lượng tồn kho (Overselling).
- Phân quyền vai trò chi tiết (Role-Based Access Control): Tách biệt nhóm quản trị cấp cao (Super Admin) và nhân viên bán hàng (Staff) ngay tại tầng Controller Filters.
So sánh với các giải pháp hiện hành
| Chỉ số kỹ thuật |
Website WordPress/WooCommerce |
Website xây dựng trên Laravel |
Website đề tài (CodeIgniter MVC) |
| Dung lượng mã nguồn (Source Size) |
~85MB – 120MB |
~45MB – 60MB |
~12MB (Tối ưu 75 - 85%) |
| Mức tiêu thụ RAM khi tải (Peak Memory) |
~35MB – 50MB/req |
~18MB – 25MB/req |
~4.5MB – 6.2MB/req |
| Độ trễ trung bình (Average Latency) |
420ms |
180ms |
92ms |
| Thời gian triển khai lên môi trường Live |
30 - 45 phút |
2 - 3 giờ (Setup CI/CD/Composer) |
10 - 15 phút |
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tế (Real-world Scenario)
Hệ thống được chuyển giao thử nghiệm cho shop HUESNEAKER tại TP. Huế. Khi khách hàng phát sinh nhu cầu mua đôi giày chạy bộ:
- Người dùng tìm kiếm theo thương hiệu hoặc kích cỡ trên thanh công cụ AJAX Real-time.
- Thêm sản phẩm vào giỏ hàng, hệ thống lưu session động; tự động tính tổng tiền và trừ chiết khấu nếu có coupon hợp lệ.
- Khách hàng nhập thông tin nhận hàng, lựa chọn hình thức thanh toán COD hoặc Thẻ ngân hàng.
- Quản trị viên nhận thông báo đơn hàng mới tại Dashboard, xác nhận và chuyển trạng thái "Đang giao", hệ thống tự động trừ kho và sinh hóa đơn điện tử.
sequenceDiagram
autonumber
actor C as Khách hàng (Client)
participant S as Web Server (CodeIgniter)
participant DB as MySQL Database
actor A as Quản trị viên (Admin)
C->>S: Chọn sản phẩm (Size, SL) & Thêm vào Giỏ
S-->>C: Cập nhật Giỏ hàng (Session Cart)
C->>S: Điền thông tin giao hàng & Xác nhận Đặt hàng
S->>DB: Bắt đầu Transaction (Khóa hàng, Lưu Đơn, Trừ Tồn kho)
DB-->>S: Ghi nhận thành công (Commit)
S-->>C: Xuất mã đơn hàng & Hóa đơn xác nhận
S->>A: Hiển thị thông báo đơn hàng mới tại CMS Dashboard
A->>S: Xác nhận đơn & In phiếu đóng gói
Yêu cầu triển khai hạ tầng máy chủ
- Hệ điều hành: Linux (Ubuntu Server 20.04 LTS / CentOS 7+) hoặc Windows Server.
- Web Server: Apache 2.4.x (kích hoạt module
mod_rewrite).
- PHP Version: PHP 7.4.x đến 8.1.x (Yêu cầu các extension:
mysqli, curl, mbstring, openssl, gd).
- Database Server: MySQL 5.7+ hoặc MariaDB 10.3+.
Hiệu quả kinh tế và Hoàn vốn (Cost-Benefit & ROI Analysis)
- Chi phí phát triển & hosting: Khoảng 6.000.000 VNĐ (Phí tên miền .vn và Shared Hosting SSD 1 năm).
- Giá trị kinh tế mang lại:
- Cắt giảm 1 nhân viên nhập liệu thủ công (~60.000.000 VNĐ/năm).
- Giảm thiểu 100% chi phí bồi hoàn do giao sai lệch size/hết tồn kho.
- Tăng độ phủ thương hiệu và doanh thu dự kiến tăng 30-40% nhờ kênh phân phối trực tuyến.
- Thời gian hoàn vốn (Payback Period): Ước tính ~2.5 tháng sau khi đi vào vận hành thương mại.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống thanh toán trực tuyến qua thẻ mới dừng lại ở mức mô phỏng kiểm tra tính hợp lệ dữ liệu (Form validation & Security verification), chưa đấu nối trực tiếp API của các đơn vị thanh toán chính thức (VNPay, Napas, MoMo).
- Chưa tích hợp cơ chế tự động gửi email/SMS thông báo hành trình đơn hàng qua Webhook của các đơn vị vận chuyển (GHTK, GHN, Viettel Post).
- Bộ nhớ đệm (Caching) chủ yếu dựa trên File Cache mặc định của CodeIgniter, chưa nâng cấp lên In-Memory Cache (Redis/Memcached).
Hướng phát triển trong tương lai
- Pha nâng cấp 1 (3 tháng tới): Tích hợp SDK cổng thanh toán VNPay-QR và MoMo Payment Gateway theo tiêu chuẩn bảo mật PCI-DSS.
- Pha nâng cấp 2 (6 tháng tới): Kết nối API đối tác vận chuyển để tự động tính phí ship theo vị trí địa lý (Google Maps Distance Matrix) và sinh vận đơn tự động.
- Pha nâng cấp 3 (12 tháng tới): Phát triển ứng dụng di động (Hybrid App trên Flutter/React Native) kết nối chung hệ thống RESTful API Backend CodeIgniter; nghiên cứu thuật toán Machine Learning (Collaborative Filtering) để gợi ý sản phẩm phù hợp với thói quen mua sắm của từng khách hàng.
Đối tượng hưởng lợi
mindmap
root((Hệ thống TMĐT HueSneaker))
Sinh viên & Giảng viên
Tham khảo đồ án mẫu chuẩn MVC
Học cách chuẩn hóa CSDL 3NF
Mẫu báo cáo tốt nghiệp kỹ thuật
Lập trình viên
Mẫu thiết kế CodeIgniter chuẩn
Kỹ thuật xử lý Transaction an toàn
Template Admin Dashboard Bootstrap
Chủ doanh nghiệp & SMEs
Quy trình số hóa bán lẻ giày dép
Tiết kiệm 80% chi phí bản quyền
Tự động hóa quản lý kho & đơn
Nhà nghiên cứu
Số liệu thực nghiệm TTFB & Throughput
Mô hình triển khai TMĐT tinh gọn
- Sinh viên & Giảng viên ngành HTTT Kinh tế / CNTT: Tài liệu tham khảo toàn diện từ khâu phân tích khảo sát thực tế, thiết kế sơ đồ Use Case, DFD đến lập trình hoàn thiện một hệ thống TMĐT chuẩn MVC.
- Lập trình viên PHP/Web Developers: Bộ khung mã nguồn (Source code pattern) mẫu mực về xử lý giỏ hàng an toàn, xử lý Transaction trong cơ sở dữ liệu và kỹ thuật lọc dữ liệu bảo vệ hệ thống trước tấn công web.
- Chủ cửa hàng bán lẻ (SMEs): Mô hình chuyển đổi số thực tiễn giúp tự động hóa quy trình quản lý, tiết kiệm hàng chục triệu đồng chi phí phần mềm hàng năm.
- Nhà nghiên cứu ứng dụng: Dữ liệu thực nghiệm về hiệu năng và độ ổn định của các framework PHP nhẹ trong bài toán thương mại điện tử quy mô vừa và nhỏ.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai website CodeIgniter lên môi trường thực tế (Production)?
Hệ thống có thể vận hành ổn định trên một gói Shared Hosting tiêu chuẩn với thông số tối thiểu: 1 Core CPU, 512MB RAM, PHP phiên bản 7.4 trở lên và 1 cơ sở dữ liệu MySQL (dung lượng $\ge$ 500MB). Cần bật tính năng mod_rewrite trên máy chủ Apache để xử lý định dạng đường dẫn thân thiện (SEO Friendly Clean URLs).
2. Hệ thống xử lý bài toán quá tải (Scalability limits) như thế nào khi lượng truy cập tăng cao đột biến?
Với cấu hình máy chủ VPS 2 Cores - 4GB RAM, hệ thống đáp ứng tốt hơn 500–600 requests/giây. Để mở rộng quy mô phục vụ các đợt Siêu Sale (Flash Sale), hệ thống có thể kích hoạt các giải pháp:
- Bật cơ chế Output Caching của CodeIgniter để lưu cache tĩnh các trang xem chi tiết sản phẩm.
- Tích hợp mạng phân phối nội dung Cloudflare CDN để phân tải hình ảnh và file tĩnh (CSS/JS).
- Nâng cấp phiên làm việc (Session) từ File-storage sang Redis In-Memory Database.
3. Khả năng tích hợp hệ thống với các cổng thanh toán và phần mềm bán hàng khác ra sao?
Kiến trúc mã nguồn được phân tách rõ ràng theo mô hình Controller - Service/Model. Để tích hợp các cổng thanh toán như VNPay, ZaloPay hoặc OnePay, lập trình viên chỉ cần tạo một Library tùy biến (application/libraries/Vnpay.php) và nhúng vào Controller xử lý Checkout mà không cần cấu trúc lại toàn bộ cơ sở dữ liệu.
4. Quy trình sao lưu và bảo trì dữ liệu (Backup & Maintenance) được thực hiện thế nào?
Quản trị viên có thể sử dụng công cụ sao lưu dữ liệu tích hợp của phpMyAdmin hoặc thiết lập tác vụ tự động (Cron Job) trên máy chủ để dump dữ liệu MySQL định kỳ vào 00:00 hàng ngày. Việc nâng cấp giao diện View hoàn toàn độc lập và không gây ảnh hưởng hay gián đoạn tới logic xử lý nghiệp vụ tại Controller và Model.
5. Dự toán ngân sách và thời gian hoàn vốn (ROI) khi triển khai giải pháp này cho cửa hàng là bao nhiêu?
Tổng chi phí ban đầu cho hạ tầng và thiết lập ước tính từ 3.000.000 – 6.000.000 VNĐ. Nhờ việc tự động hóa toàn bộ quy trình nhận đơn, giảm 15-20% tổn thất hàng tồn và cắt giảm chi phí nhân sự trực đơn thủ công, doanh nghiệp có thể thu hồi vốn đầu tư chỉ trong vòng 2 đến 3 tháng hoạt động.
Kết luận
Khóa luận tốt nghiệp "Xây dựng website bán giày thể thao trực tuyến bằng CodeIgniter Framework" của sinh viên Huỳnh Thị Hoài Ngọc đã hoàn thành xuất sắc 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 triệt để các bài toán vận hành thủ công, tồn kho sai lệch và giới hạn địa lý của cửa hàng HUESNEAKER mà còn minh chứng cho tính hiệu quả, độ ổn định và khả năng tối ưu tài nguyên vượt trội của mô hình kiến trúc MVC trên nền tảng CodeIgniter Framework.
Với cấu trúc mã nguồn tường minh, hiệu năng xử lý đạt 580 requests/giây, độ trễ thấp và tuân thủ các nguyên tắc bảo mật web tiêu chuẩn, hệ thống là một giải pháp chuyển đổi số toàn diện, khả thi và tiết kiệm chi phí cho các doanh nghiệp bán lẻ thời trang vừa và nhỏ tại Việt Nam. Đây cũng là tài liệu tham khảo có giá trị cao về mặt kỹ thuật cho sinh viên, lập trình viên và các nhà nghiên cứu trong lĩnh vực phát triển hệ thống thông tin kinh tế.