moonsflyer 3 mēneši atpakaļ
vecāks
revīzija
f5c804326d
1 mainītis faili ar 23 papildinājumiem un 13 dzēšanām
  1. 23 13
      app/adminapi/logic/goods/GoodsLogic.php

+ 23 - 13
app/adminapi/logic/goods/GoodsLogic.php

@@ -1018,7 +1018,7 @@ class GoodsLogic
     }
 
     /**
-     * @notes 更新商品的最小最大价格
+     * @notes 更新商品的最小最大价格和总库存
      * @param int $goodsId 商品ID
      * @return void
      * @author 
@@ -1026,20 +1026,30 @@ class GoodsLogic
      */
     private function updateGoodsMinMaxPrice($goodsId)
     {
-        // 获取该商品所有规格的销售价格
-        $priceData = \app\common\model\GoodsItem::where('goods_id', $goodsId)
-            ->where('sell_price', '>', 0)
-            ->column('sell_price');
+        // 获取该商品所有规格的销售价格和库存
+        $itemData = \app\common\model\GoodsItem::where('goods_id', $goodsId)
+            ->field('sell_price, stock')
+            ->select()
+            ->toArray();
         
-        if (!empty($priceData)) {
-            $minPrice = min($priceData);
-            $maxPrice = max($priceData);
+        if (!empty($itemData)) {
+            // 计算价格范围
+            $priceData = array_filter(array_column($itemData, 'sell_price'), function($price) {
+                return $price > 0;
+            });
+            
+            // 计算总库存
+            $totalStock = array_sum(array_column($itemData, 'stock'));
+            
+            $updateData = ['total_stock' => $totalStock];
+            
+            if (!empty($priceData)) {
+                $updateData['min_price'] = min($priceData);
+                $updateData['max_price'] = max($priceData);
+            }
             
-            // 更新商品表的最小最大价格
-            \app\common\model\Goods::where('id', $goodsId)->update([
-                'min_price' => $minPrice,
-                'max_price' => $maxPrice
-            ]);
+            // 更新商品表的最小最大价格和总库存
+            \app\common\model\Goods::where('id', $goodsId)->update($updateData);
         }
     }