]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Тестирование отправки из когорт
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 5 Mar 2025 15:03:15 +0000 (18:03 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 5 Mar 2025 15:03:15 +0000 (18:03 +0300)
erp24/commands/CronController.php
erp24/records/Users.php

index 09f52b9d403b5203891432b8d97c1e35f1d50bae..7f1c12dbc8effad72fac8ac00bf16fdf6b1b26cb 100644 (file)
@@ -29,6 +29,7 @@ use yii_app\records\UsersMessageManagement;
 use yii_app\records\UsersTelegram;
 use yii_app\records\UsersTelegramLog;
 use yii_app\services\TelegramService;
+use yii_app\services\WhatsAppService;
 
 class CronController extends Controller
 {
@@ -765,14 +766,39 @@ class CronController extends Controller
                 BaseConsole::FG_GREEN
             );
 
-            $channel = self::getChannelByName('WABA');
+            $channel = WhatsAppService::getChannelByName('WABA');
             $limit = $channel['messagingLimit'] ?? 250;
 
-            if (!empty($phonesArray)) {
+            $salesData = Sales::find()
+                ->select([
+                    'phone',
+                    'dealsCount' => 'COUNT(*)'
+                ])
+                ->where(['phone' => $phonesArray])
+                ->groupBy('phone')
+                ->asArray()
+                ->indexBy('phone')
+                ->all();
+
+            $phoneSales = [];
+            foreach ($phonesArray as $phone) {
+                $phoneSales[$phone] = $salesData[$phone]['dealsCount'] ?? 0;
+            }
+            arsort($phoneSales);
+            $sortedPhones = array_keys($phoneSales);
+
+            $phonesToSend = null;
+            if ($countWhatsappPhones > $limit) {
+                $phonesToSend = $sortedPhones;
+            } else {
+                $phonesToSend = $phonesArray;
+            }
+
+            if (!empty($phonesToSend)) {
                 $messageText = $messagesSettings
                     ->replaceShortcodes($messagesSettings->offer_whatsapp, $targetDate);
                 $phonesSentArray = [];
-                foreach ($phonesArray as $index => $phone) {
+                foreach ($phonesToSend as $index => $phone) {
                     if ($index >= $limit) {
                         break;
                     }
index ac38ea2599823b4fac99156139aac3d62faf157d..00b8faf8a6f5f73de11a434fb2b330315c7f06b7 100755 (executable)
@@ -561,9 +561,27 @@ class Users extends \yii\db\ActiveRecord
         }
 
         $whatsappPhones = array_diff(array_diff($targetPhones, $excludeRegistered), $excludeSalesPhone);
+        if (!empty($messagesSettings->test_phones_list)) {
+            if (
+                isset($messagesSettings->test_phones_active)
+                &&
+                $messagesSettings->test_phones_active == 0
+            ) {
+                $testPhones = array_map('trim', explode(',', $messagesSettings->test_phones_list));
+                $whatsappKogortData = array_merge($whatsappPhones, $testPhones);
+            } else {
+                $testPhones = array_map('trim', explode(',', $messagesSettings->test_phones_list));
+                $whatsappKogortData = $testPhones;
+            }
+        } else {
+            if ($messagesSettings->test_phones_active == 1) {
+                $whatsappKogortData = [];
+            }
+        }
+
         $secondTarget = array_diff($excludeRegistered, $excludeSalesPhone);
 
-        return ['whatsapp' => $whatsappPhones, 'secondTarget' => $secondTarget];
+        return ['whatsapp' => $whatsappKogortData, 'secondTarget' => $secondTarget];
     }
 
     /**