From 2bdbc6648cb4e340d057063324f46c2fce013544 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 23 十二月 2024 10:36:10 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 75 ++++++++++++++++++++++++++-----------
1 files changed, 52 insertions(+), 23 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 94fdcd3..08a06b7 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
@@ -15,12 +15,10 @@
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.mapper.ShoppingCartMapper;
import com.ruoyi.order.model.Order;
+import com.ruoyi.order.model.OrderBalancePayment;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.model.ShoppingCart;
-import com.ruoyi.order.service.CommissionService;
-import com.ruoyi.order.service.OrderGoodService;
-import com.ruoyi.order.service.OrderService;
-import com.ruoyi.order.service.ShoppingCartService;
+import com.ruoyi.order.service.*;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.other.api.feignClient.*;
@@ -108,6 +106,18 @@
+
+ @Resource
+ private PointSettingClient pointSettingClient;
+
+ @Resource
+ private OrderBalancePaymentService orderBalancePaymentService;
+
+
+
+
+
+
/**
* 获取购物车列表
* @param type
@@ -248,7 +258,7 @@
price.setEarnSpendingPoints(goodsSeckill.getEarnSpendingPoints());
price.setSuperiorSubcommission(goodsSeckill.getSuperiorSubcommission());
price.setSuperiorRebatePoints(goodsSeckill.getSuperiorRebatePoints());
- price.setSuperiorType(goodsSeckill.getSuperiorType());
+ price.setSuperiorType(String.valueOf(goodsSeckill.getSuperiorType()));
price.setServuceShopCharges(goodsSeckill.getServuceShopCharges());
price.setServuceShopPoints(goodsSeckill.getServuceShopPoints());
price.setTechnicianPoints(goodsSeckill.getTechnicianPoints());
@@ -854,17 +864,22 @@
}
//账户余额
+ BigDecimal redPacketAmount = BigDecimal.ZERO;
+ BigDecimal distributionAmount = BigDecimal.ZERO;
if(2 == shoppingCartPayment.getPaymentType()){
BigDecimal totalRedPacketAmount = appUser.getTotalRedPacketAmount();
BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount();
BigDecimal balance = appUser.getBalance();
+ //红包金额满足支付
if(paymentMoney.compareTo(totalRedPacketAmount) <= 0){
totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney);
balance = balance.subtract(paymentMoney);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setBalance(balance);
+ redPacketAmount = paymentMoney;
}else{
paymentMoney = paymentMoney.subtract(totalRedPacketAmount);
+ redPacketAmount = totalRedPacketAmount;
totalRedPacketAmount = BigDecimal.ZERO;
if(paymentMoney.compareTo(totalDistributionAmount) <= 0){
totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney);
@@ -872,6 +887,7 @@
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
+ distributionAmount = paymentMoney;
}else{
paymentMoney = paymentMoney.subtract(totalDistributionAmount);
totalDistributionAmount = BigDecimal.ZERO;
@@ -879,17 +895,23 @@
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
+ distributionAmount = totalDistributionAmount;
}
}
//构建积分流水记录
if(earnPoint > 0){
+ PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+ int earnPoint1 = earnPoint;
+ if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+ earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint());
+ }
appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
- appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+ appUser.setLavePoint(appUser.getLavePoint() + earnPoint1);
appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
UserPoint userPoint = new UserPoint();
userPoint.setType(1);
- userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
+ userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint1);
userPoint.setVariablePoint(earnPoint);
userPoint.setBalance(appUser.getLavePoint());
userPoint.setCreateTime(LocalDateTime.now());
@@ -925,11 +947,16 @@
//积分支付
if(3 == shoppingCartPayment.getPaymentType()){
Integer lavePoint = appUser.getLavePoint();
- appUser.setLavePoint(lavePoint - orderPoint);
+ PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+ int earnPoint1 = earnPoint;
+ //计算可用积分比例
+ if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+ earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint());
+ }
+ appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
- appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+ appUser.setLavePoint(appUser.getLavePoint() + earnPoint1);
appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
- appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
appUser.setLastShopTime(LocalDateTime.now());
appUserClient.editAppUserById(appUser);
//检查消费积分满足后升级会员
@@ -937,25 +964,15 @@
//构建积分流水记录
UserPoint userPoint = new UserPoint();
- userPoint.setType(4);
+ userPoint.setType(1);
userPoint.setHistoricalPoint(lavePoint);
- userPoint.setVariablePoint(orderPoint);
+ Integer point = appUser.getLavePoint() - lavePoint;
+ userPoint.setVariablePoint(point >= 0 ? point : point * -1);
userPoint.setBalance(appUser.getLavePoint());
userPoint.setCreateTime(LocalDateTime.now());
userPoint.setAppUserId(appUser.getId());
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
- if(earnPoint > 0){
- userPoint = new UserPoint();
- userPoint.setType(1);
- userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
- userPoint.setVariablePoint(earnPoint);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPointClient.saveUserPoint(userPoint);
- }
//如果有运费,需要先扣除账户积分,再进行支付。支付成功后修改订单状态,未支付成功则回退积分,删除的订单
if(expressFee.compareTo(BigDecimal.ZERO) > 0){
if(shoppingCartPayment.getFreightPaymentType() == 1){
@@ -970,8 +987,10 @@
balance = balance.subtract(expressFee);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setBalance(balance);
+ redPacketAmount = expressFee;
}else{
expressFee = expressFee.subtract(totalRedPacketAmount);
+ redPacketAmount = totalRedPacketAmount;
totalRedPacketAmount = BigDecimal.ZERO;
if(expressFee.compareTo(totalDistributionAmount) <= 0){
totalDistributionAmount = totalDistributionAmount.subtract(expressFee);
@@ -979,6 +998,7 @@
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
+ distributionAmount = expressFee;
}else{
expressFee = expressFee.subtract(totalDistributionAmount);
totalDistributionAmount = BigDecimal.ZERO;
@@ -986,6 +1006,7 @@
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
+ distributionAmount = totalDistributionAmount;
}
}
@@ -1021,6 +1042,14 @@
this.removeBatchByIds(ids);
}
}
+ //添加账户余额支付明细
+ if(redPacketAmount.compareTo(BigDecimal.ZERO) > 0 || distributionAmount.compareTo(BigDecimal.ZERO) > 0){
+ OrderBalancePayment orderBalancePayment = new OrderBalancePayment();
+ orderBalancePayment.setOrderId(order.getId());
+ orderBalancePayment.setRedPacketAmount(redPacketAmount);
+ orderBalancePayment.setDistributionAmount(distributionAmount);
+ orderBalancePaymentService.save(orderBalancePayment);
+ }
return R.ok(order.getId().toString());
}
--
Gitblit v1.7.1