From 457b40e054a68d0dc5b5fc755cdf468e5d37ab28 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 06 十二月 2024 10:19:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 97 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 83 insertions(+), 14 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 b20d3cd..b5cf7dd 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
@@ -14,8 +14,12 @@
import com.ruoyi.account.api.vo.PaymentUserCoupon;
import com.ruoyi.account.api.vo.PaymentUserCouponVo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.mapper.ShoppingCartMapper;
+import com.ruoyi.order.model.Order;
+import com.ruoyi.order.model.OrderGood;
+import com.ruoyi.order.model.ShoppingCart;
import com.ruoyi.order.service.OrderGoodService;
import com.ruoyi.order.service.OrderService;
import com.ruoyi.order.service.ShoppingCartService;
@@ -26,9 +30,6 @@
import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds;
import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
import lombok.Data;
-import com.ruoyi.model.Order;
-import com.ruoyi.model.OrderGood;
-import com.ruoyi.model.ShoppingCart;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -36,6 +37,7 @@
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -339,11 +341,14 @@
return R.fail("修改数量不能小于等于0");
}
ShoppingCart shoppingCart = this.getById(setGoodsNumber.getId());
- Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
- if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && goods.getPurchaseLimit() < setGoodsNumber.getNumber()){
- return R.fail("修改数量不能大于限购数量");
- }
+
if(null != shoppingCart){
+
+ Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
+ if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && goods.getPurchaseLimit() < setGoodsNumber.getNumber()){
+ return R.fail("修改数量不能大于限购数量");
+ }
+
shoppingCart.setNumber(setGoodsNumber.getNumber());
this.updateById(shoppingCart);
}
@@ -395,7 +400,7 @@
confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
}
BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
- confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1") ? true : false);
+ confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1"));
int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
confirmOrderVo.setEarnPoint(earnPoint);
//支付金额,订单金额-订单优惠
@@ -792,6 +797,9 @@
order.setPaymentAmount(paymentMoney);
order.setPoint(orderPoint);
order.setPayMethod(shoppingCartPayment.getPaymentType());
+ if(StringUtils.isNotEmpty(shoppingCartPayment.getExpectedDeliveryTime())){
+ order.setExpectedDeliveryTime(shoppingCartPayment.getExpectedDeliveryTime());
+ }
if(3 != shoppingCartPayment.getPaymentType() && (fullReductionAmount.compareTo(BigDecimal.ZERO) > 0 ||moneyAmount.compareTo(BigDecimal.ZERO) > 0 || discountAmount.compareTo(BigDecimal.ZERO) > 0)){
order.setCouponJson(JSON.toJSONString(couponInfoVo));
}
@@ -811,10 +819,18 @@
if(2 == shoppingCartPayment.getPaymentType()){
BigDecimal balance = appUser.getBalance();
- if(balance.compareTo(paymentMoney.add(expressFee)) < 0){
+ if(balance.compareTo(paymentMoney) < 0){
return R.fail("账户余额不足");
}
}
+ //判断运费支付是否足够
+ if(2 == shoppingCartPayment.getFreightPaymentType() && expressFee.compareTo(BigDecimal.ZERO) > 0){
+ BigDecimal balance = appUser.getBalance();
+ if(balance.compareTo(expressFee) < 0){
+ return R.fail("账户余额不足");
+ }
+ }
+
orderService.save(order);
//构建订单明细数据
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
@@ -952,11 +968,64 @@
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
}
- //修改订支付状态
- order.setPayStatus(2);
- orderService.updateById(order);
- //删除购物车数据
- this.removeBatchByIds(ids);
+ //如果有运费,需要先扣除账户积分,再进行支付。支付成功后修改订单状态,未支付成功则回退积分,删除的订单
+ if(expressFee.compareTo(BigDecimal.ZERO) > 0){
+ if(shoppingCartPayment.getFreightPaymentType() == 1){
+ //调起微信支付
+ }
+ if(shoppingCartPayment.getFreightPaymentType() == 2){
+ 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);
+ appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+ appUser.setBalance(balance);
+ }else{
+ expressFee = expressFee.subtract(totalRedPacketAmount);
+ totalRedPacketAmount = BigDecimal.ZERO;
+ if(expressFee.compareTo(totalDistributionAmount) <= 0){
+ totalDistributionAmount = totalDistributionAmount.subtract(expressFee);
+ balance = balance.subtract(expressFee);
+ appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+ appUser.setTotalDistributionAmount(totalDistributionAmount);
+ appUser.setBalance(balance);
+ }else{
+ expressFee = expressFee.subtract(totalDistributionAmount);
+ totalDistributionAmount = BigDecimal.ZERO;
+ balance = balance.subtract(expressFee);
+ appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+ appUser.setTotalDistributionAmount(totalDistributionAmount);
+ appUser.setBalance(balance);
+ }
+ }
+
+ appUserClient.editAppUserById(appUser);
+ //构建余额明细变动记录
+ BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
+ balanceChangeRecord.setAppUserId(appUser.getId());
+ balanceChangeRecord.setOrderId(order.getId());
+ balanceChangeRecord.setChangeType(5);
+ balanceChangeRecord.setBeforeAmount(balance.add(paymentMoney));
+ balanceChangeRecord.setChangeAmount(paymentMoney);
+ balanceChangeRecord.setAfterAmount(balance);
+ balanceChangeRecord.setDelFlag(0);
+ balanceChangeRecord.setCreateTime(LocalDateTime.now());
+ balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
+ //修改订支付状态
+ order.setPayStatus(2);
+ orderService.updateById(order);
+ //删除购物车数据
+ this.removeBatchByIds(ids);
+ }
+ }else{
+ //修改订支付状态
+ order.setPayStatus(2);
+ orderService.updateById(order);
+ //删除购物车数据
+ this.removeBatchByIds(ids);
+ }
}
return R.ok();
}
--
Gitblit v1.7.1