Skip to main content
#P1558

GET /api/v2/tasks/list

Route Info

Method Endpoint Controller Middleware
GET /api/v2/tasks/list OfficialController@listTasks authWithJwt

معماری و منطق پردازش (Processing Logic & Architecture)

این متد لیست وظایف را با مکانیزم Lazy Loading دستی آماده‌سازی می‌کند. پس از دریافت کردهرکوردهای خام از جدول tasks_items، سیستم طی یک فرآیند Post-Processing روی هر آیتم حلقه زده و باتوابع استفادهHelper از دو تابع کمکی، اطلاعات آناستاتیک را تکمیلفراخوانی می‌کند:

  1. شناساییOperator اپراتورهاResolution (Operator Resolution):
    فراخوانی متد StaticController::getOperators.):

    شناسه‌های کاربران (چه سازنده و چه اپراتورهای مسئول) به این تابع ارسال می‌شوند. تابع ابتدا ورودی را استانداردنرمال‌سازی کرده و(تبدیل رشته JSON یا عدد به آرایه)، سپس با کوئری whereIn از جدول operators اطلاعات را واکشی می‌خواند.کند. خروجی شامل:شامل

      یک
    • فیلدرشته textفرمت‌شده (ترکیبtext) شناسهبرای پرسنلینمایش سریع و نامیک برای نمایش).
    • آبجکت query (جزئیاتحاوی کاملتمام دیتابیس).
    • فیلدهای
    هویتی و سازمانی کاربر است.

  2. مدیریتConnection اتصالاتHydration (Connectionمتد Hydration)OfficialController::getConnection):

    اگر تسک به جایییک موجودیت خارجی (مثل رفرنس فروش) متصل باشد، متداین OfficialController::getConnectionتابع اجرا می‌شود. برای نوع reference، سیستم ابتدا کشسعی می‌کند اطلاعات مالی را از Redis رابخواند. چکدر می‌کند.صورت اگرعدم دیتاوجود نبود،در تابعکش مالی(Cache Miss)، متد TradeController::financial اجرا شده و نتیجه در Redis کش می‌شود.شود تا سربار محاسبات مالی در فراخوانی‌های بعدی کاهش یابد.

ساختار پاسخ (Response Structure)

خروجی زیر دقیقاً بر اساس توابع getOperators و getConnection که ارائه کردید بازسازی شده است:

{
  "status": true,
  "time": 1732047000,
  "data": [
    {
      "id": 105,
      "title": "پیگیری رفرنس ۱۲۵۰",
      "category": {
        "id": 12,
        "title": "مالی"مالی و حسابداری"
      },
      
      // Createdخروجی byدقیق getOperators برای فیلد user (سازنده)
      "user": [
        {
          "id": 50,
          "text": "10050 - Aliعلی Mohammadi"محمدی",
          "query": {
            "id": 50,
            "sex": "male",
            "first_name": "Ali"علی",
            "last_name": "Mohammadi"محمدی",
            "telegram": "ali_dev",
            "group": "IT",
            "avatar": "path/to/avatar.jpg",
            "position": "Developer"مدیر فنی",
            "personnel_id": "10050"
          }
        }
      ],

      // Createdخروجی byدقیق getOperators برای فیلد operators (مسئولین انجام)
      "operators": [
        {
          "id": 51,
          "text": "10051 - Rezaرضا Alavi"علوی",
          "query": {
            "id": 51,
            "sex": "male",
            "first_name": "Reza"رضا",
            "last_name": "Alavi"علوی",
            "telegram": "reza_acc",
            "group": "Accounting",
            "avatar": null,
            "position": "حسابدار ارشد",
            "personnel_id": "10051"
          }
        }
      ],

      // Createdخروجی byدقیق getConnection (Redisدر +صورتی TradeController)که تسک به رفرنس متصل باشد)
      "connection": [
        {
          "id": 2050,
          "type": "reference",
          "title": "تور کیش - هتل داریوش", // خوانده شده از Redis
          "financial": {
             // آبجکت بازگشتی از TradeController::financial
             "total_price": 50000000,
             "paid": 20000000,
             "remaining": 30000000,
             "status": "debtor"
          }
        }
      ],

      "priority": 1,
      "order": 0,
      "description": "لطفا مانده حساب این رفرنس با مشتری چک شود.",
      "deadline": "2025-02-20",
      "status": 1,
      "created": "2025-02-18 10:30:00"
    }
  ]
}