From: Vladimir Fomichev Date: Mon, 26 Jan 2026 10:05:51 +0000 (+0300) Subject: Правки по ревью X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=75fc4fd23d13fe1afe5a89f26b61effba7c15099;p=erp24_rep%2Fyii-erp24%2F.git Правки по ревью --- 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();