From 3b3e3b3b642c8eacb52577e7ac6fe64c1f6a5911 Mon Sep 17 00:00:00 2001 From: fomichev Date: Thu, 23 Jan 2025 17:38:29 +0300 Subject: [PATCH] =?utf8?q?=D0=92=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=D0=BE?= =?utf8?q?=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BD=D0=B0=20?= =?utf8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B5=20=D0=BF=D1=80?= =?utf8?q?=D0=BE=D1=81=D0=BC=D0=BE=D1=82=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../UsersMessageManagementController.php | 139 +++--------------- erp24/records/UsersMessageManagement.php | 11 +- .../users-message-management/view-kogort.php | 28 ++-- 3 files changed, 49 insertions(+), 129 deletions(-) diff --git a/erp24/controllers/UsersMessageManagementController.php b/erp24/controllers/UsersMessageManagementController.php index 04b33ea6..97fbc85e 100644 --- a/erp24/controllers/UsersMessageManagementController.php +++ b/erp24/controllers/UsersMessageManagementController.php @@ -287,11 +287,28 @@ class UsersMessageManagementController extends Controller $data = Users::prepareDataForExport($dataKogort, $date, $type); $messagesSettings = UsersMessageManagement::find()->one(); - $message = ''; - if ($messagesSettings && $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]}) { - $message = $messagesSettings->replaceShortcodes( - $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]}, $targetDate->target_date - ); + $messages = []; + + if ($messagesSettings) { + $messageType = UsersMessageManagement::TYPE_MESSAGE[$type]; + + if (is_array($messageType)) { + foreach ($messageType as $field) { + if (!empty($messagesSettings->{$field})) { + $messages[$field] = $messagesSettings->replaceShortcodes( + $messagesSettings->{$field}, + $targetDate->target_date + ); + } + } + } else { + if (!empty($messagesSettings->{$messageType})) { + $messages[] = $messagesSettings->replaceShortcodes( + $messagesSettings->{$messageType}, + $targetDate->target_date + ); + } + } } $models = ArrayHelper::index($data, 'phone'); @@ -307,7 +324,7 @@ class UsersMessageManagementController extends Controller 'date' => $date, 'targetDate' => $targetDate, 'type' => $type, - 'message' => $message, + 'messages' => $messages, ]); } @@ -404,114 +421,4 @@ class UsersMessageManagementController extends Controller return ['success' => false, 'message' => 'Invalid request']; } - - public function actionSyncTelegramUsers() - { - $remoteDb = Yii::$app->dbRemote; - $batchSize = 500; - $offset = 0; - - //$csvFilePath = Yii::getAlias('@data/missing_users.csv'); - //$fileHandle = fopen($csvFilePath, 'w'); - //fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';'); - - while (true) { - $chatbotUsers = $remoteDb - ->createCommand('SELECT * FROM chatbot_telegram_users LIMIT :limit OFFSET :offset', [ - ':limit' => $batchSize, - ':offset' => $offset, - ])->queryAll(); - - if (empty($chatbotUsers)) { - break; - } - if ($offset == 1500) { - break; - } - - foreach ($chatbotUsers as $remoteUser) { - $phone = $remoteUser['phone']; - $chatId = $remoteUser['chat_id']; - $username = $remoteUser['username']; - $firstName = $remoteUser['first_name']; - $isBlocked = (int)$remoteUser['is_blocked']; - $isRegistered = (int)$remoteUser['is_registered']; - - $user = UsersTelegram::findOne(['chat_id' => $chatId]); - - if (!$user) { - $user = new UsersTelegram([ - 'chat_id' => $chatId, - 'phone' => $phone, - 'username' => $username ?? 'Клиент из чатбота', - 'first_name' => $firstName ?? 'Клиент из чатбота', - 'is_blocked' => $isBlocked, - '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); - - if (empty($phone)) { - // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); - continue; - } - - $existingLog = UsersTelegramLog::find() - ->where(['phone' => $phone, 'date_end' => null]) - ->one(); - - if ($existingLog) { - if ( - $existingLog->is_blocked != $isBlocked || - $existingLog->is_registered != $isRegistered - ) { - $existingLog->date_end = date('Y-m-d H:i:s'); - $existingLog->save(false); - - $this->createTelegramLog($phone, $isBlocked, $isRegistered); - } - } else { - $this->createTelegramLog($phone, $isBlocked, $isRegistered); - } - - - } - - $offset += $batchSize; - - } - - // fclose($fileHandle); - - return 'ok'; - } - - /** - * Создает новую запись в таблице users_telegram_log. - * - * @param string $phone - * @param int $isBlocked - * @param int $isRegistered - */ - protected function createTelegramLog($phone, $isBlocked, $isRegistered) - { - $log = new UsersTelegramLog([ - 'phone' => $phone, - 'is_blocked' => $isBlocked, - 'is_registered' => $isRegistered, - 'active' => ($isBlocked == 0 && $isRegistered == 1) ? 1 : 0, - ]); - $log->save(false); - } } diff --git a/erp24/records/UsersMessageManagement.php b/erp24/records/UsersMessageManagement.php index d17f782b..a8b69e79 100644 --- a/erp24/records/UsersMessageManagement.php +++ b/erp24/records/UsersMessageManagement.php @@ -41,10 +41,17 @@ class UsersMessageManagement extends \yii\db\ActiveRecord const TYPE_CALL = 'call'; const TYPE_MESSAGE = [ - 'target' => 'offer_1', - 'whatsapp' => 'offer_whatsapp', + 'target' => ['offer_1', 'offer_text'], + 'whatsapp' => ['offer_whatsapp', 'offer_2'], 'call' => 'offer_text', ]; + + const TYPE_MESSAGE_LABELS = [ + 'offer_1' => 'Первое сообщение в чатбот', + 'offer_text' => 'Сообщение когорты Таргет', + 'offer_whatsapp' => 'Сообщение когорты Whatsapp', + 'offer_2' => 'Второе сообщение в чатбот', + ]; /** * {@inheritdoc} */ diff --git a/erp24/views/users-message-management/view-kogort.php b/erp24/views/users-message-management/view-kogort.php index 85dc4582..31408d89 100644 --- a/erp24/views/users-message-management/view-kogort.php +++ b/erp24/views/users-message-management/view-kogort.php @@ -3,13 +3,14 @@ use yii\grid\GridView; use yii\helpers\ArrayHelper; use yii\helpers\Html; +use yii_app\records\UsersMessageManagement; /** @var yii\data\ActiveDataProvider $dataProvider */ /** @var string $date */ /** @var string $targetDate */ /** @var string $type */ -/** @var string $message */ +/** @var array $messages */ $this->title = 'Когорта пользователей'; $this->params['breadcrumbs'][] = $this->title; @@ -25,11 +26,8 @@ $columns = array_map(function ($attribute) { ]; }, $attributes); array_unshift($columns, ['class' => 'yii\grid\SerialColumn']); -if ($message == '') { - $message = Html::a('Нет сообщения для рассылки - сформируйте ее в интерфейсе', ['index'], ['class' => 'btn btn-link']); -} else { - $message = Html::encode($message); -} + + ?> 'btn btn-primary m-5']) ?> @@ -42,22 +40,30 @@ if ($message == '') {
+ $message) { + if ($message == '') { + $message = Html::a('Нет сообщения для рассылки - сформируйте ее в интерфейсе', ['index'], ['class' => 'btn btn-link']); + } else { + $message = Html::encode($message); + } +?>
-
+
-

-

-
+
+
-- 2.39.5