From 75fc4fd23d13fe1afe5a89f26b61effba7c15099 Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Mon, 26 Jan 2026 13:05:51 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?utf8?q?=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/commands/MarketplaceController.php | 2 ++ erp24/jobs/SendTelegramTestMessageJob.php | 2 ++ erp24/services/MarketplaceService.php | 38 ++++++++++++++++---- erp24/services/OrderControlReportService.php | 8 +++++ 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/erp24/commands/MarketplaceController.php b/erp24/commands/MarketplaceController.php index bb4290a6..d13bc019 100644 --- a/erp24/commands/MarketplaceController.php +++ b/erp24/commands/MarketplaceController.php @@ -1,5 +1,7 @@ params['IMAP_FLOWWOW']; - $hostname = $imapConfig['host']; + $imapConfig = Yii::$app->params['IMAP_FLOWWOW'] ?? null; + + // Валидация конфигурации IMAP + if (!$imapConfig || !is_array($imapConfig)) { + Yii::error('Конфигурация IMAP_FLOWWOW не найдена в params.php', __METHOD__); + if ($progressCallback) { + call_user_func($progressCallback, "Ошибка: конфигурация IMAP_FLOWWOW не найдена"); + } + return 0; + } + + $hostname = $imapConfig['host'] ?? ''; if ($useAlternateMailbox) { - $username = $imapConfig['alternate']['username']; - $password = $imapConfig['alternate']['password']; + $username = $imapConfig['alternate']['username'] ?? ''; + $password = $imapConfig['alternate']['password'] ?? ''; } else { - $username = $imapConfig['primary']['username']; - $password = $imapConfig['primary']['password']; + $username = $imapConfig['primary']['username'] ?? ''; + $password = $imapConfig['primary']['password'] ?? ''; + } + + // Валидация IMAP credentials перед подключением + if (empty($hostname) || empty($username) || empty($password)) { + $mailboxType = $useAlternateMailbox ? 'alternate' : 'primary'; + Yii::error("IMAP credentials не настроены для {$mailboxType} mailbox. Проверьте IMAP_FLOWWOW в .env", __METHOD__); + if ($progressCallback) { + call_user_func($progressCallback, "Ошибка: IMAP credentials не настроены для {$mailboxType} mailbox"); + } + return 0; } if ($progressCallback) { @@ -2850,6 +2870,12 @@ class MarketplaceService ->where(['warehouse_guid' => (string)$campaignId]) ->andWhere(['warehouse_id' => 1])->one(); + // Проверка существования магазина + if ($store === null) { + Yii::error("Магазин с warehouse_guid={$campaignId} и warehouse_id=1 не найден", __METHOD__); + return null; + } + $marketplaceOrder = new MarketplaceOrders(); $marketplaceOrder->marketplace_order_id = (string)$order['number']; $marketplaceOrder->creation_date = date('Y-m-d H:i:s', strtotime($order['date'])); diff --git a/erp24/services/OrderControlReportService.php b/erp24/services/OrderControlReportService.php index 8d6b45d9..ee5de5bb 100644 --- a/erp24/services/OrderControlReportService.php +++ b/erp24/services/OrderControlReportService.php @@ -1130,6 +1130,14 @@ class OrderControlReportService private function sendTelegramMessage(string $chatId, string $message): array { $botToken = $this->getTelegramBotToken(); + + // Валидация токена бота + if (empty($botToken)) { + $envVar = $this->isDevEnvironment() ? 'TELEGRAM_BOT_TOKEN' : 'TELEGRAM_BOT_TOKEN_PROD'; + $this->logError("Telegram bot token не установлен. Проверьте переменную окружения {$envVar}"); + return ['success' => false, 'retry_after' => null, 'error' => "Telegram bot token не установлен ({$envVar})"]; + } + $url = "https://api.telegram.org/bot{$botToken}/sendMessage"; $ch = curl_init(); -- 2.39.5