Skip to main content
#P1790

GET /b2c/v1/trade/list


User Trade History (List Orders)

این اندپوینت لیست تمامی سفارشات و فاکتورهای کاربر (B2C) یا همکار (B2B) را بازمی‌گرداند.
اطلاعات مالی، وضعیت پرداخت و جزئیات محصول (پرواز، هتل و...) برای هر سفارش محاسبه و ارسال می‌شود.




List User Trades

URL: /b2c/v1/trade/list
Method: GET
Controller: V1TradeController@listTrade
Middleware: authWithJwt (Required)

Business Logic (منطق تجاری)

  1. شناسایی کاربر (User Identification):
    • بر اساس توکن JWT، نوع کاربر (group) و اطلاعات کاربر (operator) استخراج می‌شود.
    • اگر گروه کاربر b2b یا colleague باشد، فیلتر بر اساس colleague_auth انجام می‌شود.
    • در غیر این صورت (مسافر عادی)، فیلتر بر اساس ستون customer انجام می‌شود.
  2. فیلتر سفارشات (Query Factors):
    • سفارشاتی که وضعیت (status) آن‌ها 2 یا 5 باشد، از لیست حذف می‌شوند (whereNotIn).
    • لیست بر اساس شناسه (ID) به صورت نزولی (جدیدترین به قدیمی‌ترین) مرتب می‌شود.
  3. غنی‌سازی داده‌ها (Data Enrichment Loop):
    برای هر فاکتور یافت شده عملیات زیر انجام می‌شود:
    • عنوان (Redis): تلاش برای دریافت عنوان فارسی سفارش از کلید Redis: reference:{id}:information:title:fa.
    • نوع محصول: استخراج product و byproduct از جدول factor_items.
    • محاسبات مالی: اگر عنوان در Redis موجود باشد، تابع ApiTradeController::financial فراخوانی شده تا وضعیت مالی دقیق (فروش، جریمه، پرداختی و مانده) محاسبه شود.

Response Structure

{
    "status": true,
    "time": 1702123456,
    "data": [
        {
            "method": "flight",       // نوع محصول (flight, train, hotel, ...)
            "submethod": false,       // زیر مجموعه (در صورت وجود)
            "title": "پرواز تهران به مشهد - ماهان", // عنوان فارسی (از کش)
            "details": {
                // تمام فیلدهای سفارش (id, created_at, status, ...)
                "id": 10250,
                "status": 1,
                "created_at": "2024-01-01 12:00:00",
                "financial": {
                    "sum_sale": 15000000,         // مبلغ کل فروش
                    "sum_return_sale": 0,         // مبلغ استرداد شده به مشتری
                    "sum_penalty_sale": 0,        // جریمه کنسلی کسر شده
                    "sum_receive": 15000000,      // مبلغ دریافت شده از مشتری
                    "balance_received": 0         // مانده حساب (بدهی/بستانکاری)
                }
            }
        },
        {
            "method": "hotel",
            "submethod": false,
            "title": 10249, // حالت Fallback: اگر عنوان در کش نباشد، ID برمی‌گردد
            "details": false // در صورت نبودن در کش، جزئیات مالی محاسبه نمی‌شود
        }
    ]
}

Financial Fields Description

Field Description
sum_sale مبلغ نهایی فاکتور (قیمت محصول).
sum_receive مجموع مبالغی که کاربر تاکنون برای این سفارش پرداخت کرده است.
sum_return_sale مبلغی که بابت استرداد (کنسلی) باید به کاربر برگشت داده شود (یا شده است).
sum_penalty_sale مبلغ جریمه کنسلی.
balance_received تراز مالی سفارش (اگر 0 باشد یعنی تسویه شده، مثبت یا منفی نشان‌دهنده بدهی یا بستانکاری است).