#P1500
POST /financial/treeview
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| POST | /api/v2/financial/treeview | V2CreditDebitController@treeview | authWithJwt | واکشی ساختار درختی حسابهای مالی (کل، معین، تفضیلی) جهت نمایش سلسلهمراتبی در رابط کاربری. |
منطق عملکرد تابع
تابع treeview ساختار درختی آیتمهای مالی را بر اساس نوع درخواستشده (general، moeen، tafzili) و فیلترهای ورودی از دیتابیس دریافت میکند. سپس این دادهها را با فرمت استاندارد {id, title, subset[]}
کش Redis برای کاهش بار روی دیتابیس استفاده میشود؛ اگر دیتای مربوط پیشتر ذخیره شده باشد، از کش خوانده میشود، در غیراینصورت از پایگاهداده واکشی و کشگذاری میگردد.
ورودیها
| نام پارامتر | نوع | منبع | الزامی | توضیح |
| type | string | Body | بله | نوع آیتم مالی (مثل moeen یا general). |
| branch | integer | JWT/Header | بله | شناسه شعبه مالی. |
| filters | object | Body | خیر | فیلترهای اضافی برای محدودسازی نتایج. |
خروجی (Response)
{
"status": true,
"time": 1732287600,
"result": [
{
"id": 21,
"title": "بانکها",
"subset": [
{"id": 54, "title": "بانک ملی"},
{"id": 55, "title": "بانک ملت"}
],
"locked": false,
"display": true
}
]
}
نکات امنیتی
- احراز هویت JWT الزامی است.
- دسترسی مبتنی بر نقش:
financial.viewerضروری است. - نوع داده درخواستشده باید معتبر و مجاز باشد.
نکات عملکردی
- کش Redis با TTL پیشفرض 1800 ثانیه برای دادههای TreeView.
- استفاده از ایندکس مناسب روی ستونهای کلید خارجی (group, general, moeen_id).
- امکان واکشی زیرشاخهها بدون بارگذاری کل درخت.
وابستگیها
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Redis;
- use App\Helpers\Functions;
- use Carbon\Carbon;
کدهای خطا
| کد | شرح خطا | منبع |
| 400 | پارامتر type نامعتبر یا خالی. | Validator |
| 403 | عدم مجوز مشاهده ساختار مالی. | Auth Middleware |
| 500 | خطای داخلی دیتابیس یا Redis. | Exception Handler |
پیشنهادهای امنیتی
- محدود کردن دادهها به شعبه کاربر احرازشده.
- ثبت لاگ درخواستها برای تحلیل رفتار و امنیت.
پیشنهادهای بهبود
- افزودن پشتیبانی از Lazy Loading گرهها.
- اعمال فیلتر پیشرفته روی زیرشاخهها.
- کشگذاری جداگانه برای هر سطح درخت.
ممیزی و لاگها
- ثبت نوع آیتم درخواستشده، زمان واکشی، و شناسه شعبه.
- نگهداری لاگها به مدت ۳۰ روز در
audit_logs.
جمعبندی
تابع treeview زیرساختی امن و بهینه برای واکشی سلسلهمراتبی حسابهای مالی ارائه میدهد و با استفاده از کش و ایندکس، کارایی بالایی در پروژههای بزرگ مالی دارد.