From 81a055c77fb2b2e76a82a7d451a64d2c5084f91e Mon Sep 17 00:00:00 2001 From: lqmac Date: Wed, 13 Mar 2024 10:01:46 +0800 Subject: [PATCH 1/2] 1 --- app/api/model/Goods.php | 4 +-- app/job/service/goods/AdminImport.php | 41 +++++++++++---------------- app/job/service/goods/Collector.php | 2 ++ app/store/model/Goods.php | 10 +++++-- app/store/model/goods/Import.php | 10 +++++++ 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/app/api/model/Goods.php b/app/api/model/Goods.php index f649dbf3..a78ef5fa 100644 --- a/app/api/model/Goods.php +++ b/app/api/model/Goods.php @@ -258,8 +258,8 @@ class Goods extends GoodsModel $file_path = UploadFileModel::where([ 'store_id' => request()->header()['storeid'], 'file_id' => $file_id, - ])->field('file_path')->find()->file_path; - $v['image'] = "https://".$_SERVER['HTTP_HOST'] . '/uploads/' . $file_path; + ])->find(); + $v['image'] = getUrl($file_path['file_path'], $file_path['domain']); //$v['end_time'] = strtotime($info->p_time) - time(); $v['end_time'] = $info->p_time ? strtotime($info->p_time) - time() : 0; diff --git a/app/job/service/goods/AdminImport.php b/app/job/service/goods/AdminImport.php index feafe7ac..ab181125 100644 --- a/app/job/service/goods/AdminImport.php +++ b/app/job/service/goods/AdminImport.php @@ -35,6 +35,7 @@ use app\common\validate\goods\AdminImport as GoodsAdminImportValidate; use cores\exception\BaseException; use think\facade\Log; use app\common\model\Channel; +use app\common\model\Region; /** * 服务类:商品批量导入 * Class Import @@ -105,31 +106,6 @@ class AdminImport extends BaseService $data = $this->createData($item, $storeId); $service->single($item['D'], $data, $storeId); - - // 生成商品数据(用于写入数据库) - // $data = $this->createData($item, $storeId); - // Log::record("data".json_encode($data)); - // // 数据验证 - // if (!$this->validateGoodsData($data, $storeId)) { - // $this->errorLog[] = ['goodsSn' => $item['A'], 'message' => $this->getError()]; - // continue; - // } - // // 事务处理:添加商品 - // $model = new GoodsModel(); - // $model->transaction(function () use ($model, $data, $storeId) { - // // 添加商品 - // $model->save($data); - // // 新增商品与分类关联 - // GoodsCategoryRelModel::increased((int)$model['goods_id'], $data['categoryIds'], $storeId); - // // 新增商品与图片关联 - // GoodsImageModel::increased((int)$model['goods_id'], $data['imagesIds'], $storeId); - // // 新增商品与规格关联 - // GoodsSpecRelModel::increased((int)$model['goods_id'], $data['newSpecList'], $storeId); - // // 新增商品sku信息 - // GoodsSkuModel::add((int)$model['goods_id'], $data['spec_type'], $data['newSkuList'], $storeId); - // // 新增服务与承诺关联 - // GoodsServiceRelModel::increased((int)$model['goods_id'], $data['serviceIds'], $storeId); - // }); // 记录导入成功 $this->successCount++; } @@ -221,6 +197,17 @@ class AdminImport extends BaseService public function createData(array $original, int $storeId): array { $channel = Channel::where('name', $original["B"])->find(); + + $arr = []; + $sale_areas = $original["J"] ? explode("、", $original["J"]) : []; + if ($sale_areas) { + foreach ($sale_areas as $value) { + $regions = Region::whereIn('name', explode(".", $value))->select()->toArray(); + $regions = array_column($regions, null, "level"); + $arr[] = $regions[1]['id'].".".$regions[2]['id']; + } + } + // 整理商品数据 $data = [ 'cmmdty_model' => $original["A"], @@ -235,7 +222,11 @@ class AdminImport extends BaseService 'goods_type' => 10,//实物 'goods_status' => 10,//上架 'store_id' => $storeId, + 'sale_areas' => implode("、", $arr) ]; + // echo "
";
+        // print_r($data);
+        // exit();
         // 过滤不存在的ID集数据
         $data['categoryIds'] = CategoryModel::filterCategoryIds($data['categoryIds'], $storeId);
         return $data;
diff --git a/app/job/service/goods/Collector.php b/app/job/service/goods/Collector.php
index b6f4a5e2..5f51761a 100644
--- a/app/job/service/goods/Collector.php
+++ b/app/job/service/goods/Collector.php
@@ -143,6 +143,7 @@ class Collector extends BaseService
             $original['remark'] = $form['remark'] ?? "";
             $original['cmmdty_model'] = $form['cmmdty_model'] ?? "";
             $original['goods_no'] = $form['goods_no'] ?? "";
