From 647e658a7f03d8c8ef52c5f90a6ff457f85d9b2c Mon Sep 17 00:00:00 2001 From: fomichev Date: Tue, 25 Feb 2025 10:13:59 +0300 Subject: [PATCH] =?utf8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?utf8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../controllers/NotificationController.php | 85 ++++++++++--------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/erp24/media/controllers/NotificationController.php b/erp24/media/controllers/NotificationController.php index 3d077fda..86dd2a58 100644 --- a/erp24/media/controllers/NotificationController.php +++ b/erp24/media/controllers/NotificationController.php @@ -33,15 +33,14 @@ class NotificationController extends Controller throw new BadRequestHttpException('Только POST запросы разрешены'); } - /*$requestIp = Yii::$app->request->userIP; + /* + $requestIp = Yii::$app->request->userIP; $ipLong = ip2long($requestIp); - $allowedRanges = [ ['start' => ip2long('5.45.207.0'), 'end' => ip2long('5.45.207.127')], ['start' => ip2long('141.8.142.0'), 'end' => ip2long('141.8.142.127')], ['start' => ip2long('5.255.253.0'), 'end' => ip2long('5.255.253.127')], ]; - $allowed = false; foreach ($allowedRanges as $range) { if ($ipLong >= $range['start'] && $ipLong <= $range['end']) { @@ -49,7 +48,6 @@ class NotificationController extends Controller break; } } - if (!$allowed) { Yii::$app->response->statusCode = 403; return $this->asJson([ @@ -58,7 +56,8 @@ class NotificationController extends Controller 'message' => 'Доступ запрещен' ] ]); - }*/ + } + */ $rawBody = Yii::$app->request->getRawBody(); try { @@ -90,8 +89,8 @@ class NotificationController extends Controller switch ($eventType) { case 'PING': return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', 'timestamp' => date('Y-m-d H:i:s') ]); @@ -108,9 +107,8 @@ class NotificationController extends Controller ]); } } - $campaignId = $data['campaignId']; - $orderId = $data['orderId']; + $orderId = $data['orderId']; $orderData = MarketplaceService::fetchOrder($campaignId, $orderId); if (empty($orderData)) { @@ -122,13 +120,13 @@ class NotificationController extends Controller ] ]); } - - $result = MarketplaceService::processOrders($orderData); - //TODO - отправка в 1С + $result = \MarketplaceService::processOrders($orderData); + // Здесь можно добавить отправку данных в 1С return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', - 'timestamp' => date('Y-m-d H:i:s') + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', + 'timestamp' => date('Y-m-d H:i:s'), + 'message' => 'ORDER_CREATED событие обработано успешно' ]); case 'ORDER_STATUS_UPDATED': @@ -144,10 +142,9 @@ class NotificationController extends Controller ]); } } - - $campaignId = $data['campaignId']; - $orderId = $data['orderId']; - $newStatusCode = $data['status']; + $campaignId = $data['campaignId']; + $orderId = $data['orderId']; + $newStatusCode = $data['status']; $newSubstatusCode = $data['substatus']; $marketplaceOrder = MarketplaceOrders::find() @@ -167,13 +164,14 @@ class NotificationController extends Controller } $result = MarketplaceService::processOrders($orderData); return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', - 'timestamp' => date('Y-m-d H:i:s') + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', + 'timestamp' => date('Y-m-d H:i:s'), + 'message' => "ORDER_STATUS_UPDATED событие обработано успешно (заказ создан)", + 'result' => $result ]); } else { - //TODO - обработка отдельных статусов - $currentStatusCode = $marketplaceOrder->status ? $marketplaceOrder->status->code : null; + $currentStatusCode = $marketplaceOrder->status ? $marketplaceOrder->status->code : null; $currentSubstatusCode = $marketplaceOrder->substatus ? $marketplaceOrder->substatus->code : null; if ($newStatusCode !== $currentStatusCode || $newSubstatusCode !== $currentSubstatusCode) { $orderData = MarketplaceService::fetchOrder($campaignId, $orderId); @@ -188,15 +186,18 @@ class NotificationController extends Controller } $result = MarketplaceService::processOrders($orderData); return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', - 'timestamp' => date('Y-m-d H:i:s') + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', + 'timestamp' => date('Y-m-d H:i:s'), + 'message' => "ORDER_STATUS_UPDATED событие обработано успешно", + 'result' => $result ]); } else { return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', - 'timestamp' => date('Y-m-d H:i:s') + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', + 'timestamp' => date('Y-m-d H:i:s'), + 'message' => 'Статус заказа не изменился, обновление не требуется' ]); } } @@ -215,8 +216,8 @@ class NotificationController extends Controller } } $campaignId = $data['campaignId']; - $orderId = $data['orderId']; - $orderData = MarketplaceService::fetchOrder($campaignId, $orderId); + $orderId = $data['orderId']; + $orderData = MarketplaceService::fetchOrder($campaignId, $orderId); if (empty($orderData)) { Yii::$app->response->statusCode = 400; return $this->asJson([ @@ -228,9 +229,11 @@ class NotificationController extends Controller } $result = MarketplaceService::processOrders($orderData); return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', - 'timestamp' => date('Y-m-d H:i:s') + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', + 'timestamp' => date('Y-m-d H:i:s'), + 'message' => "ORDER_CANCELLED событие обработано успешно", + 'result' => $result ]); case 'ORDER_RETURN_CREATED': @@ -247,8 +250,8 @@ class NotificationController extends Controller } } $campaignId = $data['campaignId']; - $orderId = $data['orderId']; - $orderData = MarketplaceService::fetchOrder($campaignId, $orderId); + $orderId = $data['orderId']; + $orderData = MarketplaceService::fetchOrder($campaignId, $orderId); if (empty($orderData)) { Yii::$app->response->statusCode = 400; return $this->asJson([ @@ -260,9 +263,11 @@ class NotificationController extends Controller } $result = MarketplaceService::processOrders($orderData); return $this->asJson([ - 'version' => '1.0.0', - 'name' => 'БазаЦветов24', - 'timestamp' => date('Y-m-d H:i:s') + 'version' => '1.0.0', + 'name' => 'БазаЦветов24', + 'timestamp' => date('Y-m-d H:i:s'), + 'message' => "ORDER_RETURN_CREATED событие обработано успешно", + 'result' => $result ]); default: -- 2.39.5