🏆 دليل دمج حدث "المحارب السوبر"

هذا الملف يوضح لمطوري الموبايل (iOS / Android) جميع المسارات (APIs) والأحداث المباشرة (WebSockets) التي يجب استخدامها لبناء شاشات حدث "المحارب السوبر" بشكل كامل وتفاعلي.

1. جلب تفاصيل الحدث وحالة الجاكبوت

يجلب بيانات الحدث الأساسية مثل (وقت البدء، الانتهاء، وقيمة الجاكبوت الحالية لتشويق المستخدمين).

GET /api/v1/events/super-warrior/info

الاستجابة الناجحة (200 OK)

{
  "success": true,
  "data": {
    "is_active": true,
    "starts_at": "2026-04-01 00:00:00",
    "ends_at": "2026-04-30 23:59:59",
    "jackpot_current_value": 2005000,
    "event_gifts": [
      {
        "id": 93,
        "name": "سيف المحارب",
        "price": 100,
        "image_url": "https://..."
      }
    ]
  }
}

2. جلب حالة المواجهة المباشرة للمستخدم (تحدي اليوم)

يعرض بيانات المواجهة الحالية الخاصة بالمستخدم ليومنا هذا، بالإضافة إلى نقاطه ونقاط خصمه.

الاعتمادية: يتطلب إرسال الـ Bearer Token الخاص بالمستخدم.

GET /api/v1/events/super-warrior/my-battle

الاستجابة الناجحة (200 OK)

{
  "success": true,
  "data": {
    "has_battle": true,
    "battle_id": 150,
    "my_info": {
      "id": 500,
      "name": "علي",
      "image": "https://...",
      "points": 5000
    },
    "opponent_info": {
      "id": 850,
      "name": "محمود",
      "image": "https://...",
      "points": 3400
    },
    "is_winning": true
  }
}

3. جلب الترتيب العام التراكمي (أكبر الداعمين)

جلب قائمة المتصدرين في الحدث (يعرض أول 100 متسابق).

GET /api/v1/events/super-warrior/rankings

الاستجابة الناجحة (200 OK)

{
  "success": true,
  "data": [
    {
      "rank": 1,
      "user_id": 500,
      "name": "علي",
      "uid": 500,
      "image": "https://...",
      "total_points": 340000
    },
    {
      "rank": 2,
      "user_id": 780,
      "name": "سعد",
      "uid": 780,
      "image": "https://...",
      "total_points": 280000
    }
  ]
}

4. جلب نتائج مواجهات الأمس (لوحة الشرف)

GET /api/v1/events/super-warrior/yesterday-battles

الاستجابة الناجحة (200 OK)

{
  "success": true,
  "data": [
      {
         "user1": {"name": "أحمد", "points": 1000},
         "user2": {"name": "خالد", "points": 500},
         "winner_id": 12,
         "is_top_ten": true
      }
  ]
}

5. أحداث الوقت الفعلي المباشرة (WebSockets / Swoole)

لتصميم تجربة حماسية داخل الغرفة الصوتية (Room)، يجب على التطبيق الاستماع للأحداث المباشرة لتحديث عداد المواجهة (UI) في الحال عندما يرسل أي من المتنافسين هدية!

Event Name: SuperWarriorBattleUpdated

قنوات الاستماع (Channels)

قناة الغرفة

room.{room_id}

القناة الخاصة

user.{user_id}

شكل البيانات المستقبلة (Payload)

عندما يقوم المستخدم بإرسال الهدية المشاركة بالحدث، سيستقبل تطبيق الموبايل هذا الإشعار مباشرة لتحديث العداد:

{
  "event": "SuperWarriorBattleUpdated",
  "data": {
    "battle_id": 150,
    "user1_id": 500,
    "user1_points": 5500,
    "user2_id": 850,
    "user2_points": 3400,
    "sender_id": 500,
    "points_added": 500
  }
}

6. ملاحظات

  • غياب الخصم: إذا أعاد my-battle الرد بأن has_battle: false، فهذا يعني أن المستخدم خارج المواجهات لهذا اليوم (بسبب عدم تواجده البارحة)، ويجب إظهار رسالة "ادعم الآن وكن متواجداً لتدخل المنافسة غداً!".