Skip to main content
#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 زیرساختی امن و بهینه برای واکشی سلسله‌مراتبی حساب‌های مالی ارائه می‌دهد و با استفاده از کش و ایندکس، کارایی بالایی در پروژه‌های بزرگ مالی دارد.