]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Вторая рассылка в бот в когорте вотсапа
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 13 Jan 2025 09:34:03 +0000 (12:34 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 13 Jan 2025 09:34:03 +0000 (12:34 +0300)
docker-compose.yml
erp24/commands/CronController.php
erp24/jobs/SendTelegramMessageDBJob.php

index 1270314a829b52dd9a3f40c9d253eb0ff746ae6a..c7cb57e0e8666a407b7974addb8c92c46f9eddd3 100644 (file)
@@ -124,10 +124,7 @@ services:
       - "5432:5432"
     volumes:
       - pgsqldata:/var/lib/postgresql/data
-      - ./docker/db/postgresql.conf:/etc/postgresql/postgresql.conf
-      - ./logs:/var/log/postgresql
     env_file: ./docker/db/dev.db-pgsql.env
-    command: postgres -c config_file=/etc/postgresql/postgresql.conf
 
   pgadmin-yii_erp24:
     image: dpage/pgadmin4
index b781a07a6c6ccdc67bb63c7ff4085e98877d7560..e68f58c40f8a1c8bf5eeaa31a009258bd911fb8c 100644 (file)
@@ -239,6 +239,11 @@ class CronController extends Controller
                     "Когорта таргета на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
                     BaseConsole::FG_GREEN
                 );
+                $countPhones = count($kogortPhones);
+                $this->stdout(
+                    "Всего телефонов в когорте {$countPhones} записей.\n",
+                    BaseConsole::FG_GREEN
+                );
             } else {
                 $this->stdout(
                     "Нет данных для формирования когорты для целевой даты {$targetDate}.\n",
@@ -275,7 +280,7 @@ class CronController extends Controller
             $chatIdsArray = array_column($telegramUsers, 'chat_id');
             $countTelegramPhones = count($telegramUsers);
             $this->stdout(
-                "Всего телефонов в когорте {$countTelegramPhones} записей.\n",
+                "Всего телефонов в рассылке телеграма {$countTelegramPhones} записей.\n",
                 BaseConsole::FG_GREEN
             );
             if (!empty($telegramUsers)) {
@@ -359,6 +364,11 @@ class CronController extends Controller
                     "Когорта таргета на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
                     BaseConsole::FG_GREEN
                 );
+                $countPhones = count($kogortPhones);
+                $this->stdout(
+                    "Всего телефонов в когорте {$countPhones} записей.\n",
+                    BaseConsole::FG_GREEN
+                );
             } else {
                 $this->stdout(
                     "Нет данных для формирования когорты для целевой даты {$targetDate}.\n",
@@ -425,21 +435,47 @@ class CronController extends Controller
                     "Когорта для Вотсапа на {$kogortDate} для целевой даты {$targetDate} успешно создана.\n",
                     BaseConsole::FG_GREEN
                 );
+                $countPhones = count($kogortPhones['whatsapp']);
+                $this->stdout(
+                    "Всего телефонов в когорте {$countPhones} записей.\n",
+                    BaseConsole::FG_GREEN
+                );
 
                 if ($i == 0) {
                     // Выбираем номера для отправки через бота
-                    $telegramUsers =  $kogortPhones['secondTarget'];
-                    /*$this->stdout(
-                        count($telegramUsers) . "\n",
-                        BaseConsole::FG_RED
-                    );*/
+                   $telegramUsers = UsersTelegram::find()
+                        ->where(['is_blocked' => 0, 'is_registered' => 1])
+                        ->andWhere(['phone' => $kogortPhones['secondTarget']])
+                        ->select(['phone', 'chat_id'])
+                        ->asArray()
+                        ->all();
+                    $phonesArray = array_column($telegramUsers, 'phone');
+                    $chatIdsArray = array_column($telegramUsers, 'chat_id');
+                    $countTelegramPhones = count($telegramUsers);
+                    $this->stdout(
+                        "Всего телефонов в рассылке телеграма {$countTelegramPhones} записей.\n",
+                        BaseConsole::FG_GREEN
+                    );
                     if (!empty($telegramUsers)) {
+                        foreach ($telegramUsers as $telegramUser) {
+                            $messageData = [];
+                            $messageData['chat_id'] = $telegramUser['chat_id'];
+                            $messageData['phone'] = $telegramUser['phone'];
+                            $messageData['kogort_date'] = $kogortDate;
+                            $messageData['target_date'] = $targetDate;
+                            $messageData['type'] = 2;
+                            $messageData['message'] = $messagesSettings->replaceShortcodes($messagesSettings->offer_2);
+
+                            Yii::$app->queue->push(new SendTelegramMessageDBJob([
+                                'messageData' =>  $messageData,
+                            ]));
+                        }
                         $updatedCount = SentKogort::updateAll(
                             ['status' => SentKogort::STATUSES['second']], // Устанавливаем статус "вторая рассылка"
                             [
                                 'target_date' => $targetDate,
                                 'kogort_number' => SentKogort::KOGORT_NUMBERS['target'],
-                                'phone' => $telegramUsers,
+                                'phone' => $phonesArray,
                             ]
                         );
 
@@ -477,6 +513,11 @@ class CronController extends Controller
                     "Когорта для Вотсапа на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
                     BaseConsole::FG_GREEN
                 );
+                $countPhones = count($kogortPhones['whatsapp']);
+                $this->stdout(
+                    "Всего телефонов в когорте {$countPhones} записей.\n",
+                    BaseConsole::FG_GREEN
+                );
             } else {
                 $this->stdout(
                     "Нет данных для формирования когорты для целевой даты {$targetDate}.\n",
@@ -531,6 +572,11 @@ class CronController extends Controller
                     "Когорта звонка на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
                     BaseConsole::FG_GREEN
                 );
+                $countPhones = count($kogortPhones);
+                $this->stdout(
+                    "Всего телефонов в когорте {$countPhones} записей.\n",
+                    BaseConsole::FG_GREEN
+                );
             } else {
                 $this->stdout(
                     "Нет данных для формирования когорты для звонка на дату {$targetDate}.\n",
@@ -552,6 +598,11 @@ class CronController extends Controller
                     "Когорта звонка на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
                     BaseConsole::FG_GREEN
                 );
+                $countPhones = count($kogortPhones);
+                $this->stdout(
+                    "Всего телефонов в когорте {$countPhones} записей.\n",
+                    BaseConsole::FG_GREEN
+                );
             } else {
                 $this->stdout(
                     "Нет данных для формирования когорты для целевой даты {$targetDate}.\n",
index 087165f8ef841a955899219d72644b946c641b3e..d835725fc31d7f06f9ab4ac0bced9c8295343469 100644 (file)
@@ -22,7 +22,7 @@ class SendTelegramMessageDBJob extends \yii\base\BaseObject implements JobInterf
             self::$messagesSent = 0;
         }
 
-        if (self::$messagesSent >= 3) {
+        if (self::$messagesSent >= 30) {
             $delay = 1 - (microtime(true) - self::$lastResetTime);
             if ($delay > 0) {
                 usleep($delay * 1e6); // Спим оставшееся время