From: Alexander Smirnov Date: Fri, 15 Nov 2024 08:32:55 +0000 (+0300) Subject: Рефактор marketplace products X-Git-Tag: 1.7~229^2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=86a636c50c006a169274b18d29101182be2cdde0;p=erp24_rep%2Fyii-erp24%2F.git Рефактор marketplace products --- diff --git a/erp24/actions/marketplace/PriorityAction.php b/erp24/actions/marketplace/PriorityAction.php index 391abb79..0fe7a177 100644 --- a/erp24/actions/marketplace/PriorityAction.php +++ b/erp24/actions/marketplace/PriorityAction.php @@ -4,11 +4,9 @@ namespace yii_app\actions\marketplace; use Yii; use yii\base\Action; -use yii\helpers\ArrayHelper; use yii\helpers\Json; use yii_app\records\MarketplacePriority; -use yii_app\records\Products1c; -use yii_app\records\ProductsClass; +use yii_app\services\MarketplaceService; class PriorityAction extends Action { @@ -37,10 +35,7 @@ class PriorityAction extends Action return 'ok ' . $guid . ' ' . $paramName . ' ' . $value; } - $productsClass = ArrayHelper::getColumn(ProductsClass::find()->where([ - 'tip' => [ProductsClass::MARKETPLACE, ProductsClass::MARKETPLACE_ADDITIONAL] - ])->all(), 'category_id'); - $products = ArrayHelper::map(Products1c::find()->where(['parent_id' => $productsClass])->all(), 'id', 'name'); + $products = MarketplaceService::getMarketplaceProducts(); $marketplacePriorityMap = []; foreach (MarketplacePriority::find()->all() as $mp) { diff --git a/erp24/api2/controllers/YandexMarketController.php b/erp24/api2/controllers/YandexMarketController.php index e49f85b1..5a51dceb 100644 --- a/erp24/api2/controllers/YandexMarketController.php +++ b/erp24/api2/controllers/YandexMarketController.php @@ -11,7 +11,7 @@ use OpenAPI\Client\Model; use GuzzleHttp; use yii_app\records\MatrixErp; use yii_app\records\Products1c; -use yii_app\records\ProductsClass; +use yii_app\services\MarketplaceService; class YandexMarketController extends Controller { @@ -81,8 +81,8 @@ class YandexMarketController extends Controller // ]; // return $apiInstance->updateStocks(109969229, $update_stocks_request); - $products = Products1c::find()->alias('p')->leftJoin('products_class pc', 'p.parent_id = pc.category_id') - ->where(['pc.tip' => [ProductsClass::MARKETPLACE, ProductsClass::MARKETPLACE_ADDITIONAL]])->all(); + $products = MarketplaceService::getMarketplaceProducts(); + $matrixErp = MatrixErp::find()->where(['guid' => ArrayHelper::getColumn($products, 'id')])->all(); $matrixErpByGuid = []; foreach ($matrixErp as $matrix) { diff --git a/erp24/controllers/MatrixErpController.php b/erp24/controllers/MatrixErpController.php index 5c3f269c..2c2cd193 100644 --- a/erp24/controllers/MatrixErpController.php +++ b/erp24/controllers/MatrixErpController.php @@ -4,7 +4,6 @@ namespace app\controllers; use Yii; use yii\base\DynamicModel; -use yii\helpers\ArrayHelper; use yii\helpers\Json; use yii_app\records\MatrixErp; use yii_app\records\MatrixErpMedia; @@ -14,7 +13,7 @@ use yii\web\Controller; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; use yii_app\records\Products1c; -use yii_app\records\ProductsClass; +use yii_app\services\MarketplaceService; /** * MatrixErpController implements the CRUD actions for MatrixErp model. @@ -47,10 +46,7 @@ class MatrixErpController extends Controller $existingMapGuidGroupNames[$existing->guid][] = $existing->group_name; }; - $productsClass = ArrayHelper::getColumn(ProductsClass::find()->where([ - 'tip' => [ProductsClass::MARKETPLACE, ProductsClass::MARKETPLACE_ADDITIONAL] - ])->all(), 'category_id'); - $products = Products1c::find()->where(['parent_id' => $productsClass])->all(); + $products = MarketplaceService::getMarketplaceProducts(); $newCnt = 0; foreach ($products as $product) { diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index d663a559..9c9f5a4a 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -259,7 +259,17 @@ class MarketplaceService return $distribution; } + public static function getMarketplaceProducts() { + $productsGroup = ProductsClass::find() + ->where(['tip' => [ProductsClass::MARKETPLACE, ProductsClass::MARKETPLACE_ADDITIONAL]]) + ->select('category_id') + ->asArray() + ->column(); + + $products = Products1c::find()->where(['parent_id' => $productsGroup])->all(); + return $products; + } /** * Статический метод для получения всей информации по продуктам, которая необходима для создания фида. *