From 35eb3d2010802360d9ebb845434faf6fd73026a8 Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Sat, 24 Feb 2024 12:01:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BA=97=E9=93=BA=E6=8A=B5?= =?UTF-8?q?=E6=89=A3=E5=88=B8=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/coupon/StoreCouponRepository.php | 48 +++++++++++++++++++ .../order/StoreOrderCreateRepository.php | 34 ++----------- 2 files changed, 52 insertions(+), 30 deletions(-) diff --git a/app/common/repositories/store/coupon/StoreCouponRepository.php b/app/common/repositories/store/coupon/StoreCouponRepository.php index b5c94170..af2e999e 100644 --- a/app/common/repositories/store/coupon/StoreCouponRepository.php +++ b/app/common/repositories/store/coupon/StoreCouponRepository.php @@ -686,4 +686,52 @@ class StoreCouponRepository extends BaseRepository } } + + /** + * 过滤不可用的店铺券 + * @param $merchantCart + * @param $product_price + * @param $svip_coupon_merge + * @param $use_svip + * @return mixed + */ + public function filterStoreCoupon($merchantCart, $product_price, $svip_coupon_merge, $use_svip) + { + foreach ($merchantCart['coupon'] as &$coupon) { + if ($coupon['coupon']['type'] == self::TYPE_STORE_ALL) { + continue; + } + $coupon['disabled'] = false; + $coupon['checked'] = false; + if ($coupon['coupon']['type'] == self::TYPE_STORE_COUPON) { + $coupon['disabled'] = true; + foreach ($merchantCart['list'] as $cart) { + if ($cart['productAttr']['profit_rate'] >= 10) { + $coupon['disabled'] = false; + } + } + } else { + if (count(array_intersect(array_column($coupon['product'], 'product_id'), array_keys($product_price))) == 0) { + $coupon['disabled'] = true; + continue; + } + if ($svip_coupon_merge != '1' && $use_svip) { + $coupon['disabled'] = true; + continue; + } + $flag = false; + foreach ($coupon['product'] as $_product) { + if (isset($product_price[$_product['product_id']]) && $product_price[$_product['product_id']] >= $coupon['use_min_price']) { + $flag = true; + break; + } + } + if (!$flag) { + $coupon['disabled'] = true; + } + } + } + return $merchantCart; + } + } diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index 2f80eb99..33479af6 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -330,36 +330,9 @@ class StoreOrderCreateRepository extends StoreOrderRepository } //过滤不可用店铺优惠券 - foreach ($merchantCart['coupon'] as &$coupon) { - if (in_array($coupon['coupon']['type'], [0, 2])) continue; - - $coupon['disabled'] = false; - $coupon['checked'] = false; - - if (count(array_intersect(array_column($coupon['product'], 'product_id'), array_keys($product_price))) == 0) { - $coupon['disabled'] = true; - continue; - } - if ($svip_coupon_merge != '1' && $use_svip) { - $coupon['disabled'] = true; - continue; - } - $flag = false; - foreach ($coupon['product'] as $_product) { - if (isset($product_price[$_product['product_id']]) && $product_price[$_product['product_id']] >= $coupon['use_min_price']) { - $flag = true; - break; - } - } - if (!$flag) { - $coupon['disabled'] = true; - } -// if (!$coupon['disabled']) { -// $all_coupon_product[] = $coupon['coupon_user_id']; -// } - } - - unset($coupon); + /** @var StoreCouponRepository $storeCouponRepo */ + $storeCouponRepo = app()->make(StoreCouponRepository::class); + $merchantCart = $storeCouponRepo->filterStoreCoupon($merchantCart, $product_price, $svip_coupon_merge, $use_svip); //if ($useCouponFlag && count(array_diff($all_coupon_product, $use_coupon_product))) { // throw new ValidateException('请选择有效的商品券'); @@ -394,6 +367,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository //计算店铺券 foreach ($merchantCart['coupon'] as &$coupon) { if (!in_array($coupon['coupon']['type'], [0, 2])) continue; + if (isset($coupon['disabled']) && $coupon['disabled']) continue; $coupon['checked'] = false; $coupon['disabled'] = $pay_price <= 0; $couponUsed = 0;