TMS-1239: Cart - Giỏ hàng

Tài liệu mô tả giỏ hàng trên trang web

1. Mô tả tổng quan

Trang giỏ hàng là nơi hiển thị danh sách các sản phẩm mà người dùng đã chọn để mua. Tại đây, người dùng có thể:


2. Các chức năng và luồng hoạt động

Note: Các dữ liệu thông tin của sản phẩm (color, size, styles, material, logo) hiện tại đang được map thủ công. Hướng dẫn cách map dữ liệu: Hướng dẫn map dữ liệu dành cho sản phẩm

2.1 Review giỏ hàng

Khi người dùng nhấn nút Add To Cart thì sản phẩm đó sẽ được thêm vào giỏ hàng và có thể xem nhanh tại phần review của giỏ hàng.

  1. Tại bất kỳ trang danh sách sản phẩm nào hoặc tại danh sách yêu thích: modal hiện lên để người dùng chọn các thông tin chi tiết của sản phẩm như size, logo, color, style, material, cuối cùng nhấn save để thêm sản phẩm
  2. Tại trang chi tiết sản phẩm: vì đã có chọn thông tin từ trang chi tiết nên sản phẩm nên không hiển thị modal nữa. Khi bấm Add To Cart là sản phẩm sẽ được thêm

Tại đây người dùng có thể:

2.2 Thêm sản phẩm vào giỏ hàng (Add to Cart)

Khi người dùng nhấn nút Add To Cart thì sản phẩm đó sẽ được thêm vào giỏ hàng và có thể xem nhanh tại phần review của giỏ hàng.

  1. Tại bất kỳ trang danh sách sản phẩm nào hoặc tại danh sách yêu thích: modal hiện lên để người dùng chọn các thông tin chi tiết của sản phẩm như size, logo, color, style, material, cuối cùng nhấn save để thêm sản phẩm
  2. Tại trang chi tiết sản phẩm: vì đã có chọn thông tin từ trang chi tiết nên sản phẩm nên không hiển thị modal nữa. Khi bấm Add To Cart là sản phẩm sẽ được thêm

Note: Các sản phẩm trong giỏ hàng đã được xóa sẽ được làm mờ kèm dòng thông báo "Sản phẩm đã được xóa" (đang cập nhật, chưa lên staging)

2.3 Tiếp tục mua sắm (Continue Shopping)

2.4 Cập nhật giỏ hàng (Update Cart)

2.5 Chọn sản phẩm để thanh toán (Select Product for Checkout)

2.6 Thanh toán

Có 2 cách để tiến hành thanh toán (đặt hàng):

  1. Khi nhấn nút Proceed To Checkout (Tiến hành thanh toán) tại trang giỏ hàng:
  1. Khi nhấn nút Checkout (Thanh toán) tại review giỏ hàng:

Popup xác nhận:

Trang xác nhận đã đặt hàng:

2.7 Xóa sản phẩm trong giỏ hàng

Khi nhấn nút icon thùng rác ở mỗi dòng:

2.8 Chuyển đến trang chi tiết sản phẩm

2.9 Chọn chi tiết cho sản phẩm (color, size, style, logo, material)

  1. Phần chi tiết sản phẩm (color, size, style, logo, material) sẽ được hiện ở bên dứoi tên sản phẩm, khi nhấn vào dropdown mở ra cho phép ngừoi dùng lựa chọn:
  1. Tương tự như ở chi tiết sản phẩm, tại đây ngừoi dùng có thể chọn thay đổi color, size, style, logo, material của sản phẩm hiện tại:

3. API Endpoint

Phương thức Route Mô tả
GET /api/v1/auth/get/shop-order Lấy dữ liệu giỏ hàng từ database
POST /api/v1/auth/post/shop-order/save Lưu dữ liệu giỏ hàng vào database
POST /api/v1/auth/post/shop-order/update Cập nhật giỏ hàng (thay đổi số lượng, xóa)
POST /api/v1/auth/post/shop-order/checkout Xử lý thanh toán giỏ hàng

