|
@@ -1018,7 +1018,7 @@ class GoodsLogic
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @notes 更新商品的最小最大价格
|
|
|
|
|
|
|
+ * @notes 更新商品的最小最大价格和总库存
|
|
|
* @param int $goodsId 商品ID
|
|
* @param int $goodsId 商品ID
|
|
|
* @return void
|
|
* @return void
|
|
|
* @author
|
|
* @author
|
|
@@ -1026,20 +1026,30 @@ class GoodsLogic
|
|
|
*/
|
|
*/
|
|
|
private function updateGoodsMinMaxPrice($goodsId)
|
|
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);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|