#P1790
GET /b2c/v1/trade/list
User Trade History (List Orders)
این اندپوینت لیست تمامی سفارشات و فاکتورهای کاربر (B2C) یا همکار (B2B) را بازمیگرداند.
اطلاعات مالی، وضعیت پرداخت و جزئیات محصول (پرواز، هتل و...) برای هر سفارش محاسبه و ارسال میشود.
List User Trades
URL:
/b2c/v1/trade/listMethod: GET
Controller: V1TradeController@listTrade
Middleware:
authWithJwt (Required)Business Logic (منطق تجاری)
- شناسایی کاربر (User Identification):
- بر اساس توکن JWT، نوع کاربر (
group) و اطلاعات کاربر (operator) استخراج میشود. - اگر گروه کاربر
b2bیاcolleagueباشد، فیلتر بر اساسcolleague_authانجام میشود. - در غیر این صورت (مسافر عادی)، فیلتر بر اساس ستون
customerانجام میشود.
- بر اساس توکن JWT، نوع کاربر (
- فیلتر سفارشات (Query Factors):
- سفارشاتی که وضعیت (status) آنها 2 یا 5 باشد، از لیست حذف میشوند (
whereNotIn). - لیست بر اساس شناسه (ID) به صورت نزولی (جدیدترین به قدیمیترین) مرتب میشود.
- سفارشاتی که وضعیت (status) آنها 2 یا 5 باشد، از لیست حذف میشوند (
- غنیسازی دادهها (Data Enrichment Loop):
برای هر فاکتور یافت شده عملیات زیر انجام میشود:- عنوان (Redis): تلاش برای دریافت عنوان فارسی سفارش از کلید Redis:
reference:{id}:information:title:fa. - نوع محصول: استخراج
productوbyproductاز جدولfactor_items. - محاسبات مالی: اگر عنوان در Redis موجود باشد، تابع
ApiTradeController::financialفراخوانی شده تا وضعیت مالی دقیق (فروش، جریمه، پرداختی و مانده) محاسبه شود.
- عنوان (Redis): تلاش برای دریافت عنوان فارسی سفارش از کلید Redis:
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 باشد یعنی تسویه شده، مثبت یا منفی نشاندهنده بدهی یا بستانکاری است). |