]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Правки по ревью
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 26 Jan 2026 10:05:51 +0000 (13:05 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 26 Jan 2026 10:05:51 +0000 (13:05 +0300)
erp24/commands/MarketplaceController.php
erp24/jobs/SendTelegramTestMessageJob.php
erp24/services/MarketplaceService.php
erp24/services/OrderControlReportService.php

index bb4290a60a4ad7a55c61e9ca5cbede8cf2b0afc2..d13bc019f52ba85e2d528ee64b0478c378d87399 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace yii_app\commands;
 
 use GuzzleHttp\Client;
index 40be4a6cf4c637c73b4a90049b584efd646d5fa7..fb7fc40738f735466c5a8dcbc7e0991c36282b97 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace yii_app\jobs;
 
 use GuzzleHttp\Client;
index edbd900ddf89b4083a214ca0ee8e28601c515b91..68880aefd60f7e8842f71ed28ea6e71da428af24 100644 (file)
@@ -2085,14 +2085,34 @@ class MarketplaceService
             self::SUBJECT_DELIVERED,
         ];
 
-        $imapConfig = Yii::$app->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']));
index 8d6b45d9d7e67d8a984d2dc0dcab2fb27ce14264..ee5de5bb3e1528a129d8ac6147f42be70fd61b90 100644 (file)
@@ -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();