API Sản phẩm yêu thích

API này cho phép lấy danh sách sản phẩm yêu thích của người dùng, dựa trên logic hàm list_sanpham_yeuthich.
Ví dụ minh họa: Danh sách sản phẩm yêu thích
GET https://api.socdo.vn/v1/favorite_products
Các tham số:
  • user_id: ID người dùng (bắt buộc)
  • page: Trang hiện tại (mặc định: 1)
  • limit: Số sản phẩm mỗi trang (mặc định: 50, tối đa: 100)
Ví dụ lấy danh sách bằng cURL:
curl -X GET "https://api.socdo.vn/v1/favorite_products?user_id=123&page=1&limit=20" -H "Authorization: Bearer <token>"
Ví dụ kết nối bằng PHP:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.socdo.vn/v1/favorite_products?" . http_build_query([
    "user_id" => 123,
    "page" => 1,
    "limit" => 20
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Dữ liệu trả về mẫu:
{
    "success": true,
    "message": "Lấy danh sách sản phẩm yêu thích thành công",
    "data": {
        "products": [
            {
                "id": "456",
                "ma_sanpham": "SP002",
                "tieu_de": "iPhone 15 Pro",
                "minh_hoa": "/uploads/minh-hoa/iphone15pro.jpg",
                "gia_cu": 30000000,
                "gia_moi": 25000000,
                "gia_ctv": 24000000,
                "thuong_hieu": "Apple",
                "kho": 80,
                "ban": 45,
                "view": 2500,
                "box_banchay": 1,
                "box_noibat": 1,
                "box_flash": 0,
                "date_post": "1695020400",
                "link": "iphone-15-pro",
                "noi_bat": "Chip A17 Pro, Camera 48MP Pro",
                "shop": "123",
                "cat": "1,2,3",
                "total_reviews": 45,
                "avg_rating": 4.8,
                "favorite_id": "789",
                "gia_cu_formatted": "30,000,000",
                "gia_moi_formatted": "25,000,000",
                "gia_ctv_formatted": "24,000,000",
                "discount_percent": 17,
                "date_post_formatted": "18/09/2023 15:00:00",
                "image_url": "https://api.socdo.vn/uploads/thumbs/sanpham_anh_340x340/iphone15pro.jpg",
                "product_url": "https://api.socdo.vn/san-pham/456/iphone-15-pro.html",
                "badges": ["Bán chạy", "Nổi bật", "-17%", "Voucher", "Freeship", "Chính hãng"],
                "voucher_icon": "Voucher",
                "freeship_icon": "Freeship",
                "chinhhang_icon": "Chính hãng",
                "sold_count": 89,
                "star_html": "",
                "label_sale": "
-17%
" } ], "pagination": { "current_page": 1, "total_pages": 3, "total_favorites": 45, "limit": 20, "has_next": true, "has_prev": false }, "user_id": 123 } }
Logic theo hàm list_sanpham_yeuthich:
  • JOIN với yeu_thich_san_pham: Lấy sản phẩm user đã yêu thích
  • JOIN với sanpham: Thông tin chi tiết sản phẩm
  • JOIN với phanloai_sanpham: Giá chi tiết theo phân loại
  • JOIN với product_comments: Rating và reviews
  • DISTINCT: Tránh trùng lặp sản phẩm
  • ORDER BY y.id DESC: Sản phẩm yêu thích mới nhất trước
  • LIMIT 50: Giới hạn tối đa 50 sản phẩm mỗi lần
Các bảng database liên quan:
  • yeu_thich_san_pham: Quan hệ user-product yêu thích (user_id, product_id, date_add)
  • sanpham: Thông tin sản phẩm chính
  • phanloai_sanpham: Phân loại và giá chi tiết
  • product_comments: Đánh giá và rating
  • coupon: Voucher giảm giá
  • transport: Chính sách vận chuyển
Lưu ý:
  • Bạn cần lấy token xác thực trước khi gọi API này
  • user_id là tham số bắt buộc
  • API tự động tính giá từ bảng phanloai_sanpham nếu có
  • Tự động check voucher và freeship theo thời gian thực
  • Hình ảnh ưu tiên thumbnail để tối ưu tốc độ tải
  • Kết quả được sắp xếp theo ID yêu thích mới nhất (y.id DESC)
  • Có thông tin favorite_id để quản lý
  • Tránh trùng lặp sản phẩm với DISTINCT và checked_ids