]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавил тестовый фид
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 21 Oct 2024 12:23:29 +0000 (15:23 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 21 Oct 2024 12:23:29 +0000 (15:23 +0300)
erp24/controllers/MarketplaceController.php
erp24/services/MarketplaceService.php

index b217b956edd9fe304fd25e54560d9838caf43835..799268c007884e89ddfe68178bccda27e823ea5b 100644 (file)
@@ -27,4 +27,20 @@ class MarketplaceController extends Controller
 
         return $xmlFeed;
     }
+
+
+    public function actionTestFeed()
+    {
+
+        $productsInfo = MarketplaceService::getSomeProductsInfo(3);
+
+
+        $xmlFeed = MarketplaceService::createXMLFeed($productsInfo);
+
+
+        Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
+        Yii::$app->response->headers->add('Content-Type', 'application/xml; charset=utf-8');
+
+        return $xmlFeed;
+    }
 }
\ No newline at end of file
index 6e95710b77d1298b5516a5bd01833e403d4dac57..a1348634d7269fc84e81d48ee3dc5b45f564a83f 100644 (file)
@@ -54,6 +54,56 @@ class MarketplaceService
         return $result;
     }
 
+
+    /**
+     * Статический метод для получения информации о заданном количестве продуктов.
+     *
+     * @param int $limit Количество продуктов, которые нужно получить.
+     * @return array
+     */
+    public static function getSomeProductsInfo($limit)
+    {
+        $products = Products1c::find()
+            ->where(['tip' => 'products'])
+            ->andWhere(['not', ['components' => '']])
+            ->limit($limit)
+            ->all();
+
+        $result = [];
+
+        foreach ($products as $product) {
+            $components = json_decode($product->components, true);
+            $composition = [];
+
+            foreach ($components as $componentId => $quantity) {
+                $component = Products1c::findOne(['id' => $componentId]);
+                if ($component && $quantity > 0) {
+                    $composition[] = [
+                        'name' => $component->name,
+                        'quantity' => $quantity,
+                        'unit' => 'шт'
+                    ];
+                }
+            }
+
+            $result[] = [
+                'id' => $product->id,
+                'name' => $product->name,
+                'pictures' => self::getProductPictureUrl($product->id),
+                'price' => self::getProductPrice($product->id),
+                'oldprice' => self::getProductOldPrice($product->id),
+                'description' => self::getProductDescription($product->id),
+                'qty' => self::getProductQty($product->id),
+                'weight' => self::getProductWeight($product->id),
+                'minorder' => self::getProductMinOrder($product->id),
+                'composition' => $composition,
+                'available' => self::getProductAvailability($product->id)
+            ];
+        }
+
+        return $result;
+    }
+
     /**
      * Статический метод для создания XML-фида на основе информации о продуктах.
      *
@@ -92,6 +142,7 @@ class MarketplaceService
         foreach ($productsInfo as $product) {
             $offer = $offers->addChild('offer');
             $offer->addAttribute('id', $product['id']);
+            $offer->addAttribute('available', $product['available'] ? 'true' : 'false');
             $offer->addChild('name', htmlspecialchars($product['name']));
             //TODO добавить url на конкректный букет
             $offer->addChild('url', 'https://bazacvetov24.ru/flowers/' . $product['id']);
@@ -132,7 +183,7 @@ class MarketplaceService
 
     // Приватные статические вспомогательные методы
     private static function getProductPictureUrl($productId) {
-        return ['https://files.erp24.ru/pic.jpg'];
+        return ['https://bazacvetov24.ru/products/5339/51-roza-premium_3326_md.jpg'];
     }
     private static function getProductPrice($productId) {
         $price = Prices::find()
@@ -142,7 +193,7 @@ class MarketplaceService
     }
     private static function getProductOldPrice($productId) { return null; }
     private static function getProductDescription($productId) { return 'Описание'; }
-    private static function getProductQty($productId) { return 100; }
+    private static function getProductQty($productId) { return 1; }
     private static function getProductWeight($productId) {
         return null;
     }
@@ -150,6 +201,6 @@ class MarketplaceService
         return 1;
     }
     private static function getProductAvailability($productId) {
-        return true;
+        return false;
     }
 }