ReviewĐánh giá sản phẩm
Thống kê đánh giá sản phẩm
Lấy thống kê đánh giá trung bình và chi tiết số lượng đánh giá theo từng sao
Endpoint
GET /site/productreviews/product/{product_id}/avgrating
Headers
| Key | Value | Bắt buộc | Mô tả |
|---|---|---|---|
SiteTenantId | {tenant_id} | Có | ID của công ty/tenant. |
Workflow & Logic
API này lấy thống kê đánh giá của một sản phẩm, bao gồm điểm trung bình và số lượng đánh giá theo từng mức sao (1-5), phục vụ việc hiển thị rating summary trên trang chi tiết sản phẩm.
Quy trình xử lý (Internal Processing)
-
Khởi tạo & Kiểm tra (Initialization & Validation):
- Khởi tạo site context từ header
SiteTenantId(không yêu cầu đăng nhập). - Kiểm tra sản phẩm có tồn tại và thuộc về shop của
SiteTenantId.
- Khởi tạo site context từ header
-
Tính toán thống kê (Statistics Calculation):
- Lấy danh sách số lượng đánh giá theo từng mức sao (1-5) từ các đánh giá có
ratingtừ 1 đến 5, đã được duyệt (STATUS_APPROVED) và hiển thị công khai (visible = 1). - Tính tổng số đánh giá (
total_rating). - Tính điểm trung bình (
avg_rating) = Tổng (số sao × số lượng) / Tổng số đánh giá. - Tạo chi tiết (
details) với số lượng đánh giá cho từng mức sao (1, 2, 3, 4, 5).
- Lấy danh sách số lượng đánh giá theo từng mức sao (1-5) từ các đánh giá có
-
Kết quả:
- Nếu sản phẩm không tồn tại hoặc không thuộc shop: Trả về giá trị mặc định (total_rating = 0, avg_rating = 0, details = []).
- Nếu sản phẩm tồn tại nhưng chưa có đánh giá nào được duyệt:
detailslà mảng rỗng[]. - Nếu sản phẩm tồn tại: Trả về thống kê đầy đủ.
Parameters
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
product_id | integer | Có | ID sản phẩm (trong URL path). |
Response Schema
HTTP 200 - JSON Object
{
"total_rating": 150,
"avg_rating": 4.5,
"details": {
"1": 5,
"2": 10,
"3": 20,
"4": 40,
"5": 75
}
}Response Fields
| Tên trường | Kiểu dữ liệu | Mô tả |
|---|---|---|
total_rating | integer | Tổng số đánh giá đã được duyệt và hiển thị công khai |
avg_rating | float | Điểm trung bình (không làm tròn; client tự định dạng khi hiển thị) |
details | object | Số lượng đánh giá theo từng mức sao (key: 1-5, value: số lượng) |
Details Object
Mỗi key trong details tương ứng với số sao (1-5), value là số lượng đánh giá ở mức đó.
{
"1": 5, // 5 đánh giá 1 sao
"2": 10, // 10 đánh giá 2 sao
"3": 20, // 20 đánh giá 3 sao
"4": 40, // 40 đánh giá 4 sao
"5": 75 // 75 đánh giá 5 sao
}Error Codes
| HTTP | Mã lỗi | Mô tả |
|---|---|---|
| 404 | error_company_not_found_from_site_tenant_id | SiteTenantId không hợp lệ hoặc shop không còn hoạt động. |