Skip to main content
#P1419

POST /api/v2/pledger/update

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/pledger/update V2TradeController@updatePledger authWithJwt ویرایش اطلاعات تعهدکننده موجود در جدول pledgers

منطق عملکرد

  • بررسی مبلغ مشابه با متد ذخیره: اگر صفر یا تهی → بازگرداندن خطای ۵۰۰۴.
  • داده‌های جدید برای فیلدهای type، serial_id و amount ساخته می‌شود.
  • داده‌ی قبلی از جدول pledgers واکشی و تفاوت‌ها با Functions::arrayDiff() محاسبه می‌شود.
  • به‌روزرسانی رکورد، سپس ثبت رخداد UpdatePledger در صف snailJob و بروزرسانی سریع Redis.

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

نام نوع ضروری توضیح
pledger_id integer بله شناسه‌ی رکورد فعلی در جدول pledgers
pledger string بله رشته‌ی نوع-شناسه‌ی تعهدکننده جدید
amount string / integer بله مبلغ جدید تعهد
serial_id integer بله شناسه فاکتور برای انتقال داده مالی
{
  "pledger_id": 582,
  "pledger": "operator-19",
  "amount": "8,500,000",
  "serial_id": 10234
}

ساختار خروجی

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

ناموفق:
{
  "status": false,
  "code": 5004,
  "message": "تعهد باید دارای مبلغ باشد"
}

امنیت

  • JWT لازم است.
  • اپراتورِ جاری از درون Request استخراج شده ($request->get('operator')).

وابستگی‌ها

  • DB: table pledgers
  • Functions::arrayDiff()
  • SystemLog Queue (type=UpdatePledger)
  • UpdateRedis Queue

کارایی

فرآیند دوبخشی خواندن→ویرایش→ارسال به صف، با میانگین زمان اجرا ۳۰–۴۰ ms.

مدیریت خطا

  • کد ۵۰۰۴ برای مبلغ صفر.
  • درصورت عدم وجود pledger_id پاسخ HTTP 200 ولی status=false.

اثرات جانبی

  • ثبت Log از تغییرات (داده‌ی پیشین در فیلد data در SystemLog).
  • بروزرسانی Redis در سه بخش اطلاعاتی.

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

تغییرات پیمایش‌پذیر هستند: تمامی مقادیر قبل از ویرایش در لاگ ذخیره می‌شوند تا تاریخچه بازیابی‌پذیر باشد.

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

  • اعمال Validation لاراول برای کنترل exists:pledgers,id.
  • ذخیره operator_id در جدول pledgers برای هم‌سوسازی با ردپای حسابرسی.

جمع‌بندی

این Endpoint عملیات ویرایش تعهدکننده را انجام می‌دهد و با ثبت دقیق تفاوت‌ها در SystemLog، بخشی از شفافیت مالی سیستم را تضمین می‌کند.