Update: 2026-08-07 01:53:09

This commit is contained in:
Hamza-Ayed
2026-08-07 01:53:09 +03:00
parent 5b864e30df
commit 9830e5f649
7 changed files with 289 additions and 26 deletions
+24 -2
View File
@@ -365,7 +365,12 @@ function notifyPassengerOnRideServer($passenger_id, $payload) {
// ============================================================================
// دالة توزيع الطلب (Dispatch Function) - النسخة المصححة
// ============================================================================
function dispatchRideToDrivers($driversData, $rideId, $payloadTemplate, $startNameLoc, $encryptionHelper, $extraFcmData = []) {
/**
* ‏$offerInfo — وسم العرض في الإسناد بالدفعات: ['exclusive', 5].
* ‏يُمرَّر فقط لصاحب السبق الحصري، ويُترك null في البثّ الحر فلا يتغيّر شيء.
* ‏الفهرسان 37 و38 يقرأهما OrderData.fromList في تطبيق السائق.
*/
function dispatchRideToDrivers($driversData, $rideId, $payloadTemplate, $startNameLoc, $encryptionHelper, $extraFcmData = [], $offerInfo = null) {
$countDrivers = count($driversData);
error_log("🚀 [DISPATCH_START] RideID: $rideId | Drivers Count: $countDrivers");
@@ -386,7 +391,19 @@ function dispatchRideToDrivers($driversData, $rideId, $payloadTemplate, $startNa
// تجهيز البيانات الخاصة بالسائق
$payloadForDriver = $payloadTemplate;
$payloadForDriver[6] = (string)$driverId;
$payloadForDriver[18] = (string)$driverId;
$payloadForDriver[18] = (string)$driverId;
// ‏وسم العرض للفهرسَين اللذين يقرأهما تطبيق السائق. الفهارس بينهما
// ‏قد تكون غير معرَّفة، فنملؤها بفراغ وإلا صارت القائمة متفرقة
// ‏(sparse) وخرجت من json_encode كخريطة لا كمصفوفة.
if ($offerInfo !== null) {
for ($i = count($payloadForDriver); $i < 37; $i++) {
$payloadForDriver[$i] = '';
}
$payloadForDriver[37] = (string)$offerInfo[0];
$payloadForDriver[38] = (string)$offerInfo[1];
ksort($payloadForDriver);
}
// 2. إرسال السوكيت
sendSocketNotification($driverId, $rideId, $payloadForDriver, $socketUrl, $internalKey);
@@ -400,6 +417,11 @@ function dispatchRideToDrivers($driversData, $rideId, $payloadTemplate, $startNa
// 🆕 Destination Match Indicator
$title = "طلب جديد 🔔";
if ($offerInfo !== null && $offerInfo[0] === 'exclusive') {
$title = "⭐ طلب خاص لك";
$fcmData['offer_type'] = 'exclusive';
$fcmData['offer_expires_in'] = (string)$offerInfo[1];
}
if (!empty($driver['is_destination_match'])) {
$title = "في طريقك! 📍";
$fcmData['is_destination_match'] = "1";