ReviewĐánh giá sản phẩm
Tạo đánh giá sản phẩm
Tạo đánh giá mới cho sản phẩm
Endpoint
POST /site/productreviews
Headers
| Key | Value | Bắt buộc | Mô tả |
|---|---|---|---|
SiteTenantId | {tenant_id} | Có | ID của công ty/tenant. |
SiteAuthorization | {jwt_token} | Có | Token định danh khách hàng. |
Workflow & Logic
API này cho phép khách hàng tạo đánh giá mới cho sản phẩm đã mua.
Quy trình xử lý (Internal Processing)
-
Xác thực (Authentication):
- Kiểm tra quyền truy cập thông qua JWT token.
- Xác định khách hàng từ token.
-
Kiểm tra tính hợp lệ (Validation):
- Đánh giá (
rating): Phải từ 0 đến 5. - Bình luận (
comment): Tối đa 4000 ký tự (tùy chọn). - Đơn hàng (
sale_order_id): Phải tồn tại và thuộc về khách hàng đang đăng nhập. - Sản phẩm (
product_id): Phải là sản phẩm có trong đơn hàng. Nếu gửisale_order_detail_id/product_variant_idthì phải khớp với dòng sản phẩm đó trong đơn. - File đính kèm (
file_id_list): Mỗi file ID phải tồn tại, thuộc về cùng công ty (shop) và do chính khách hàng đang đăng nhập tải lên.
- Đánh giá (
-
Tạo đánh giá:
- Tạo mới
ProductReviewvới trạng thái mặc địnhSTATUS_PENDING.commentvàtagsđược loại bỏ thẻ HTML trước khi lưu. - Logic tự động duyệt: Nếu
commenttrống vàrating >= 4, đánh giá được tự động duyệt (STATUS_APPROVED). - Logic chờ duyệt: Nếu có
commenthoặcrating <= 3, đánh giá cần được duyệt thủ công (STATUS_PENDING). - Lưu địa chỉ IP của khách hàng.
- Gán
visible = 1(hiển thị công khai).
- Tạo mới
-
Kết quả:
- Nếu thành công: Trả về đối tượng
ProductReviewvừa tạo (HTTP 201). - Nếu lỗi validation: Trả về danh sách lỗi (HTTP 422).
- Nếu thành công: Trả về đối tượng
Request Body
{
"sale_order_id": 100,
"sale_order_detail_id": 50,
"product_id": 10,
"product_variant_id": 5,
"rating": 5,
"comment": "Sản phẩm chất lượng tốt, đóng gói cẩn thận",
"tags": "chất lượng, đóng gói",
"file_id_list": [101, 102]
}Request Body Schema
| Tên trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
sale_order_id | integer | Có | ID đơn hàng. |
sale_order_detail_id | integer | Không | ID chi tiết đơn hàng (dòng sản phẩm trong đơn sale_order_id). |
product_id | integer | Có | ID sản phẩm được đánh giá, phải có trong đơn sale_order_id. |
product_variant_id | integer | Không | ID biến thể sản phẩm, phải khớp biến thể trong đơn. |
rating | integer | Có | Đánh giá (0-5 sao). |
comment | string | Không | Bình luận (tối đa 4000 ký tự). |
tags | string | Không | Thẻ tag. |
file_id_list | array | Không | Danh sách ID file đính kèm. |
Response Schema
HTTP 201 - Created
Trả về đối tượng Product Review Object vừa tạo.
{
"id": 1,
"product_id": 10,
"rating": 5,
"comment": "Sản phẩm chất lượng tốt, đóng gói cẩn thận",
"status": 3,
"date_created": 1600000000
// ... Xem thêm Product Review Object Schema
}HTTP 401 - Unauthorized
Nếu thiếu token, token không hợp lệ hoặc đã hết hạn (error_customer_login_required), hoặc token không thuộc shop của SiteTenantId (error_customer_company_mismatch).
HTTP 422 - Validation Error
| Mã lỗi | Mô tả |
|---|---|
error_rating_invalid | Đánh giá phải từ 0 đến 5. |
error_comment_too_long | Bình luận vượt quá 4000 ký tự. |
error_order_not_found | Đơn hàng không tồn tại hoặc không thuộc về khách hàng. |
error_product_not_in_order | Thiếu product_id, hoặc sản phẩm (dòng đơn, biến thể) không có trong đơn hàng. |
error_file_not_found(ID: {id}) | File ID không tồn tại hoặc không thuộc về khách hàng. |
HTTP 500
| Mã lỗi | Mô tả |
|---|---|
error_add | Lỗi khi lưu đánh giá. |