Skip to main content
#P1420

POST /api/v2/pledger/delete

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/pledger/delete V2TradeController@deletePledger authWithJwt حذف رکورد تعهدکننده از جدول pledgers

منطق عملکرد

  • اپراتور جاری از $request->get('operator') استخراج می‌شود.
  • با استفاده از id فیلد pledger_id، رکورد متناظر در جدول pledgers حذف می‌شود.
  • در صورت موفقیت حذف:
    • رخداد DeletePledger به صف snailJob با تأخیر ۱۰ دقیقه ارسال می‌گردد.
    • داده‌های مالی و اطلاعاتی در Redis از طریق UpdateRedis به‌روزرسانی می‌شوند.
  • در صورت بروز هرگونه استثنا، کد خطای ۵۰۰۳ بازگردانده شده و گزارش در Visa::AddSystemReport() ثبت می‌شود.

پارامترهای ورودی

نام نوع ضروری توضیح
pledger_id integer بله شناسه رکورد تعهدکننده جهت حذف
serial_id integer بله شناسه فاکتور برای sync با Redis
{
  "pledger_id": 582,
  "serial_id": 10234
}

ساختار خروجی

موفق:
{
  "status": true,
  "time": 1732027111
}

خطا:
{
  "status": false,
  "time": 1732027111,
  "code": 5003,
  "message": "SQLSTATE[23000]: Integrity constraint violation..."
}

امنیت

  • JWT الزامی است.
  • لاگ دسترسی از طریق SystemLog به‌صورت asynchronous ثبت می‌گردد.

وابستگی‌ها

  • DB::table('pledgers')
  • SystemLog Queue (type=DeletePledger)
  • UpdateRedis Job
  • Visa::AddSystemReport()

کارایی

عملیات حذف تک‌خطی، زمان متوسط <20 ms. صف‌ها به‌صورت ناهمگام اجرا می‌شوند.

مدیریت خطا

  • کد ۵۰۰۳ برای استثناهای SQL یا حذف غیرممکن.
  • ثبت کامل Trace در Visa SystemReport.

اثرات جانبی

  • آغاز دو صف مستقل (snailJob و fastJob).
  • عدم بازگردانی تراکنش (delete مستقیم بدون Transaction).

ردپای حسابرسی

جزئیات حذف در SystemLog ثبت می‌شود (goal=pledger_id ، by=operator_id).

پیشنهاد بهبود

  • اضافه کردن Transaction هنگام حذف اگر وابستگی به پرداخت‌ها وجود دارد.
  • اضافه کردن وضعیت soft delete.

جمع‌بندی

این Endpoint ساده‌ترین ولی حیاتی‌ترین عملیات حذف تعهد را مدیریت می‌کند و برای حفظ صحت داده‌ها در Redis و SystemLog از Jobهای مجزا بهره می‌گیرد.