4. Cấu trúc dữ liệu giỏ hàng

4.1 Bảng ecom.shop-order

Trường (EN) Ý nghĩa Mô tả Tên cột/bảng dữ liệu tham chiếu
user_id ID người dùng ID của người đặt hàng Cột id trong bảng ecom.users
created_at Ngày tạo Ngày đơn hàng được tạo
updated_at Ngày cập nhật Ngày đơn hàng được cập nhật
deleted_at Ngày xóa Ngày đơn hàng bị xóa mềm (Soft Delete)

4.2 Bảng ecom.shop-order-details

Trường (EN) Ý nghĩa Mô tả Tên cột/bảng dữ liệu tham chiếu
shop-order_id ID đơn hàng ID của đơn hàng Cột id trong bảng ecom.shop-order
product_id ID sản phẩm ID của sản phẩm Cột product_id trong bảng ecom_summary.product_patterns_summary
color_id ID màu ID màu Cột id trong bảng ecom.colors
size_id ID kích thước ID kích thước Cột id trong bảng ecom.size
style_id ID kiểu nón ID kiểu nón Cột id trong bảng ecom.style
logo_id ID logo ID logo Cột id trong bảng ecom.logo
material_id ID của vật tư ID của sản phẩm Cột id trong bảng ecom.materials
price Giá gốc Giá sản phẩm
quantity Số lượng Số lượng sản phẩm
total_price Tạm tính Tổng giá của sản phẩm đó (price * quantity)
is_checkout Đặt hàng Đánh dấu sản phẩm đã được thanh toán chưa
created_at Ngày tạo Ngày đơn hàng được tạo
updated_at Ngày cập nhật Ngày đơn hàng được cập nhật
deleted_at Ngày xóa Ngày đơn hàng được xóa

5. Giao diện giỏ hàng

5.1 Danh sách sản phẩm hiển thị trong trang giỏ hàng

Trường (EN) Trường (VI) Cột DB Tên DB Mô tả
Product Sản phẩm name ecom_summary.product_patterns_summary Hiển thị tên sản phẩm trong giỏ hàng
Product Sản phẩm image_3d_path ecom_summary.product_patterns_summary Hiển thị hình ảnh sản phẩm trong giỏ hàng
Color Màu sắc name ecom.colors Hiển thị màu sắc sản phẩm trong giỏ hàng
Size Kích thước name ecom.size Hiển thị kích thước sản phẩm trong giỏ hàng
Style Kiểu name ecom.style Hiển thị kiểu sản phẩm trong giỏ hàng
Logo Logo name ecom.logo Hiển thị logo sản phẩm trong giỏ hàng
Material Nguyên phụ liệu name ecom.materials Hiển thị nguyên phụ liệu của sản phẩm trong giỏ hàng
Unit Price Đơn giá price Giá sản phẩm đơn lẻ (không có để contact-liên hệ)
Quantity Số lượng quantity Số lượng sản phẩm trong giỏ (4 số)
Subtotal Tạm tính total_price Tổng tiền của sản phẩm trong giỏ (không có để contact-liên hệ)
Remove Xóa Không Xóa sản phẩm khỏi giỏ hàng

5.2 Tổng giá trị hiển thị trên trang giỏ hàng (Checkout Summary)

Trường (EN) Trường (VI) Cột DB Mô tả
Subtotal Tạm tính Không Tổng tiền của tất cả sản phẩm đã chọn (không có để contact-liên hệ)
Shipping Phí vận chuyển Không Phí vận chuyển (nếu có)
Total Tổng cộng Không Tổng giá trị đơn hàng sau phí vận chuyển (không có để contact-liên hệ)

6. Tóm tắt

Note: Phần summary checkout hiện đang được ẩn trên app mobile chờ cập nhật.


Ref task: #1239 - QA


Revision #37
Created 27 February 2025 10:56:17 by Nguyễn Quốc Anh
Updated 19 March 2025 09:36:58 by Nguyễn Quốc Anh