]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
рефакторинг
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 23 Jan 2025 10:10:12 +0000 (13:10 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 23 Jan 2025 10:10:12 +0000 (13:10 +0300)
erp24/commands/CronController.php

index b3174e044a1c37cf011bb700af04d5c3bf245255..be672657ecafc65d4f1f30653671b3db62ccd409 100644 (file)
@@ -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()