gorden 6 mesi fa
parent
commit
e58b10302c
1 ha cambiato i file con 32 aggiunte e 0 eliminazioni
  1. 32 0
      app/admin/service/order/OrderService.php

+ 32 - 0
app/admin/service/order/OrderService.php

@@ -508,9 +508,13 @@ class OrderService
                     continue;
                 }
                 if (in_array($couponDetail->coupon_classify, ['立减券', '满减券'])) {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
                     if ($couponDetail->coupon_category == 'PIECE' || ($couponDetail->coupon_category == 'NORMAL' && $countAndAmount['amount'] >= $couponDetail->coupon_minimum_limit)) {
                         if (!Redis::sIsMember($cacheKey, $couponId)) {
                             Redis::sAdd($cacheKey, $couponId);
+                            Redis::sAdd($cacheKey, $goodsId);
                             $cutBalance = $couponDetail->coupon_value;
                         }
                         if ($cutBalance - $money >= 0) {
@@ -532,6 +536,10 @@ class OrderService
                         CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED']);
                     }
                 } elseif ($couponDetail->coupon_classify == '折扣券') {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
+                    Redis::sAdd($cacheKey, $goodsId);
                     if ($couponDetail->coupon_category == 'PIECE' || ($couponDetail->coupon_category == 'NORMAL' && $countAndAmount['amount'] >= $couponDetail->coupon_minimum_limit)) {
                         $payAmount = $payAmount - ($money * $couponDetail->coupon_value / 100);
                         if (!empty($discountData[$couponId]['coupon_value'])) {
@@ -550,6 +558,10 @@ class OrderService
                         CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED']);
                     }
                 } elseif (in_array($couponDetail->coupon_classify, ['抵用券', '赠品券'])) {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
+                    Redis::sAdd($cacheKey, $goodsId);
                     if ($couponDetail->coupon_category == 'PIECE' || ($couponDetail->coupon_category == 'NORMAL' && $countAndAmount['amount'] >= $couponDetail->coupon_minimum_limit)) {
                         $diyongCouponDetailIds = CouponDetail::leftJoin('coupon_goods', 'coupon_goods.join_goods_coupon_id', '=', 'coupon_detail.join_detail_coupon_id')
                             ->where('join_detail_coupon_id', $couponId)
@@ -603,7 +615,11 @@ class OrderService
                         Redis::set($cacheDiscountKey, json_encode($discountData,JSON_UNESCAPED_UNICODE));
                     }
                 } elseif ($couponDetail->coupon_classify == '福利券') {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
                     if (!Redis::sIsMember($cacheKey, $couponId)) {
+                        Redis::sAdd($cacheKey, $goodsId);
                         Redis::sAdd($cacheKey, $couponId);
                         CouponDetail::where('coupon_detail_id', $couponDetail->coupon_detail_id)->update(['coupon_detail_status' => 'USED']);
                         $welfareBalance = $couponDetail->coupon_value;
@@ -712,9 +728,13 @@ class OrderService
                     continue;
                 }
                 if (in_array($couponDetail->coupon_classify, ['立减券', '满减券'])) {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
                     if ($couponDetail->coupon_category == 'PIECE' || ($couponDetail->coupon_category == 'NORMAL' && $countAndAmount['amount'] >= $couponDetail->coupon_minimum_limit)) {
                         if (!Redis::sIsMember($cacheKey, $couponId)) {
                             Redis::sAdd($cacheKey, $couponId);
+                            Redis::sAdd($cacheKey, $goodsId);
                             $cutBalance = $couponDetail->coupon_value;
                         }
                         if ($cutBalance - $money >= 0) {
@@ -726,10 +746,18 @@ class OrderService
                         }
                     }
                 } elseif ($couponDetail->coupon_classify == '折扣券') {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
+                    Redis::sAdd($cacheKey, $goodsId);
                     if ($couponDetail->coupon_category == 'PIECE' || ($couponDetail->coupon_category == 'NORMAL' && $countAndAmount['amount'] >= $couponDetail->coupon_minimum_limit)) {
                         $payAmount = $payAmount - ($money * $couponDetail->coupon_value / 100);
                     }
                 } elseif (in_array($couponDetail->coupon_classify, ['抵用券', '赠品券'])) {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
+                    Redis::sAdd($cacheKey, $goodsId);
                     if ($couponDetail->coupon_category == 'PIECE' || ($couponDetail->coupon_category == 'NORMAL' && $countAndAmount['amount'] >= $couponDetail->coupon_minimum_limit)) {
                         $diyongCouponDetailIds = CouponDetail::leftJoin('coupon_goods', 'coupon_goods.join_goods_coupon_id', '=', 'coupon_detail.join_detail_coupon_id')
                             ->where('join_detail_coupon_id', $couponId)
@@ -763,8 +791,12 @@ class OrderService
                         }
                     }
                 } elseif ($couponDetail->coupon_classify == '福利券') {
+                    if (Redis::sIsMember($cacheKey, $goodsId)) {
+                        continue;
+                    }
                     if (!Redis::sIsMember($cacheKey, $couponId)) {
                         Redis::sAdd($cacheKey, $couponId);
+                        Redis::sAdd($cacheKey, $goodsId);
                         $welfareBalance = $couponDetail->coupon_value;
                     }
                     if ($welfareBalance >= $money) {