From: fomichev Date: Wed, 25 Dec 2024 13:10:41 +0000 (+0300) Subject: правки скрипта наполнения X-Git-Tag: 1.7~94^2~39 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=24651b11ef626ea5409c7952662bea88b5e0eff8;p=erp24_rep%2Fyii-erp24%2F.git правки скрипта наполнения --- diff --git a/erp24/commands/CronController.php b/erp24/commands/CronController.php index f905f466..fdf0ca1f 100644 --- a/erp24/commands/CronController.php +++ b/erp24/commands/CronController.php @@ -16,6 +16,7 @@ use yii_app\records\ReplacementInvoiceProducts; use yii_app\records\SentKogort; use yii_app\records\Users; use yii_app\records\UsersMessageManagement; +use yii_app\records\UsersTelegramChatId; use yii_app\records\UsersTelegramLog; class CronController extends Controller @@ -360,9 +361,9 @@ 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'], ';'); + $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 @@ -379,11 +380,12 @@ class CronController extends Controller $phone = $remoteUser['phone']; $chatId = $remoteUser['chat_id']; $username = $remoteUser['username']; + $firstName = $remoteUser['first_name']; $isBlocked = (int)$remoteUser['is_blocked']; $isRegistered = (int)$remoteUser['is_registered']; if (empty($phone)) { - // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); - continue; + fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); + // continue; } $existingLog = UsersTelegramLog::find() @@ -404,30 +406,27 @@ class CronController extends Controller $this->createTelegramLog($phone, $isBlocked, $isRegistered); } - $user = Users::findOne(['phone' => $phone]); + $user = UsersTelegramChatId::findOne(['chat_id' => $chatId]); if (!$user) { - // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Пользователь не найден'], ';'); - continue; - /* $user = new Users([ + $user = new UsersTelegramChatId([ + 'chat_id' => $chatId, 'phone' => $phone, - 'name' => $username ?: 'Клиент из чатбота', - 'date' => date('Y-m-d H:i:s'), - 'password' => '00000', - 'keycode' => '00000', + 'username' => $username ?? 'Клиент из чатбота', + 'first_name' => $firstName ?? 'Клиент из чатбота', + 'is_blocked' => $isBlocked, + 'is_registered' => $isRegistered, ]); - $user->save(false);*/ + $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'); + 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); @@ -438,7 +437,7 @@ class CronController extends Controller $this->stdout("Обработано записей: {$offset}\n", BaseConsole::FG_GREEN); } - // fclose($fileHandle); + fclose($fileHandle); $this->stdout( "Синхронизация завершена успешно. Записи без пользователей сохранены в {$csvFilePath}\n", BaseConsole::FG_GREEN diff --git a/erp24/controllers/UsersMessageManagementController.php b/erp24/controllers/UsersMessageManagementController.php index bdc50d6a..fbc0c9b8 100644 --- a/erp24/controllers/UsersMessageManagementController.php +++ b/erp24/controllers/UsersMessageManagementController.php @@ -21,6 +21,7 @@ use yii_app\records\Users; use yii_app\records\UsersEvents; use yii_app\records\UsersMessageManagement; use yii_app\records\UsersMessageManagementLogs; +use yii_app\records\UsersTelegramChatId; use yii_app\records\UsersTelegramLog; class UsersMessageManagementController extends Controller @@ -393,9 +394,9 @@ class UsersMessageManagementController 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'], ';'); + $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 @@ -407,16 +408,20 @@ class UsersMessageManagementController extends Controller 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']; if (empty($phone)) { - // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); - continue; + fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';'); + // continue; } $existingLog = UsersTelegramLog::find() @@ -437,22 +442,27 @@ class UsersMessageManagementController extends Controller $this->createTelegramLog($phone, $isBlocked, $isRegistered); } - $user = Users::findOne(['phone' => $phone]); + $user = UsersTelegramChatId::findOne(['chat_id' => $chatId]); if (!$user) { - // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Пользователь не найден'], ';'); - continue; - } - - if (empty($user->telegram_chat_id)) { - $user->telegram_chat_id = $chatId; + $user = new UsersTelegramChatId([ + 'chat_id' => $chatId, + 'phone' => $phone, + 'username' => $username ?? 'Клиент из чатбота', + 'first_name' => $firstName ?? 'Клиент из чатбота', + 'is_blocked' => $isBlocked, + 'is_registered' => $isRegistered, + ]); + $user->save(false); } - - 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'); + 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); @@ -462,7 +472,8 @@ class UsersMessageManagementController extends Controller } - // fclose($fileHandle); + fclose($fileHandle); + return 'ok'; }