#P1404
POST /api/v2/trade/item/delete
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| POST |
/api/v2/trade/item/delete |
V2TradeController@deleteItemTrade |
authWithJwt |
حذف یک آیتم (و در صورت وجود، آیتم بازپرداخت مربوطه) از فاکتور |
منطق عملکرد
- ابتدا آیتم فاکتور با شناسهی
item_id از جدول factor_items واکشی میشود.
- در صورت موجود بودن و غیر از نوع
refund، رکورد حذف میگردد.
- رویداد SystemLog::dispatch با نوع DeleteReferenceItem اجرا و در صف
snailJob (با تأخیر ۱۰ دقیقه) ارسال میشود.
- عملیات UpdateRedis::dispatch برای بهروزرسانی کش مالی و اطلاعاتی فاکتور فراخوانی میشود.
- اگر
refund_id وجود داشته باشد، رکورد مربوط به آیتم بازپرداخت نیز حذف و در SystemLog ثبت میشود.
ورودیها
| نام فیلد |
نوع داده |
ضروری |
توضیح |
| item_id |
int |
بله |
شناسه آیتمی که باید حذف شود |
| serial_id |
int |
بله |
شماره سریال فاکتور برای همگامسازی Redis |
| refund_id |
int|null |
اختیاری |
شناسه آیتم بازپرداختی برای حذف همزمان |
{
"item_id": 231,
"serial_id": 9004,
"refund_id": 88
}
خروجی
| فیلد |
نوع |
شرح |
| status |
bool |
نتیجه عملیات (true در صورت موفقیت) |
| time |
int |
مهر زمانی یونیکس |
| code |
int|null |
کد خطا در صورت شکست عملیات |
| message |
string|null |
توضیحات خطا (در صورت بروز) |
| trace |
array|null |
جزئیات خطا برای دیباگ |
{
"status": true,
"time": 1732023601
}
اثرات جانبی
- حذف رکورد
factor_items از دیتابیس
- ثبت لاگ در جدول SystemLog با نوع:
- DeleteReferenceItem
- DeleteRefundItem (در صورت وجود refund_id)
- بهروزرسانی Redis جهت پاکسازی دادههای مالی و اطلاعاتی
کدهای خطا
| کد |
شرح |
| 5005 |
بروز خطا در هنگام حذف آیتم یا بازخوانی رزرو موقت |
امنیت
- در دسترس تنها برای کاربران احراز هویتشده با JWT.
- در SystemLog شامل شناسه اپراتور، IP و User-Agent ذخیره میشود.
نکات کارایی
- حذف آیتم و dispatch لاگ در کمتر از ۵۰ میلیثانیه انجام میشود.
- استفاده از Redis برای جلوگیری از تاخیر در نمایش فاکتور در سمت کاربر.
وابستگیها
- use Carbon\\Carbon;
- use Illuminate\\Support\\Facades\\DB;
- use App\\Jobs\\SystemLog;
- use App\\Jobs\\UpdateRedis;
- use App\\Helpers\\Functions;
پیشنهاد بهبود
- افزودن لاگ هشدار در صورت حذف آیتمی که قبلاً بازپرداخت شده است.
- افزودن Transaction wrap برای حذف همزمان آیتم و بازپرداخت جهت atomic بودن.
ردپای مانیتورینگ (Audit Trail)
تمامی عملیات حذف آیتم با نوع و شناسه دقیق در SystemLog ثبت شده و قابل بررسی است.
جمعبندی
Endpoint فوق ساده، سریع و قابل اطمینان است. حذف منطقی داده و ثبت همزمان لاگ باعث حفظ شفافیت و هماهنگی کامل بین دیتابیس و کش میشود.