Pārlūkot izejas kodu

商品列表修改

lizhen_gitee 4 mēneši atpakaļ
vecāks
revīzija
dd99b3dc1e

+ 2 - 1
addons/shopro/controller/goods/Goods.php

@@ -49,7 +49,8 @@ class Goods extends Common
         }
 
 
-        $goods = $service->paginate();
+//        $goods = $service->paginate();
+        $goods = $service->select_autopage();
 
         $this->success('获取成功', $goods);
     }

+ 24 - 0
addons/shopro/service/goods/GoodsService.php

@@ -232,6 +232,30 @@ class GoodsService
 
         return $goods;
     }
+    public function select_autopage($is_cache = false)
+    {
+        $this->md5s[] = 'select';
+
+        // 默认排序
+        $this->order();
+
+        $goods = $this->query->field('id,image,title,price as pricemin,is_sku,status,type,dispatch_type')
+                    ->cache($this->getCacheKey($is_cache), (200 + mt_rand(0, 100)))
+                    ->autopage()
+                    ->select();
+
+        // 格式化数据
+        /*foreach ($goods as $key => $gd) {
+            $gd = $this->defaultFormat($gd);
+            if ($this->format instanceof \Closure) {
+                $gd = ($this->format)($gd, $this);
+            }
+
+            $goods[$key] = $gd;
+        }*/
+
+        return $goods;
+    }
 
 
     /**

+ 56 - 0
application/admin/model/shopro/goods/Goods.php

@@ -119,6 +119,60 @@ class Goods extends Common
         return isset($list[$value]) ? $list[$value] : '';
     }
 
+    //最低价格,金钱格式,而不是数组格式
+    public function getPriceminAttr($value, $data)
+    {
+        // 前端传入的 session_id
+        $activity_id = session('goods-activity_id:' . $data['id']);
+        if ($activity_id && $this->activity) {
+            // 活动商品的价格
+            $skuPrices = $data['new_sku_prices'] ?? [];
+            $prices = $skuPrices instanceof \think\Collection ? $skuPrices->column('min_price') : array_column($skuPrices, 'min_price');
+            $maxPrices = $skuPrices instanceof \think\Collection ? $skuPrices->column('max_price') : array_column($skuPrices, 'max_price');
+            $min_price = $prices ? min($prices) : $data['price'];
+            $max_price = $maxPrices ? max($maxPrices) : $data['price'];
+
+            //原版
+            /*$priceArr[] = $min_price;
+            if ($min_price < $max_price) {
+                $priceArr[] = $max_price;
+            }*/
+            //新的
+            $priceArr = $min_price;
+        } else if (isset($data['show_score_shop'])) {
+            // 积分商品价格
+            $skuPrices = $data['new_sku_prices'] ?? [];
+            $skuPrices = $skuPrices instanceof \think\Collection ? $skuPrices->column(null, 'score') : array_column($skuPrices, null, 'score');
+            ksort($skuPrices);
+            $skuPrice = current($skuPrices);      // 需要积分最少的规格
+            if ($skuPrice) {
+                // 不自动拼接积分
+                // $price = $skuPrice['score'] . '积分';
+                // if ($skuPrice['price'] > 0) {
+                //     $price .= '+¥' . $skuPrice['price'];
+                // }
+                // $priceArr[] = $price;
+                $priceArr[] = $skuPrice['price'];
+            } else {
+                // 防止没有规格
+                $priceArr[] = $data['price'];
+            }
+        } else {
+            // 普通商品的价格区间
+            $price = $value ? $value : ($data['price'] ?? 0);
+            //原版
+            /*$priceArr = [$price];
+            if ($price && isset($data['is_sku']) && $data['is_sku']) {
+                $max_price = $this->max_sku_price->price;
+                if ($price < $max_price) {
+                    $priceArr[] = $max_price;
+                }
+            }*/
+            $priceArr = $price;
+        }
+
+        return $priceArr;
+    }
 
     public function getPriceAttr($value, $data)
     {
@@ -131,6 +185,7 @@ class Goods extends Common
             $maxPrices = $skuPrices instanceof \think\Collection ? $skuPrices->column('max_price') : array_column($skuPrices, 'max_price');
             $min_price = $prices ? min($prices) : $data['price'];
             $max_price = $maxPrices ? max($maxPrices) : $data['price'];
+
             $priceArr[] = $min_price;
             if ($min_price < $max_price) {
                 $priceArr[] = $max_price;
@@ -156,6 +211,7 @@ class Goods extends Common
         } else {
             // 普通商品的价格区间
             $price = $value ? $value : ($data['price'] ?? 0);
+
             $priceArr = [$price];
             if ($price && isset($data['is_sku']) && $data['is_sku']) {
                 $max_price = $this->max_sku_price->price;

+ 1 - 1
thinkphp/library/think/db/Query.php

@@ -1449,7 +1449,7 @@ class Query
         $page = $page < 1 ? 1 : $page;
 
         //list_rows
-        $listRows = isset($_REQUEST['listrow']) ? (int)$_REQUEST['listrow'] : $config['list_rows'];
+        $listRows = isset($_REQUEST['list_rows']) ? (int)$_REQUEST['list_rows'] : $config['list_rows'];
 
 
         $this->options['page'] = [intval($page), intval($listRows)];