#P1499
POST /check/operation/update
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| POST | /api/v2/check/operation/update | authWithJwt |
منطق عملکرد تابع
تابع updateCheckoperationUpdateCheck نخستبرای شناسهتغییر جزئیات یک عملیات ثبتشده روی چک رااستفاده میشود، مانند اصلاح نوع عملیات (type)، تاریخ اجرا، توضیحات یا وضعیت آن.
ابتدا رکورد عملیات از ورودی دریافت میکند، سپس دادههای موردنظر برای بروزرسانی را اعتبارسنجی کرده و در جدول payscheck_operationsثبتواکشی و اعتبارسنجی میکند.شود. اینسپس دادههاتغییرات ممکنذخیره استشده شاملو اصلاحهرگونه مبلغ،وابستگی تاریخمبلغ سررسید، شماره پیگیری،یا وضعیت فعال/مسدودچک وهماهنگ توضیحاتمیگردد. باشند.
دراز پایان، برای حفظ سازگاری در دادههای گزارش مالی،آن کش Redis مربوطمرتبط بهبا کلیدهایگزارش چک و check:{id}:informationمالی financial:branch:{branch}بازسازیشعبه ریفرش میشود.
ورودیها
| نام پارامتر | نوع | منبع | الزامی | توضیح |
| integer | Body | بله | شناسه عملیات چک |
|
| Body | ، ، |
|||
| date | string (YYYY-MM-DD) | Body | خیر | تاریخ جدید عملیات. |
| description |
string | Body | خیر | توضیحات عملیات. |
| branch | integer | JWT/Header | بله | شناسه شعبه مالی مرتبط. |
| operator | object | JWT | بله | |
خروجی (Response)
{
"status": true,
"time": 1732287600,
"result": {
"check_id"operation_id": 145,305,
"changes"updated_fields": ["amount"type", "deadline", "status"description"],
"cache": "financial:branch:5:refreshed",
"message": "اطلاعاتجزئیات عملیات چک با موفقیت بروزرسانی شد"
}
}
نکات امنیتی
احرازمجوزهویتنقش:JWTfinancial.check.operation.updateالزامیضروری است.مجوزرکوردنقش مالیعملیات بایدfinancial.check.updateبررسیبهشود.شعبه کاربر تعلق داشته باشد.ورودیهاتمامباتغییراتValidatorدرسمتجدولسرورممیزیتاییدaudit_logsذخیره میشوند تا از تزریق داده و تغییر غیرمجاز جلوگیری گردد.شود.
نکات عملکردی
بهروزرسانیعملیاتچکبروزرسانی در تراکنشپایگاه داده انجام میDB::transactionشود تا Atomic باشد.شود.- بازسازی کش
Redisمحدود بهدادههایاینتغییرچکیافتهوبرایشعبهجلوگیریانجاماز فشار غیرضروری است.میگیرد. - TTL کشهای
چکجدید:و300شعبه بهترتیب 60 و 600 ثانیه تعیین شدهاند.ثانیه.
وابستگیها
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Redis;
- use Carbon\Carbon;
- use App\Models\
Pay;CheckOperation; - use App\
Http\Controllers\TradeController; use App\Http\Controllers\StaticController;Helpers\Functions;
کدهای خطا
| کد | شرح خطا | منبع |
| 400 | Validator | |
| 403 | authWithJwt | |
| 404 | DB | |
| 500 | خطا در |
Exception Handler |
پیشنهادهای امنیتی
- اعمال تأیید دومرحلهای برای تغییرات حساس.
- ثبت IP و User-Agent اپراتور در لاگ ممیزی.
- اعمال محدودیت
زمانیتعدادبرای ویرایش چک پس از تسویه. رمزنگاری شناسه چکتغییر درسمتبازهکلاینت.زمانی مشخص.
پیشنهادهای بهبود
- افزودن
فیلدupdated_byبرای نمایش نام کاربر ویرایشگر در گزارشها. افزودن قابلیت ویرایش گروهی چکهای انتخابشده.- پشتیبانی از
ثبت تاریخچهنسخهبندی تغییرات(versioning) برای هرعملیات چک. - امکان بروزرسانی گروهی عملیاتهای مشابه.
- ارسال اعلان خودکار به ذینفعان در تغییر وضعیت عملیات.
ممیزی و لاگها
- نوع لاگ:
.UpdateCheckOperationUpdateCheck فیلدهای ذخیرهشده:فیلدها:.check_id,operation_id, branch, operator_id,branch,updated_fields,changes, reasontimestampسطحمدتلاگ:Audit.- نگهداری:
۹۰ روز۹۰در جدولaudit_logs.روز.
جمعبندی
تابع updateCheckoperationUpdateCheck بهصورتابزار ایمناصلی وبرای اتمیک اطلاعات چک را در جدول مالی بروزرسانی کرده و کشهای مرتبط را همزمان بازسازی میکند. پیادهسازی فعلی با تمرکز بر صحت تراکنش و یکپارچگیاصلاح دادههای مالیعملیات طراحیثبتشده شدهاست.روی چک است و با اعتبارسنجی، حفظ وابستگیها و بازسازی کشها دادهها را پایدار و بهروز نگه میدارد.