+            $original['sale_areas'] = $form['sale_areas'] ?? "";
 
             // 下载远程商品图片
             $original = $this->thirdPartyImages($original, $form['imageStorage'], $storeId);
@@ -327,6 +328,7 @@ class Collector extends BaseService
             $data['remark'] = $original['remark'] ?? "";
             $data['cmmdty_model'] = $original['cmmdty_model'] ?? "";
             $data['goods_no'] = $original['goods_no'] ?? "";
+            $data['sale_areas'] = $original['sale_areas'] ?? "";
         }
         // 规格和sku数据处理
         if ($data['spec_type'] === GoodsSpecTypeEnum::MULTI) {
diff --git a/app/store/model/Goods.php b/app/store/model/Goods.php
index a563a27e..7e75cf60 100644
--- a/app/store/model/Goods.php
+++ b/app/store/model/Goods.php
@@ -122,6 +122,8 @@ class Goods extends GoodsModel
         $data = $this->createData($data);
         // 事务处理
         $this->transaction(function () use ($data) {
+            // var_dump($data);
+            // exit();
             // 更新商品
             $this->save($data);
             // 更新商品与分类关联
@@ -206,6 +208,8 @@ class Goods extends GoodsModel
             'newSkuList' => [],
             'store_id' => self::$storeId,
         ]);
+        // var_dump($data);
+        // exit();
         // 整理商品的价格和库存总量
         if ($data['spec_type'] == GoodsSpecTypeEnum::MULTI) {
             $data['stock_total'] = GoodsSkuModel::getStockTotal($data['specData']['skuList']);
@@ -213,8 +217,10 @@ class Goods extends GoodsModel
             [$data['line_price_min'], $data['line_price_max']] = GoodsSkuModel::getLinePrices($data['specData']['skuList']);
         } elseif ($data['spec_type'] == GoodsSpecTypeEnum::SINGLE) {
             $data['goods_price_min'] = $data['goods_price_max'] = $data['goods_price'];
-            $data['line_price_min'] = $data['line_price_max'] = $data['line_price'];
+            //$data['line_price_min'] = $data['line_price_max'] = $data['line_price'];
+            $data['line_price_min'] = $data['line_price_max'] = $data['goods_price'];
             $data['stock_total'] = $data['stock_num'];
+            $data['cost_price_min'] = $data['cost_price'];
         }
         // 规格和sku数据处理
         if ($data['spec_type'] == GoodsSpecTypeEnum::MULTI) {
@@ -226,7 +232,7 @@ class Goods extends GoodsModel
             $data['newSkuList'] = GoodsSkuModel::getNewSkuList($data['newSpecList'], $data['specData']['skuList']);
         } elseif ($data['spec_type'] == GoodsSpecTypeEnum::SINGLE) {
             // 生成skuItem
-            $data['newSkuList'] = helper::pick($data, ['goods_price', 'line_price', 'stock_num', 'goods_weight']);
+            $data['newSkuList'] = helper::pick($data, ['goods_price', 'line_price', 'cost_price','stock_num', 'goods_weight']);
         }
         // 单独设置折扣的配置
         $data['is_enable_grade'] == 0 && $data['is_alone_grade'] = 0;
diff --git a/app/store/model/goods/Import.php b/app/store/model/goods/Import.php
index 5158324c..bf1d44f8 100644
--- a/app/store/model/goods/Import.php
+++ b/app/store/model/goods/Import.php
@@ -75,6 +75,16 @@ class Import extends ImportModel
         $this->checkLimit($execlData);
         
         self::$storeId = 0;
+        $obj = new \app\job\service\goods\AdminImport();
+        $service = new \app\job\service\goods\Collector();
+        foreach ($execlData as $item) {
+
+            $data = $obj->createData($item, self::$storeId);
+            // $service->single($item['D'], $data, $storeId);
+            // // 记录导入成功
+            // $this->successCount++;
+        }
+
         // 新增商品导入记录
         $recordId = $this->addRecord(\count($execlData));
 

From a7cbe0d28b78b486dc11635a0f8cc8adab84b0af Mon Sep 17 00:00:00 2001
From: lqmac 
Date: Wed, 13 Mar 2024 10:06:54 +0800
Subject: [PATCH 2/2] 1

---
 app/api/model/Goods.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/api/model/Goods.php b/app/api/model/Goods.php
index a78ef5fa..cbfd4b36 100644
--- a/app/api/model/Goods.php
+++ b/app/api/model/Goods.php
@@ -247,7 +247,7 @@ class Goods extends GoodsModel
                 ->where([
                     'a.store_id' => request()->header()['storeid'],
                     'a.status' => 10,
-                    'b.category_id' => $_GET['category_id']
+                    //'b.category_id' => $_GET['category_id']
                 ])->whereIn('a.goods_id', $goods)->field('a.goods_id,a.goods_name,a.goods_price_min,b.category_id,a.sales_initial,a.sales_actual')->select()->toArray();
             //暂时 要优化
             foreach ($list as &$v) {