调整店铺抵扣券使用

This commit is contained in:
luofei 2024-02-24 12:01:09 +08:00
parent 7d67779fea
commit 35eb3d2010
2 changed files with 52 additions and 30 deletions

View File

@ -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;
}
}

View File

@ -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;