From: fomichev Date: Thu, 26 Dec 2024 14:45:06 +0000 (+0300) Subject: Правки по ватсапу и звонку X-Git-Tag: 1.7~94^2~24 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=0b3388392b38d683b3999f7d47f4b946108bfc07;p=erp24_rep%2Fyii-erp24%2F.git Правки по ватсапу и звонку --- diff --git a/erp24/records/Users.php b/erp24/records/Users.php index 5d0a0859..2bd28af6 100755 --- a/erp24/records/Users.php +++ b/erp24/records/Users.php @@ -506,13 +506,13 @@ class Users extends \yii\db\ActiveRecord return $type === 'whatsapp' ? self::processWhatsappKogort($kogortData, $startDate) - : self::processCallKogort($kogortData, $startDate); + : self::processCallKogort(self::processWhatsappKogort($kogortData, $startDate), $startDate); } /** * Обработка выборки для WhatsApp когорты */ - private static function processWhatsappKogort(array $phones, string $startDate): array + private static function processWhatsappKogort(array $targetPhones, string $startDate): array { $messagesSettings = UsersMessageManagement::find() ->where(['active' => 1]) @@ -520,11 +520,14 @@ class Users extends \yii\db\ActiveRecord $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10; $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4; - $usersQuery = UsersTelegram::find()->andWhere(['phone' => $phones]); - $usersQuery->andWhere(['is_blocked' => 0]); - $usersQuery->andWhere(['is_registered' => 1]); + $excludeRegistered = UsersTelegram::find() + ->where(['is_blocked' => 0, 'is_registered' => 1]) + ->distinct('phone') + ->select('phone') + ->column(); + $excludeSalesPhone = Sales::find() ->where(['>=', 'date', date('Y-m-d', strtotime("$startDate -$step1 days"))]) ->andWhere(['<=', 'date', date('Y-m-d', strtotime("$startDate -$step2 days"))]) @@ -532,16 +535,15 @@ class Users extends \yii\db\ActiveRecord ->select('phone') ->column(); - $usersQuery->andWhere(['not in', 'phone', $excludeSalesPhone]) - ->distinct('phone') - ->select('phone'); - return $usersQuery->column(); + $whatsappPhones = array_diff($targetPhones, $excludeRegistered); + + return array_diff($whatsappPhones, $excludeSalesPhone); } /** * Обработка выборки для Call когорты */ - private static function processCallKogort(array $phones, string $startDate): array + private static function processCallKogort(array $whatsappPhones, string $startDate): array { $messagesSettings = UsersMessageManagement::find() ->where(['active' => 1]) @@ -550,11 +552,6 @@ class Users extends \yii\db\ActiveRecord $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4; $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2; - // Подзапрос базы пользователей с учетом подписки на телеграм - $usersQuery = UsersTelegram::find()->andWhere(['phone' => $phones]); - $usersQuery->andWhere(['is_blocked' => 0]); - $usersQuery->andWhere(['is_registered' => 1]); - // Исключаем телефоны с продажами в период от 4 до 2 дней до даты $excludeSalesPhone = Sales::find() ->where(['>=', 'date', date('Y-m-d', strtotime("$startDate -$step2 days"))]) @@ -563,9 +560,8 @@ class Users extends \yii\db\ActiveRecord ->select('phone') ->column(); - $usersQuery->andWhere(['not in', 'phone', $excludeSalesPhone]); - return $usersQuery->column(); + return array_diff($whatsappPhones, $excludeSalesPhone); } public static function saveKogort(array $phones, string $startDate, int $kogort_number): array