From 0422621ab95b0203787b04b4a5a9f25f927da826 Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 25 Dec 2024 10:51:45 +0300 Subject: [PATCH] =?utf8?q?=D0=A3=D0=B1=D0=B8=D1=80=D0=B0=D0=B5=D0=BC=20?= =?utf8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE?= =?utf8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20?= =?utf8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D1=8F=D0=B5=D0=BC=20=D0=B2?= =?utf8?q?=20=D1=84=D0=B0=D0=B9=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/commands/CronController.php | 68 +++++++++++++++++++------------ 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/erp24/commands/CronController.php b/erp24/commands/CronController.php index 50f141d2..db6e1f0e 100644 --- a/erp24/commands/CronController.php +++ b/erp24/commands/CronController.php @@ -360,6 +360,10 @@ class CronController extends Controller $batchSize = 500; $offset = 0; + $csvFilePath = Yii::getAlias('@runtime/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', [ @@ -377,33 +381,11 @@ class CronController extends Controller $username = $remoteUser['username']; $isBlocked = (int)$remoteUser['is_blocked']; $isRegistered = (int)$remoteUser['is_registered']; - - $user = Users::findOne(['phone' => $phone]); - - if (!$user) { - $user = new Users([ - 'phone' => $phone, - 'name' => $username ?: 'Клиент из чатбота', - 'date' => date('Y-m-d H:i:s'), - 'password' => '00000', - 'keycode' => '00000', - ]); - $user->save(false); + if (empty($phone)) { + fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); + continue; } - if (empty($user->telegram_chat_id)) { - $user->telegram_chat_id = $chatId; - } - - if ($isRegistered && $user->telegram_is_subscribed == 0) { - $user->telegram_is_subscribed = 1; - } elseif (!$isRegistered && $user->telegram_is_subscribed == 1) { - $user->telegram_is_subscribed = 0; - $user->telegram_unsubscribed_at = date('Y-m-d H:i:s'); - } - - $user->save(false); - $existingLog = UsersTelegramLog::find() ->where(['phone' => $phone, 'date_end' => null]) ->one(); @@ -421,14 +403,46 @@ class CronController extends Controller } else { $this->createTelegramLog($phone, $isBlocked, $isRegistered); } + + $user = Users::findOne(['phone' => $phone]); + + if (!$user) { + fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Пользователь не найден'], ';'); + continue; + /* $user = new Users([ + 'phone' => $phone, + 'name' => $username ?: 'Клиент из чатбота', + 'date' => date('Y-m-d H:i:s'), + 'password' => '00000', + 'keycode' => '00000', + ]); + $user->save(false);*/ + } + + if (empty($user->telegram_chat_id)) { + $user->telegram_chat_id = $chatId; + } + + if ($isRegistered && $user->telegram_is_subscribed == 0) { + $user->telegram_is_subscribed = 1; + } elseif (!$isRegistered && $user->telegram_is_subscribed == 1) { + $user->telegram_is_subscribed = 0; + $user->telegram_unsubscribed_at = date('Y-m-d H:i:s'); + } + + $user->save(false); } $offset += $batchSize; - $this->stdout("Обработано записей: {$offset}\n", Console::FG_GREEN); + $this->stdout("Обработано записей: {$offset}\n", BaseConsole::FG_GREEN); } - $this->stdout("Синхронизация завершена успешно.\n", Console::FG_GREEN); + fclose($fileHandle); + $this->stdout( + "Синхронизация завершена успешно. Записи без пользователей сохранены в {$csvFilePath}\n", + BaseConsole::FG_GREEN + ); return ExitCode::OK; } -- 2.39.5