From 7d2160f528de643ade58e1c6c5d458be83bfbb69 Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 5 Mar 2025 18:03:15 +0300 Subject: [PATCH] =?utf8?q?=D0=A2=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?utf8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?utf8?q?=D0=BA=D0=B8=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=B3=D0=BE=D1=80?= =?utf8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/commands/CronController.php | 32 ++++++++++++++++++++++++++++--- erp24/records/Users.php | 20 ++++++++++++++++++- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/erp24/commands/CronController.php b/erp24/commands/CronController.php index 09f52b9d..7f1c12db 100644 --- a/erp24/commands/CronController.php +++ b/erp24/commands/CronController.php @@ -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; } diff --git a/erp24/records/Users.php b/erp24/records/Users.php index ac38ea25..00b8faf8 100755 --- a/erp24/records/Users.php +++ b/erp24/records/Users.php @@ -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]; } /** -- 2.39.5