Skip to main content
#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 فوق ساده، سریع و قابل اطمینان است. حذف منطقی داده و ثبت هم‌زمان لاگ‌ باعث حفظ شفافیت و هماهنگی کامل بین دیتابیس و کش می‌شود.