From b9211cbb48d809f813be40cf2aee0128936edc4d Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Fri, 23 Feb 2024 15:39:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E6=89=A3=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/StoreOrderCreateRepository.php | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index 26952ca7..8048f95f 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -390,6 +390,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository unset($coupon); $pay_price = max(bcsub($valid_total_price, $coupon_price, 2), 0); $_pay_price = $pay_price; + $cartCoupon = []; //购物车各商品的优惠券信息 //计算店铺券 foreach ($merchantCart['coupon'] as &$coupon) { if (!in_array($coupon['coupon']['type'], [0, 2])) continue; @@ -419,6 +420,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository [$payPrice, $useAmount, $couponUsed] = $storeCouponUserDao->couponByProduct($coupon['coupon_type']); $coupon_price = bcadd($coupon_price, $useAmount, 2); $_pay_price = bcsub($_pay_price, $useAmount, 2); + $cartCoupon[$cart['cart_id']][] = ['coupon_user_id' => $coupon['coupon_user_id'], 'coupon_price' => $useAmount, 'true_price' => $payPrice]; } } else { $coupon_price = bcadd($coupon_price, $coupon['coupon_price'], 2); @@ -439,7 +441,8 @@ class StoreOrderCreateRepository extends StoreOrderRepository $productCouponRate[$productId] = [ 'rate' => $product_price[$productId] > 0 ? bcdiv($coupon['coupon_price'], $product_price[$productId], 4) : 1, 'coupon_price' => $coupon['coupon_price'], - 'price' => $product_price[$productId] + 'price' => $product_price[$productId], + 'coupon_user_id' => $coupon['coupon_user_id'] ]; $useCouponIds[] = $coupon['coupon_user_id']; } @@ -448,7 +451,8 @@ class StoreOrderCreateRepository extends StoreOrderRepository $storeCouponRate = [ 'rate' => $pay_price > 0 ? bcdiv($use_store_coupon['coupon_price'], $pay_price, 4) : 1, 'coupon_price' => $use_store_coupon['coupon_price'], - 'price' => $coupon_price + 'price' => $coupon_price, + 'coupon_user_id' => $use_store_coupon['coupon_user_id'] ]; $useCouponIds[] = $use_store_coupon['coupon_user_id']; } @@ -465,27 +469,35 @@ class StoreOrderCreateRepository extends StoreOrderRepository } else { array_pop($product_cart); if (!count($product_cart)) { + $cartCoupon[$cart['cart_id']][] = ['coupon_user_id' => $productCouponRate[$cart['product_id']]['coupon_user_id'], 'coupon_price' => $productCouponRate[$cart['product_id']]['coupon_price']]; $cartTotalPrice = bcsub($cartTotalPrice, $productCouponRate[$cart['product_id']]['coupon_price'], 2); $productCouponRate[$cart['product_id']]['coupon_price'] = 0; } else { - $couponPrice = bcmul($cartTotalPrice, $productCouponRate[$cart['product_id']]['rate'], 2); + $couponPrice = $productCouponRate[$cart['product_id']]['coupon_price']; $cartTotalPrice = bcsub($cartTotalPrice, $couponPrice, 2); $productCouponRate[$cart['product_id']]['coupon_price'] = bcsub($productCouponRate[$cart['product_id']]['coupon_price'], $couponPrice, 2); + $cartCoupon[$cart['cart_id']][] = ['coupon_user_id' => $productCouponRate[$cart['product_id']]['coupon_user_id'], 'coupon_price' => $couponPrice]; } } } //(店铺券) if ($storeCouponRate && $cartTotalPrice > 0) { - if ($storeCouponRate['rate'] >= 1) { - $cartTotalPrice = 0; + if (isset($cartCoupon[$cart['cart_id']])) { + $couponPrice = $cartCoupon[$cart['cart_id']][0]['coupon_price']; + $cartTotalPrice = bcsub($cartTotalPrice, $couponPrice, 2); + $storeCouponRate['coupon_price'] = bcsub($storeCouponRate['coupon_price'], $couponPrice, 2); } else { - if (count($merchantCart['list']) == $_k + 1) { - $cartTotalPrice = bcsub($cartTotalPrice, $storeCouponRate['coupon_price'], 2); + if ($storeCouponRate['rate'] >= 1) { + $cartTotalPrice = 0; } else { - $couponPrice = bcmul($cartTotalPrice, $storeCouponRate['rate'], 2); - $cartTotalPrice = bcsub($cartTotalPrice, $couponPrice, 2); - $storeCouponRate['coupon_price'] = bcsub($storeCouponRate['coupon_price'], $couponPrice, 2); + if (count($merchantCart['list']) == $_k + 1) { + $cartTotalPrice = bcsub($cartTotalPrice, $storeCouponRate['coupon_price'], 2); + } else { + $couponPrice = bcmul($cartTotalPrice, $storeCouponRate['rate'], 2); + $cartTotalPrice = bcsub($cartTotalPrice, $couponPrice, 2); + $storeCouponRate['coupon_price'] = bcsub($storeCouponRate['coupon_price'], $couponPrice, 2); + } } } } @@ -520,6 +532,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository 'svip_discount' => $total_svip_discount, 'use_svip' => $use_svip, 'order_refund_switch' => $order_refund_switch, + 'store_coupon' => $cartCoupon, ]; $order_total_postage = bcadd($order_total_postage, $postage_price, 2); $order_svip_discount = bcadd($total_svip_discount, $order_svip_discount, 2); @@ -1173,7 +1186,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository } } if (!empty($useCoupon[$order['mer_id']])) { - $storeCouponUserDao->reduce($useCoupon[$order['mer_id']][0], $order['total_price']); + $storeCouponUserDao->reduceAll($order['cartInfo']['order']['store_coupon']); } } @@ -1188,7 +1201,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository //使用了平台优惠券 if (!empty($useCoupon[0])) { - $storeCouponUserDao->reduce($useCoupon[0][0], $groupOrder['total_price']); + $storeCouponUserDao->reduce($useCoupon[0][0], $orderInfo['total_platform_coupon_price']); } //创建订单