From 83f9a7c685da2f920cd242adf61eeb1ff87a202b Mon Sep 17 00:00:00 2001 From: lqmac Date: Mon, 29 Apr 2024 10:16:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/Passport.php | 1 + app/api/model/Goods.php | 12 +- app/command/SyncStoreBasicData.php | 253 +++++++++++++++++++++++++++++ app/common/model/Goods.php | 12 ++ config/console.php | 1 + 5 files changed, 273 insertions(+), 6 deletions(-) create mode 100644 app/command/SyncStoreBasicData.php diff --git a/app/admin/controller/Passport.php b/app/admin/controller/Passport.php index 2eb44ed9..4f7d74f7 100644 --- a/app/admin/controller/Passport.php +++ b/app/admin/controller/Passport.php @@ -47,6 +47,7 @@ class Passport extends Controller } return $this->renderSuccess([ 'userId' => $userInfo['admin_user_id'], + 'role' => $userInfo['role'], 'token' => $model->getToken() ], '登录成功'); } diff --git a/app/api/model/Goods.php b/app/api/model/Goods.php index 80446c50..b99a3577 100644 --- a/app/api/model/Goods.php +++ b/app/api/model/Goods.php @@ -437,7 +437,7 @@ class Goods extends GoodsModel // 获取商品记录 $goodsInfo = $this->getGoodsMain($goodsId, $with, $verifyStatus); - $this->dealGoodsImage($goodsInfo); + //$this->dealGoodsImage($goodsInfo); // 商品规格列表 $goodsInfo['specList'] = GoodsSpecRelModel::getSpecList($goodsInfo['goods_id']); @@ -643,19 +643,19 @@ class Goods extends GoodsModel //价格判断 if (UserService::isstore()) { $priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds); - $goods['goods_price_min_plus'] = $priceArr['membershipPrice']; - $goods['goods_price_min_dealer'] = $priceArr['distributionPrice']; - $goods['goods_price_min'] = $goods['goods_price_min_plus'];//$goods['cost_price_min'];//店长售价,展示为成本价 + $goods['goods_price_min_plus'] = round($priceArr['membershipPrice']); + $goods['goods_price_min_dealer'] = round($priceArr['distributionPrice']); + $goods['goods_price_min'] = round($goods['goods_price_min_plus']);//$goods['cost_price_min'];//店长售价,展示为成本价 } elseif (UserService::isPlusMember()) { $membershipPrice = \app\common\model\PriceSet::membershipPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds); $goods['discount'] = bcdiv((string)($membershipPrice * 10), (string)$goods['goods_price_min'], 1); - $goods['goods_price_min'] = $membershipPrice; + $goods['goods_price_min'] = round($membershipPrice); } elseif (UserService::isDealerMember()) { $priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds); $goods['discount'] = bcdiv((string)($priceArr['distributionPrice'] * 10), (string)$goods['goods_price_min'], 1); //$goods['goods_price_min'] = $membershipPrice; - $goods['goods_price_min'] = $priceArr['distributionPrice']; + $goods['goods_price_min'] = round($priceArr['distributionPrice']); } if ($goods['discount'] == 10) { diff --git a/app/command/SyncStoreBasicData.php b/app/command/SyncStoreBasicData.php new file mode 100644 index 00000000..4393cf55 --- /dev/null +++ b/app/command/SyncStoreBasicData.php @@ -0,0 +1,253 @@ +setName('SyncStoreBasicData')->setDescription('同步商城基础数据'); + $this->addArgument("store_id"); + $this->addArgument("isSyncMaintenanceData"); + $this->addArgument("isSyncHelpData"); + $this->addArgument("isSyncRichTextData"); + } + + protected function execute(Input $input, Output $output) + { + $store_id = $input->getArgument("store_id"); + $isSyncMaintenanceData = $input->getArgument("isSyncMaintenanceData"); + $isSyncHelpData = $input->getArgument("isSyncHelpData"); + $isSyncRichTextData = $input->getArgument("isSyncRichTextData"); + + $where[] = ['is_sync','=', 0]; + $where[] = ['is_delete','=', 0]; + $where[] = ['is_recycle','=', 0]; + $where[] = ['status','=', 1]; + + if ($store_id) { + $where[] = ['store_id','=', $store_id]; + } else { + $where[] = ['store_id', '<>', self::DEFAULT_STORE_ID]; + } + $stores = Store::where($where)->field('store_id,is_sync,is_recycle,status,is_delete')->select()->toArray(); + // echo "
";
+        // print_r($stores);
+        // exit();
+        if (!$stores) {
+            echo "没有要同步的商城了";
+            return;
+        }
+        foreach ($stores as $store) {
+            if ($isSyncMaintenanceData) {
+               $this->syncMaintenanceData($store);
+            }
+            if ($isSyncHelpData) {
+               $this->syncHelpData($store);
+            }
+            if ($isSyncRichTextData) {
+               $this->syncRichTextData($store);
+            }
+            Store::where('store_id', $store['store_id'])->update(['is_sync' => 1]);
+        }
+        
+
+    }
+    /**
+     * 同步富文本数据
+     * [syncHelpData description]
+     * @param  [type] $store [description]
+     * @return [type]        [description]
+     */
+    private function syncRichTextData($store){
+        //维修分类数据同步
+        $agreementList =  Agreement::where('store_id',self::DEFAULT_STORE_ID)->select()->toArray();
+        if ($agreementList) {
+            foreach ($agreementList as &$agreement) {
+                $info = Agreement::where('store_id', $store['store_id'])->where('original_id', $agreement['id'])->find();
+                if ($info) {
+                    echo $agreement['id']."富文本已存在".PHP_EOL;
+                    continue;
+                }
+                $agreement['create_time'] = time();
+                $agreement['update_time'] = time();
+                $agreement['original_id'] = $agreement['id'];
+                $agreement['store_id'] = $store['store_id'];
+                unset($agreement['id']);
+                $ret = Agreement::create($agreement);
+                var_dump($ret->id);
+            }
+            unset($agreement);
+        }
+    }
+    /**
+     * 同步帮助中心数据
+     * [syncHelpData description]
+     * @param  [type] $store [description]
+     * @return [type]        [description]
+     */
+    private function syncHelpData($store){
+        //维修分类数据同步
+        $articleCategoryList =  Category::where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray();
+        if ($articleCategoryList) {
+            foreach ($articleCategoryList as &$articleCategory) {
+                $info = Category::where('store_id', $store['store_id'])->where('original_id', $articleCategory['category_id'])->find();
+                if ($info) {
+                    echo $articleCategory['category_id']."帮助分类已存在".PHP_EOL;
+                    continue;
+                }
+                $articleCategory['create_time'] = time();
+                $articleCategory['update_time'] = time();
+                $articleCategory['original_id'] = $articleCategory['category_id'];
+                $articleCategory['store_id'] = $store['store_id'];
+                unset($articleCategory['category_id']);
+
+                //复制图片
+                $upload_file = Db::name('upload_file')->where('file_id', $articleCategory['img_id'])->find();
+                if ($upload_file) {
+                    $upload_file['store_id'] = $store['store_id'];
+                    $upload_file['create_time'] = time();
+                    unset($upload_file['file_id']);
+                    $image_id = Db::name('upload_file')->insertGetId($upload_file);
+                }
+                //写入维修数据
+                $articleCategory['img_id'] = $image_id ?? 0;
+                $ret = Category::create($articleCategory);
+                var_dump($ret->id);
+            }
+            unset($articleCategory);
+        }
+        
+        //维修数据同步
+        $articleList =  Article::where('store_id',self::DEFAULT_STORE_ID)->where('is_delete', 0)->where('status', 1)->select()->toArray();
+        if ($articleList) {
+            foreach ($articleList as &$article) {
+                $info = Article::where('store_id', $store['store_id'])->where('original_id', $article['article_id'])->find();
+                if ($info) {
+                    echo $article['article_id']."帮助已存在".PHP_EOL;
+                    continue;
+                }
+                //查询分类id
+                $articleCategory = Category::where('original_id', $article['category_id'])->where('store_id', $store['store_id'])->find();
+                if (!$articleCategory) {
+                    continue;
+                }
+                $article['create_time'] = time();
+                $article['update_time'] = time();
+                $article['original_id'] = $article['article_id'];
+                $article['category_id'] = $articleCategory['category_id'];
+                $article['store_id'] = $store['store_id'];
+                unset($article['article_id']);
+                //复制图片
+                $upload_file = Db::name('upload_file')->where('file_id', $article['image_id'])->find();
+                if ($upload_file) {
+                    $upload_file['store_id'] = $store['store_id'];
+                    $upload_file['create_time'] = time();
+                    unset($upload_file['file_id']);
+                    $image_id = Db::name('upload_file')->insertGetId($upload_file);
+                }
+                //写入维修数据
+                $article['image_id'] = $image_id;
+                $ret = Article::create($article);
+                //写入图片id
+                var_dump($ret->id);
+            }
+            unset($article);
+        }
+    }
+    /**
+     * 同步维修数据
+     * [syncMaintenanceData description]
+     * @param  [type] $store [description]
+     * @return [type]        [description]
+     */
+    private function syncMaintenanceData($store){
+        //维修分类数据同步
+        $maintenanceCategoryList =  MaintenanceCategory::where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray();
+       
+        if ($maintenanceCategoryList) {
+            foreach ($maintenanceCategoryList as &$maintenanceCategory) {
+                $info = MaintenanceCategory::where('store_id', $store['store_id'])->where('original_id', $maintenanceCategory['id'])->find();
+                if ($info) {
+                    echo $maintenanceCategory['id']."维修分类已存在".PHP_EOL;
+                    continue;
+                }
+                $maintenanceCategory['create_time'] = time();
+                $maintenanceCategory['update_time'] = time();
+                $maintenanceCategory['original_id'] = $maintenanceCategory['id'];
+                $maintenanceCategory['store_id'] = $store['store_id'];
+                unset($maintenanceCategory['id']);
+                // echo "
";
+                // print_r($maintenanceCategory);
+                // exit();
+                $ret = MaintenanceCategory::create($maintenanceCategory);
+                var_dump($ret->id);
+            }
+            unset($maintenanceCategory);
+        }
+        
+        //维修数据同步
+        $maintenanceList =  Maintenance::where('store_id',self::DEFAULT_STORE_ID)->where('is_delete', 0)->select()->toArray();
+        
+        if ($maintenanceList) {
+            foreach ($maintenanceList as &$maintenance) {
+                $info = Maintenance::where('store_id', $store['store_id'])->where('original_id', $maintenance['id'])->find();
+                if ($info) {
+                    echo $maintenance['id']."维修已存在".PHP_EOL;
+                    continue;
+                }
+                // echo "
";
+                // print_r($info);
+                // exit();
+                //查询分类id
+                $maintenanceCategory = MaintenanceCategory::where('original_id', $maintenance['category_id'])->where('store_id', $store['store_id'])->find();
+                if (!$maintenanceCategory) {
+                    continue;
+                }
+                $maintenance['create_time'] = time();
+                $maintenance['update_time'] = time();
+                $maintenance['original_id'] = $maintenance['id'];
+                $maintenance['category_id'] = $maintenanceCategory['id'];
+                $maintenance['store_id'] = $store['store_id'];
+                unset($maintenance['id']);
+                //复制图片
+                $upload_file = Db::name('upload_file')->where('file_id', $maintenance['img_id'])->find();
+                if ($upload_file) {
+                    $upload_file['store_id'] = $store['store_id'];
+                    $upload_file['create_time'] = time();
+                    unset($upload_file['file_id']);
+                    // echo "
";
+                    // print_r($upload_file);
+                    // exit();
+                    $image_id = Db::name('upload_file')->insertGetId($upload_file);
+                }
+                
+                //写入维修数据
+                $maintenance['img_id'] = $image_id ?? 0;
+                $ret = Maintenance::create($maintenance);
+                //写入图片id
+                var_dump($ret->id);
+            }
+            unset($maintenance);
+        }
+    }
+
+}
diff --git a/app/common/model/Goods.php b/app/common/model/Goods.php
index f3ffc512..9365da66 100644
--- a/app/common/model/Goods.php
+++ b/app/common/model/Goods.php
@@ -481,6 +481,18 @@ class Goods extends BaseModel
         if (isset($param['goods_price_max']) && $param['goods_price_max'] !== '') {
             $filter[] = ['goods.goods_price_min', '<=', $params['goods_price_max']];
         }
