gorden 7 ماه پیش
والد
کامیت
017984bf96
1فایلهای تغییر یافته به همراه34 افزوده شده و 31 حذف شده
  1. 34 31
      app/admin/service/order/OrderService.php

+ 34 - 31
app/admin/service/order/OrderService.php

@@ -441,36 +441,39 @@ class OrderService
      */
     public static function payUseCoupon($memberId, $goods, $coupon, $payAmount)
     {
-        dump("进到payUseCoupon");
-        foreach ($coupon as $item) {
-            if (!in_array(substr($item, 0, 2), ['CU', 'CO'])) {
-                return [];
+        try {
+            foreach ($coupon as $item) {
+                if (!in_array(substr($item, 0, 2), ['CU', 'CO'])) {
+                    return [];
+                }
             }
-        }
-        $amountBalance = [
-            'pay_amount' => $payAmount,
-            'welfare_balance' => 0,
-            'cut_balance' => 0,
-        ];
-        foreach ($goods as $good) {
-            $result = OrderService::useCoupon($memberId, $goods, $good, $coupon, $amountBalance);
             $amountBalance = [
-                'pay_amount' => $result['pay_amount'],
-                'welfare_balance' => $result['welfare_balance'],
-                'cut_balance' => $result['cut_balance'],
+                'pay_amount' => $payAmount,
+                'welfare_balance' => 0,
+                'cut_balance' => 0,
             ];
-        }
+            foreach ($goods as $good) {
+                $result = OrderService::useCoupon($memberId, $goods, $good, $coupon, $amountBalance);
+                $amountBalance = [
+                    'pay_amount' => $result['pay_amount'],
+                    'welfare_balance' => $result['welfare_balance'],
+                    'cut_balance' => $result['cut_balance'],
+                ];
+            }
 
-        $couponDetailsIds = Redis::sMembers("ORDER:USE:COUPON:" . $memberId);
-        Redis::del("ORDER:USE:COUPON:" . $memberId);
-        $useCouponJson = Redis::get("ORDER:USE:COUPON:DISCOUNT:" . $memberId);
-        Redis::del("ORDER:USE:COUPON:DISCOUNT:" . $memberId);
+            $couponDetailsIds = Redis::sMembers("ORDER:USE:COUPON:" . $memberId);
+            Redis::del("ORDER:USE:COUPON:" . $memberId);
+            $useCouponJson = Redis::get("ORDER:USE:COUPON:DISCOUNT:" . $memberId);
+            Redis::del("ORDER:USE:COUPON:DISCOUNT:" . $memberId);
 
-        return [
-            'pay_amount' => $amountBalance['pay_amount'],
-            'detail_ids' => $couponDetailsIds,
-            'use_coupon_json' => $useCouponJson ?? []
-        ];
+            return [
+                'pay_amount' => $amountBalance['pay_amount'],
+                'detail_ids' => $couponDetailsIds,
+                'use_coupon_json' => $useCouponJson ?? []
+            ];
+        } catch (\Exception $e) {
+            dump($e->getTrace());
+        }
     }
 
     public static function useCoupon($memberId, $goods, $good, $coupon, $amountBalance)
@@ -524,7 +527,7 @@ class OrderService
                             'coupon_detail_id' => [$couponDetail->coupon_detail_id]
                         ];
                         Redis::set($cacheDiscountKey, json_encode($discountData, JSON_UNESCAPED_UNICODE));
-                        CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED','coupon_detail_used_datetime'=>date('Y-m-d H:i:s')]);
+                        CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED', 'coupon_detail_used_datetime' => date('Y-m-d H:i:s')]);
                     }
                 } elseif ($couponDetail->coupon_classify == '折扣券') {
                     if (Redis::sIsMember($cacheKey, $couponId)) {
@@ -542,14 +545,14 @@ class OrderService
                             'coupon_detail_id' => [$couponDetail->coupon_detail_id]
                         ];
                         Redis::set($cacheDiscountKey, json_encode($discountData, JSON_UNESCAPED_UNICODE));
-                        CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED','coupon_detail_used_datetime'=>date('Y-m-d H:i:s')]);
+                        CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED', 'coupon_detail_used_datetime' => date('Y-m-d H:i:s')]);
                     }
                 } elseif (in_array($couponDetail->coupon_classify, ['抵用券', '赠品券'])) {
                     if (Redis::sIsMember($cacheKey, $couponId)) {
                         continue;
                     }
                     Redis::sAdd($cacheKey, $couponId);
-                    CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED','coupon_detail_used_datetime'=>date('Y-m-d H:i:s')]);
+                    CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED', 'coupon_detail_used_datetime' => date('Y-m-d H:i:s')]);
                     if ($good['nbr'] > 1) {
                         $diyongAmount = $good['goods_sales_price'];
                         $payAmount = $payAmount - $diyongAmount;
@@ -570,7 +573,7 @@ class OrderService
                         continue;
                     }
                     Redis::sAdd($cacheKey, $couponId);
-                    CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED','coupon_detail_used_datetime'=>date('Y-m-d H:i:s')]);
+                    CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED', 'coupon_detail_used_datetime' => date('Y-m-d H:i:s')]);
                     $fuliAmount = 0;
                     if (!empty($couponDetail->coupon_value)) {
                         $fuliAmount = $couponDetail->coupon_value;
@@ -578,7 +581,7 @@ class OrderService
 
                     if ($fuliAmount >= $countAndAmount['amount']) {
                         $preferentialAmount = $countAndAmount['amount'];
-                    }else{
+                    } else {
                         $preferentialAmount = $fuliAmount;
                     }
                     $payAmount = $payAmount - $preferentialAmount;
@@ -716,7 +719,7 @@ class OrderService
                     }
                     if ($fuliAmount >= $countAndAmount['amount']) {
                         $preferentialAmount = $countAndAmount['amount'];
-                    }else{
+                    } else {
                         $preferentialAmount = $fuliAmount;
                     }
                     $payAmount = $payAmount - $preferentialAmount;