From 70e1bd2bb631c0273fbf7ca1390a40f1fac1cb21 Mon Sep 17 00:00:00 2001 From: fomichev Date: Thu, 23 Jan 2025 13:10:12 +0300 Subject: [PATCH] =?utf8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80?= =?utf8?q?=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/commands/CronController.php | 83 ++++++++++++------------------- 1 file changed, 31 insertions(+), 52 deletions(-) diff --git a/erp24/commands/CronController.php b/erp24/commands/CronController.php index b3174e04..be672657 100644 --- a/erp24/commands/CronController.php +++ b/erp24/commands/CronController.php @@ -227,7 +227,7 @@ class CronController extends Controller $stepsBack = $this->stepsBack ?? $step1; // Генерация для прошлых дат (от текущей даты на $step1 дней назад) - for ($i = $stepsBack; $i > 0; $i--) { + for ($i = $stepsBack; $i >= 0; $i--) { $kogortDate = date('Y-m-d', strtotime("-$i days", strtotime($currentDate))); // Дата когорты $targetDate = date('Y-m-d', strtotime("+$step1 days", strtotime($kogortDate))); // Целевая дата @@ -252,30 +252,6 @@ class CronController extends Controller } } - // Генерация для текущей даты - $kogortDate = $currentDate; - $targetDate = date('Y-m-d', strtotime("+$step1 days", strtotime($kogortDate))); - - $kogortPhones = Users::formKogortByDateAndType($targetDate, 'target'); - - if (!empty($kogortPhones)) { - Users::saveKogort($kogortPhones, $kogortDate, $targetDate, SentKogort::KOGORT_NUMBERS['target']); - $this->stdout( - "Когорта таргета на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n", - BaseConsole::FG_GREEN - ); - $countPhones = count($kogortPhones); - $this->stdout( - "Всего телефонов в когорте {$countPhones} записей.\n", - BaseConsole::FG_GREEN - ); - } else { - $this->stdout( - "Нет данных для формирования когорты для целевой даты {$targetDate}.\n", - BaseConsole::FG_RED - ); - } - // Генерация для будущих дат (от текущей даты на $step1 дней вперёд) for ($i = 1; $i <= $step1; $i++) { $kogortDate = date('Y-m-d', strtotime("+$i days", strtotime($currentDate))); // Дата когорты @@ -387,6 +363,10 @@ class CronController extends Controller BaseConsole::FG_GREEN ); if (!empty($telegramUsers)) { + $messageText = $messagesSettings->replaceShortcodes( + $messagesSettings->offer_1, + $targetDate + ); foreach ($telegramUsers as $telegramUser) { if (!in_array($telegramUser['phone'], $sentStatusKogort)) { $messageData = []; @@ -395,10 +375,7 @@ class CronController extends Controller $messageData['kogort_date'] = $kogortDate; $messageData['target_date'] = $targetDate; $messageData['type'] = 1; - $messageData['message'] = $messagesSettings->replaceShortcodes( - $messagesSettings->offer_1, - $targetDate - ); + $messageData['message'] = $messageText; Yii::$app->queue->push(new SendTelegramMessageDBJob([ 'messageData' => $messageData, @@ -437,13 +414,14 @@ class CronController extends Controller $tip_sale = "target"; $name = "Начисление бонусов на дату {$kogortDate}"; $daysToEnd = $step1 + 1; + $userBonusExist = UsersBonus::find() + ->select(['phone']) + ->where(['phone' => $kogortPhones]) + ->andWhere(['tip_sale' => 'target']) + ->andWhere(['date_start' => $kogortDate]) + ->column(); foreach ($kogortPhones as $key => $phone) { - $userBonusExist = UsersBonus::find() - ->where(['phone' => $phone]) - ->andWhere(['tip_sale' => 'target']) - ->andWhere(['date_start' => $kogortDate]) - ->one(); - if (!$userBonusExist) { + if (!in_array($phone, $userBonusExist)) { $userBonus4 = new UsersBonus(); $userBonus4->phone = '' . $phone; $userBonus4->name = $name; @@ -645,6 +623,8 @@ class CronController extends Controller ); if (!empty($telegramUsers)) { + $messageText = $messagesSettings + ->replaceShortcodes($messagesSettings->offer_2, $targetDate); foreach ($telegramUsers as $telegramUser) { if (!in_array($telegramUser['phone'], $sentStatusKogort)) { $messageData = []; @@ -653,8 +633,7 @@ class CronController extends Controller $messageData['kogort_date'] = $kogortDate; $messageData['target_date'] = $targetDate; $messageData['type'] = 2; - $messageData['message'] = $messagesSettings - ->replaceShortcodes($messagesSettings->offer_2, $targetDate); + $messageData['message'] = $messageText; Yii::$app->queue->push(new SendTelegramMessageDBJob([ 'messageData' => $messageData, @@ -818,6 +797,10 @@ class CronController extends Controller } foreach ($chatbotUsers as $remoteUser) { + if (empty($phone)) { + // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); + continue; + } $phone = $remoteUser['phone']; $chatId = $remoteUser['chat_id']; $username = $remoteUser['username']; @@ -837,22 +820,18 @@ class CronController extends Controller 'is_registered' => $isRegistered, ]); $user->save(false); - } - if ( - $user->is_blocked != $isBlocked || - $user->is_registered != $isRegistered || - $user->phone != $phone - ) { - $user->is_blocked = $isBlocked; - $user->is_registered = $isRegistered; - $user->phone = $phone; - } - - $user->save(false); + } else { + if ( + $user->is_blocked != $isBlocked || + $user->is_registered != $isRegistered || + $user->phone != $phone + ) { + $user->is_blocked = $isBlocked; + $user->is_registered = $isRegistered; + $user->phone = $phone; + } - if (empty($phone)) { - // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); - continue; + $user->save(false); } $existingLog = UsersTelegramLog::find() -- 2.39.5