]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Обработка отмены и возврата
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 24 Feb 2025 14:24:41 +0000 (17:24 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 24 Feb 2025 14:24:41 +0000 (17:24 +0300)
erp24/media/controllers/NotificationController.php

index 079ec04f20df3e0381e7baa2537639fdde9aed72..69fe1f2eedec9b6368b379d2374814a5be05d872 100644 (file)
@@ -173,6 +173,70 @@ class NotificationController extends Controller
                         }
                     }
 
+                case 'ORDER_CANCELLED':
+                    $requiredFields = ['campaignId', 'orderId', 'cancelledAt', 'items'];
+                    foreach ($requiredFields as $field) {
+                        if (!isset($data[$field])) {
+                            Yii::$app->response->statusCode = 400;
+                            return $this->asJson([
+                                'error' => [
+                                    'type' => 'WRONG_EVENT_FORMAT',
+                                    'message' => "Отсутствует обязательное поле: {$field}"
+                                ]
+                            ]);
+                        }
+                    }
+                    $campaignId = $data['campaignId'];
+                    $orderId = $data['orderId'];
+                    $orderData = MarketplaceService::fetchOrder($campaignId, $orderId);
+                    if (empty($orderData)) {
+                        Yii::$app->response->statusCode = 400;
+                        return $this->asJson([
+                            'error' => [
+                                'type' => 'WRONG_EVENT_FORMAT',
+                                'message' => "Не удалось получить заказ с orderId: {$orderId} для кампании: {$campaignId}"
+                            ]
+                        ]);
+                    }
+                    $result = MarketplaceService::processOrders($orderData);
+                    return $this->asJson([
+                        'success' => true,
+                        'message' => "ORDER_CANCELLED событие обработано успешно",
+                        'result' => $result
+                    ]);
+
+                case 'ORDER_RETURN_CREATED':
+                    $requiredFields = ['campaignId', 'orderId', 'returnId', 'returnType', 'createdAt', 'items'];
+                    foreach ($requiredFields as $field) {
+                        if (!isset($data[$field])) {
+                            Yii::$app->response->statusCode = 400;
+                            return $this->asJson([
+                                'error' => [
+                                    'type' => 'WRONG_EVENT_FORMAT',
+                                    'message' => "Отсутствует обязательное поле: {$field}"
+                                ]
+                            ]);
+                        }
+                    }
+                    $campaignId = $data['campaignId'];
+                    $orderId = $data['orderId'];
+                    $orderData = MarketplaceService::fetchOrder($campaignId, $orderId);
+                    if (empty($orderData)) {
+                        Yii::$app->response->statusCode = 400;
+                        return $this->asJson([
+                            'error' => [
+                                'type' => 'WRONG_EVENT_FORMAT',
+                                'message' => "Не удалось получить заказ с orderId: {$orderId} для кампании: {$campaignId}"
+                            ]
+                        ]);
+                    }
+                    $result = MarketplaceService::processOrders($orderData);
+                    return $this->asJson([
+                        'success' => true,
+                        'message' => "ORDER_RETURN_CREATED событие обработано успешно",
+                        'result' => $result
+                    ]);
+
                 default:
                     Yii::info("Неизвестный тип события: {$eventType}");
                     return $this->asJson([