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

修复:商品设置付款减库存取消订单后库存数量出错

萤火科技 1 жил өмнө
parent
commit
25c1548215

+ 1 - 1
app/api/model/Order.php

@@ -131,7 +131,7 @@ class Order extends OrderModel
         // 订单取消事件
         return $this->transaction(function () use ($isPay) {
             // 订单取消事件
-            !$isPay && OrderService::cancelEvent($this);
+            !$isPay && OrderService::cancelEvent($this, false);
             // 更新订单状态: 已付款的订单设置为"待取消", 等待后台审核
             return $this->save(['order_status' => $isPay ? OrderStatusEnum::APPLY_CANCEL : OrderStatusEnum::CANCELLED]);
         });

+ 3 - 2
app/common/service/Order.php

@@ -38,11 +38,12 @@ class Order extends BaseService
     /**
      * 事件:订单取消
      * @param OrderModel $order
+     * @param bool $isPayOrder 是否为已支付订单
      */
-    public static function cancelEvent(OrderModel $order)
+    public static function cancelEvent(OrderModel $order, bool $isPayOrder = true)
     {
         // 回退商品库存
-        FactoryStock::getFactory($order['order_source'])->backGoodsStock($order['goods'], true);
+        FactoryStock::getFactory($order['order_source'])->backGoodsStock($order['goods'], $isPayOrder);
         // 回退用户优惠券
         $order['coupon_id'] > 0 && UserCouponModel::setIsUse($order['coupon_id'], false);
         // 回退用户积分

+ 3 - 5
app/common/service/goods/source/Main.php

@@ -102,10 +102,9 @@ class Main extends Basics
      * 回退商品库存事件 (用于取消订单时调用)
      * @param mixed $goodsList 订单商品列表
      * @param bool $isPayOrder 是否为已支付订单
-     * @return array|false
-     * @throws \Exception
+     * @return bool
      */
-    public function backGoodsStock($goodsList, bool $isPayOrder = false)
+    public function backGoodsStock($goodsList, bool $isPayOrder = false): bool
     {
         $goodsData = [];
         $goodsSkuData = [];
@@ -128,8 +127,7 @@ class Main extends Basics
         // 更新商品总库存
         !empty($goodsData) && $this->updateGoods($goodsData);
         // 更新商品sku库存
-        !empty($goodsSkuData) && $this->updateGoodsSku($goodsSkuData);
-        return true;
+        return !empty($goodsSkuData) && $this->updateGoodsSku($goodsSkuData);
     }
 
     /**