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

KeyValueBắt buộcMô 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)

  1. 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.
  2. 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ửi sale_order_detail_id / product_variant_id thì 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.
  3. Tạo đánh giá:

    • Tạo mới ProductReview với trạng thái mặc định STATUS_PENDING. comment và tags được loại bỏ thẻ HTML trước khi lưu.
    • Logic tự động duyệt: Nếu comment trống và rating >= 4, đánh giá được tự động duyệt (STATUS_APPROVED).
    • Logic chờ duyệt: Nếu có comment hoặc rating <= 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).
  4. Kết quả:

    • Nếu thành công: Trả về đối tượng ProductReview vừa tạo (HTTP 201).
    • Nếu lỗi validation: Trả về danh sách lỗi (HTTP 422).

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ườngKiểuBắt buộcMô tả
sale_order_idintegerCóID đơn hàng.
sale_order_detail_idintegerKhôngID chi tiết đơn hàng (dòng sản phẩm trong đơn sale_order_id).
product_idintegerCóID sản phẩm được đánh giá, phải có trong đơn sale_order_id.
product_variant_idintegerKhôngID biến thể sản phẩm, phải khớp biến thể trong đơn.
ratingintegerCóĐánh giá (0-5 sao).
commentstringKhôngBình luận (tối đa 4000 ký tự).
tagsstringKhôngThẻ tag.
file_id_listarrayKhôngDanh 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ỗiMô tả
error_rating_invalidĐánh giá phải từ 0 đến 5.
error_comment_too_longBì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_orderThiế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ỗiMô tả
error_addLỗi khi lưu đánh giá.

On this page