From: fomichev Date: Wed, 25 Dec 2024 07:51:45 +0000 (+0300) Subject: Убираем создание пользователя сохраняем в файл X-Git-Tag: 1.7~94^2~46 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=0422621ab95b0203787b04b4a5a9f25f927da826;p=erp24_rep%2Fyii-erp24%2F.git Убираем создание пользователя сохраняем в файл --- 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; }