From 3de79cb08809a47a91d354331ab166ab7cc87dc6 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 13 一月 2025 11:02:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 107 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 69 insertions(+), 38 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 80522d8..0bad0c1 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -485,19 +485,26 @@
//满XX才打折,只有现金才能优惠
if((confirmOrderVo.getUseSimultaneously() || (!confirmOrderVo.getUseSimultaneously() && activityAmount.equals(BigDecimal.ZERO)))
&& null != orderActivityInfo && confirmOrder.getPaymentType() == 1){
+ BigDecimal zyh = BigDecimal.ZERO;
+ OrderActivityInfo activityInfo1 = null;
for (OrderActivityInfo activityInfo : orderActivityInfo) {
if(activityInfo.getConditionAmount().compareTo(paymentMoney) <= 0){
- confirmOrderVo.setActivityName(activityInfo.getActivityName());
//优惠后的支付金额
BigDecimal multiply = activityInfo.getDiscount().divide(new BigDecimal(10)).multiply(paymentMoney);
//优惠金额
BigDecimal bigDecimal = paymentMoney.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN);
- paymentMoney = multiply;
- activityAmount = activityAmount.add(bigDecimal);
- break;
+ if(bigDecimal.compareTo(zyh) > 0){
+ zyh = bigDecimal;
+ activityInfo1 = activityInfo;
+ }
}
}
+ if(null != activityInfo1){
+ confirmOrderVo.setActivityName(activityInfo1.getActivityName());
+ paymentMoney = paymentMoney.subtract(zyh);
+ activityAmount = activityAmount.add(zyh);
+ }
}
confirmOrderVo.setDiscountAmount(activityAmount);
int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
@@ -761,9 +768,6 @@
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
orderPoint += (myShoppingCartVo.getPoint() * myShoppingCartVo.getNumber());
}
- if(appUser.getLavePoint().intValue() < orderPoint){
- return R.fail("账户剩余积分不足");
- }
}
//现金的支付金额
BigDecimal paymentMoney = orderMoney;
@@ -856,17 +860,21 @@
OrderActivityInfo orderActivityInfo1 = null;
if((1 == status || null == shoppingCartPayment.getUserCouponId()) &&
null != orderActivityInfo && shoppingCartPayment.getPaymentType() != 3){
+ //找出最优会的金额
+ BigDecimal zyh = BigDecimal.ZERO;
for (OrderActivityInfo activityInfo : orderActivityInfo) {
if(activityInfo.getConditionAmount().compareTo(paymentMoney) <= 0){
BigDecimal paymentMoney1 = activityInfo.getDiscount().divide(new BigDecimal(10)).multiply(paymentMoney);
BigDecimal bigDecimal = paymentMoney.subtract(paymentMoney1).setScale(2, RoundingMode.HALF_EVEN);
- discount = activityInfo.getDiscount();
- paymentMoney = paymentMoney1;
- activityAmount = activityAmount.add(bigDecimal);
- orderActivityInfo1 = activityInfo;
- break;
+ if(bigDecimal.compareTo(zyh) > 0){
+ zyh = bigDecimal;
+ orderActivityInfo1 = activityInfo;
+ }
}
}
+
+ paymentMoney = paymentMoney.subtract(zyh);
+ activityAmount = activityAmount.add(zyh);
}
//可获得的消费积分
@@ -931,8 +939,9 @@
}
if(3 != shoppingCartPayment.getPaymentType() && (fullReductionAmount.compareTo(BigDecimal.ZERO) > 0 ||moneyAmount.compareTo(BigDecimal.ZERO) > 0 || discountAmount.compareTo(BigDecimal.ZERO) > 0)){
order.setCouponJson(JSON.toJSONString(couponInfoVo));
+ order.setUserCouponId(shoppingCartPayment.getUserCouponId());
}
- if(activityAmount.compareTo(BigDecimal.ZERO) > 0){
+ if(null != orderActivityInfo1){
order.setActivityJson(JSON.toJSONString(orderActivityInfo1));
}
if(null != shoppingCartPayment.getUserAddressId()){
@@ -956,7 +965,7 @@
if(3 == shoppingCartPayment.getPaymentType()){
Integer availablePoint = appUser.getAvailablePoint();
if(availablePoint < orderPoint){
- return R.fail("账户积分不足");
+ return R.fail("账户可用积分不足");
}
}
//判断运费支付是否足够
@@ -1043,27 +1052,28 @@
BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount();
BigDecimal balance = appUser.getBalance();
//红包金额满足支付
- if(paymentMoney.compareTo(totalRedPacketAmount) <= 0){
- totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney);
- balance = balance.subtract(paymentMoney);
+ BigDecimal paymentMoney1 = paymentMoney;
+ if(paymentMoney1.compareTo(totalRedPacketAmount) <= 0){
+ totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney1);
+ balance = balance.subtract(paymentMoney1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setBalance(balance);
- redPacketAmount = paymentMoney;
+ redPacketAmount = paymentMoney1;
}else{
- paymentMoney = paymentMoney.subtract(totalRedPacketAmount);
+ paymentMoney1 = paymentMoney1.subtract(totalRedPacketAmount);
redPacketAmount = totalRedPacketAmount;
totalRedPacketAmount = BigDecimal.ZERO;
- if(paymentMoney.compareTo(totalDistributionAmount) <= 0){
- totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney);
- balance = balance.subtract(paymentMoney);
+ if(paymentMoney1.compareTo(totalDistributionAmount) <= 0){
+ totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney1);
+ balance = balance.subtract(paymentMoney1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
- distributionAmount = paymentMoney;
+ distributionAmount = paymentMoney1;
}else{
- paymentMoney = paymentMoney.subtract(totalDistributionAmount);
+ paymentMoney1 = paymentMoney1.subtract(totalDistributionAmount);
totalDistributionAmount = BigDecimal.ZERO;
- balance = balance.subtract(paymentMoney);
+ balance = balance.subtract(paymentMoney1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
@@ -1128,6 +1138,15 @@
orderService.updateById(order);
//删除购物车数据
this.removeBatchByIds(ids);
+ //处理优惠券
+ if(null != order.getUserCouponId()){
+ UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
+ if(null != userCoupon && 1 == userCoupon.getStatus()){
+ userCoupon.setStatus(2);
+ userCoupon.setUseTime(LocalDateTime.now());
+ userCouponClient.editUserCoupon(userCoupon);
+ }
+ }
}
//积分支付
if(3 == shoppingCartPayment.getPaymentType()){
@@ -1189,27 +1208,28 @@
BigDecimal totalRedPacketAmount = appUser.getTotalRedPacketAmount();
BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount();
BigDecimal balance = appUser.getBalance();
- if(expressFee.compareTo(totalRedPacketAmount) <= 0){
- totalRedPacketAmount = totalRedPacketAmount.subtract(expressFee);
- balance = balance.subtract(expressFee);
+ BigDecimal expressFee1 = expressFee;
+ if(expressFee1.compareTo(totalRedPacketAmount) <= 0){
+ totalRedPacketAmount = totalRedPacketAmount.subtract(expressFee1);
+ balance = balance.subtract(expressFee1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setBalance(balance);
- redPacketAmount = expressFee;
+ redPacketAmount = expressFee1;
}else{
- expressFee = expressFee.subtract(totalRedPacketAmount);
+ expressFee1 = expressFee1.subtract(totalRedPacketAmount);
redPacketAmount = totalRedPacketAmount;
totalRedPacketAmount = BigDecimal.ZERO;
- if(expressFee.compareTo(totalDistributionAmount) <= 0){
- totalDistributionAmount = totalDistributionAmount.subtract(expressFee);
- balance = balance.subtract(expressFee);
+ if(expressFee1.compareTo(totalDistributionAmount) <= 0){
+ totalDistributionAmount = totalDistributionAmount.subtract(expressFee1);
+ balance = balance.subtract(expressFee1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
- distributionAmount = expressFee;
+ distributionAmount = expressFee1;
}else{
- expressFee = expressFee.subtract(totalDistributionAmount);
+ expressFee1 = expressFee1.subtract(totalDistributionAmount);
totalDistributionAmount = BigDecimal.ZERO;
- balance = balance.subtract(expressFee);
+ balance = balance.subtract(expressFee1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
@@ -1223,8 +1243,8 @@
balanceChangeRecord.setAppUserId(appUser.getId());
balanceChangeRecord.setOrderId(order.getId());
balanceChangeRecord.setChangeType(5);
- balanceChangeRecord.setBeforeAmount(balance.add(paymentMoney));
- balanceChangeRecord.setChangeAmount(paymentMoney);
+ balanceChangeRecord.setBeforeAmount(balance.add(expressFee));
+ balanceChangeRecord.setChangeAmount(expressFee);
balanceChangeRecord.setAfterAmount(balance);
balanceChangeRecord.setDelFlag(0);
balanceChangeRecord.setCreateTime(LocalDateTime.now());
@@ -1330,6 +1350,17 @@
order.setOrderStatus(2);
}
orderService.updateById(order);
+
+ //处理优惠券
+ if(null != order.getUserCouponId()){
+ UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
+ if(null != userCoupon && 1 == userCoupon.getStatus()){
+ userCoupon.setStatus(2);
+ userCoupon.setUseTime(LocalDateTime.now());
+ userCouponClient.editUserCoupon(userCoupon);
+ }
+ }
+
//删除购物车数据
Long userid = tokenService.getLoginUserApplet().getUserid();
List<OrderGood> list = orderGoodService.list(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, order.getId()));
--
Gitblit v1.7.1