Эх сурвалжийг харах

Merge branch 'dev_wf' of wugg/phpstock into version1.5

wufeng 2 жил өмнө
parent
commit
332575661a

+ 58 - 22
app/admin/controller/Good.php

@@ -5,6 +5,7 @@ namespace app\admin\controller;
 
 use app\admin\model\GoodLog;
 use think\App;
+use think\db\Raw;
 use think\facade\Db;
 use think\facade\Validate;
 
@@ -875,39 +876,74 @@ class Good extends Base
     //根据价格区间,筛选符合条件的商品列表
     public function getGoodListByLadder()
     {
-
         //1.请求参数
-        $param=$this->request->only(['min_price','max_price','page'=>1,'size'=>15],'post','trim');
+        $param = $this->request->only([
+            'is_stock' => '',
+            'min_price' => 0,
+            'max_price' => 0,
+            'moq' => 0,
+            'page' => 1,
+            'size' => 15
+        ], 'post', 'trim');
+
+        if ($param['is_stock'] === '') $param['is_stock'] = 2;//2表示全部
 
         //2.参数校验
-        $val=Validate::rule([
-            'min_price'=>'require|float|elt:max_price',
-            'max_price'=>'require|float|egt:min_price',
-            'page'=>'require|number|gt:0',
-            'size'=>'require|number|gt:0',
+        $val = Validate::rule([
+            'is_stock|是否库存品' => 'require|number|in:0,1,2',
+            'min_price' => 'require|float|elt:max_price',
+            'max_price' => 'require|float|egt:min_price',
+            'moq|起订量' => 'require|number',
+            'page' => 'require|number|gt:0',
+            'size' => 'require|number|gt:0',
         ]);
 
-        if(!$val->check($param)) return error_show(1004,$val->getError());
+        if (!$val->check($param)) return error_show(1004, $val->getError());
+
+        //3.组织SQL
+        $count = Db::name('good')
+            ->alias("a")
+            ->field("b.skuCode,b.platform_code,b.plat_code,b.id as good_id,a.*,b.addtime,b.updatetime,b.exam_status,gb.createrid purchase_id,gb.creater purchase,gl.min_num,gl.max_num")//成本表里的创建人,也是线上商品的采购人,为了防止混淆,给creater取个别名
+            ->leftJoin("good_platform b", "a.spuCode=b.spuCode")
+            ->leftJoin("good_basic gb", "gb.spuCode=a.spuCode")
+            ->leftJoin("good_ladder gl", "gl.skuCode=b.skuCode");
 
-        //3.组织SQL语句
-        $skuCodes = Db::name('good_ladder')
-            ->field('skuCode')
-            ->whereBetween('sale_price', [$param['min_price'], $param['max_price']])
-            ->where(['is_del' => 0, 'status' => 1])
-            ->group('skuCode')
-            ->buildSql();
 
-        //4.查询列表并补充相关信息(从list方法照搬)
         $list = Db::name('good')
             ->alias("a")
             ->field("b.skuCode,b.platform_code,b.plat_code,b.id as good_id,a.*,b.addtime,b.updatetime,b.exam_status,gb.createrid purchase_id,gb.creater purchase,gl.min_num,gl.max_num")//成本表里的创建人,也是线上商品的采购人,为了防止混淆,给creater取个别名
             ->leftJoin("good_platform b", "a.spuCode=b.spuCode")
             ->leftJoin("good_basic gb", "gb.spuCode=a.spuCode")
-            ->leftJoin("good_ladder gl", "gl.skuCode=b.skuCode")
-            ->where('b.skuCode in ' . $skuCodes)
-            ->page($param['page'], $param['size'])
-            ->order("b.addtime desc")
-            ->select();
+            ->leftJoin("good_ladder gl", "gl.skuCode=b.skuCode");
+
+        //4.加入条件
+        if ($param['min_price'] && $param['max_price']) {
+            $skuCodes = Db::name('good_ladder')
+                ->field('skuCode')
+                ->whereBetween('sale_price', [$param['min_price'], $param['max_price']])
+                ->where(['is_del' => 0, 'status' => 1])
+                ->group('skuCode')
+                ->buildSql();
+
+            $count->where('b.skuCode in ' . $skuCodes);
+            $list->where('b.skuCode in ' . $skuCodes);
+
+        }
+
+        if ($param['is_stock'] != 2) {
+            $count->where('a.is_stock', '=', $param['is_stock']);
+            $list->where('a.is_stock', '=', $param['is_stock']);
+        }
+        if ($param['moq']) {
+            $count->where('a.moq', '>=', $param['moq']);
+            $list->where('a.moq', '>=', $param['moq']);
+        }
+
+        //5.获取结果
+        $count = $count->order("b.addtime desc")->count('a.id');
+        $list = $list->page($param['page'], $param['size'])->order("b.addtime desc")->select()->toArray();
+
+        //6.补充数据,照搬list方法
         $data = [];
         foreach ($list as $value) {
             $value['cat_info'] = made($value['cat_id'], []);
@@ -946,7 +982,7 @@ class Good extends Base
             $data[] = $value;
         }
 
-        return app_show(0, '请求成功', $data);
+        return app_show(0, "获取成功", ['list' => $data, 'count' => $count]);
 
     }