#P1590
GET /v2/wallet/transactions
Route Info
| Method | Endpoint | Controller |
| GET | /v2/wallet/transactions | AccountingController@transactionsWallet |
شرح عملکرد (Functionality)
این متد برای دریافت لیست تراکنشهای کیف پول استفاده میشود و دادهها را پس از پردازش سنگین (شامل joinهای متعدد، تبدیل دادهها، تعیین subject/object/operator، لینکدهی رزرو و فاکتور، و ساخت ساختار نهایی) برمیگرداند.
- صفحهبندی (Pagination) به صورت دستی با پارامترهای
startوlengthانجام میشود. - اگر پارامتر
branch != 1باشد، فقط تراکنشهای همان شعبه برگشت داده میشوند. - اگر
branch == 1باشد، تمام تراکنشهای کل سیستم برگردانده میشود (نقص امنیتی جدی). - برای هر رکورد بین 5 تا 8 کوئری دیتابیس زده میشود (N+1 Query) که در مقیاس بزرگ بسیار کند است.
پارامترهای ورودی (Query + Body)
Query Params
?branch=101
- branch: اگر مقدار 1 باشد → هیچ فیلتری اعمال نمیشود و کل دادهها خوانده میشوند.
Body Params (paginate)
{
"paginate": {
"start": 0,
"length": 20
}
}
- start: عدد offset
- length: تعداد آیتم در هر صفحه (اگر صفر باشد → خطای تقسیم بر صفر)
خروجی (Response)
موفق (Success)
{
"items": [
{
"id": 10023,
"subject": "خرید از هاب توسط دفتر ایکس",
"object": "دفتر ایکس (1023)",
"credit": 500000,
"debit": 0,
"description": "متن توضیحات | رفرنس ...",
"operator": {
"id": 4,
"text": "1234 - علی رضایی",
"query": { ... }
},
"service": "دفتر سرویس",
"sub_service": "دفتر زیرسرویس",
"details": { ... },
"confirm_at": "2024-06-15 12:11:05",
"confirm_note": null,
"confirm_by": { ... }
}
],
"meta": {
"timestamp": 1715780023,
"table": {
"total": 200,
"per_page": 20,
"current_page": 1,
"last_page": 10,
"from": 1,
"to": 20
}
}
}
خطا (Error)
در صورت بروز Exception (مثلاً موارد زیر):
- نبودن فیلد paginate
- صفر بودن length
- خراب بودن داده Redis
- وجود نداشتن رزرو/فاکتور/اپراتورهای مورد نیاز
- N+1 Query timeout
{
"error": {
"code": 500,
"message": "Exception message...",
"trace": [ ... ]
}
}
`