+        if (isset($param['distribute_price_max']) && $param['distribute_price_max'] !== '') {
+            $filter[] = ['goods.distribute_price', '<=', $params['distribute_price_max']];
+        }
+        if (isset($param['distribute_price_min']) && $param['distribute_price_min'] !== '') {
+            $filter[] = ['goods.distribute_price', '>=', $params['distribute_price_min']];
+        }
+        if (isset($param['shop_price_min']) && $param['shop_price_min'] !== '') {
+            $filter[] = ['goods.shop_price', '>=', $params['shop_price_min']];
+        }
+        if (isset($param['shop_price_max']) && $param['shop_price_max'] !== '') {
+            $filter[] = ['goods.shop_price', '<=', $params['shop_price_max']];
+        }
         if (isset($param['profit_rate_min']) && $param['profit_rate_min'] !== '') {
             $filter[] = ['goods.profit_rate', '>=', $params['profit_rate_min']];
         }
diff --git a/config/console.php b/config/console.php
index 2cedb105..d64e0746 100644
--- a/config/console.php
+++ b/config/console.php
@@ -11,5 +11,6 @@ return [
         'test' => 'app\command\test',
         'CalDealerTime' => 'app\command\CalDealerTime',
         'UpdateCollectGoodsPrice' => 'app\command\UpdateCollectGoodsPrice',
+        'SyncStoreBasicData' => 'app\command\SyncStoreBasicData',
     ],
 ];