Commit 11ffa45b898e5ad9dde75065d61a91ba9185abe1

Authored by owen
1 parent cd2d0b70

积分:Review代码修改

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradePointGiveCalculator.java
@@ -56,7 +56,6 @@ public class TradePointGiveCalculator implements TradePriceCalculator { @@ -56,7 +56,6 @@ public class TradePointGiveCalculator implements TradePriceCalculator {
56 TradePriceCalculateRespBO.OrderItem orderItem = orderItems.get(i); 56 TradePriceCalculateRespBO.OrderItem orderItem = orderItems.get(i);
57 // 商品可能赠送了积分,所以这里要加上 57 // 商品可能赠送了积分,所以这里要加上
58 orderItem.setGivePoint(orderItem.getGivePoint() + dividePoints.get(i)); 58 orderItem.setGivePoint(orderItem.getGivePoint() + dividePoints.get(i));
59 - TradePriceCalculatorHelper.recountPayPrice(orderItem); // TODO @疯狂:这个应该不用调用哇?不影响支付金额  
60 } 59 }
61 // 3.3 更新订单赠送积分 60 // 3.3 更新订单赠送积分
62 TradePriceCalculatorHelper.recountAllGivePoint(result); 61 TradePriceCalculatorHelper.recountAllGivePoint(result);
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradePointUsePriceCalculator.java
1 package cn.iocoder.yudao.module.trade.service.price.calculator; 1 package cn.iocoder.yudao.module.trade.service.price.calculator;
2 2
3 import cn.hutool.core.util.BooleanUtil; 3 import cn.hutool.core.util.BooleanUtil;
4 -import cn.hutool.core.util.NumberUtil;  
5 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
6 import cn.iocoder.yudao.module.member.api.point.MemberPointApi; 5 import cn.iocoder.yudao.module.member.api.point.MemberPointApi;
7 import cn.iocoder.yudao.module.member.api.point.dto.MemberPointConfigRespDTO; 6 import cn.iocoder.yudao.module.member.api.point.dto.MemberPointConfigRespDTO;
@@ -15,10 +14,11 @@ import org.springframework.core.annotation.Order; @@ -15,10 +14,11 @@ import org.springframework.core.annotation.Order;
15 import org.springframework.stereotype.Component; 14 import org.springframework.stereotype.Component;
16 15
17 import javax.annotation.Resource; 16 import javax.annotation.Resource;
18 -import java.math.RoundingMode;  
19 import java.util.List; 17 import java.util.List;
20 18
  19 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
21 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList; 20 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
  21 +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.PRICE_CALCULATE_PAY_PRICE_ILLEGAL;
22 22
23 // TODO @疯狂:搞个单测,嘿嘿; 23 // TODO @疯狂:搞个单测,嘿嘿;
24 /** 24 /**
@@ -45,7 +45,7 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator { @@ -45,7 +45,7 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
45 } 45 }
46 // 1.2 校验积分抵扣是否开启 46 // 1.2 校验积分抵扣是否开启
47 MemberPointConfigRespDTO config = memberPointApi.getConfig(); 47 MemberPointConfigRespDTO config = memberPointApi.getConfig();
48 - if (!checkDeductPointEnable(config)) { 48 + if (!isDeductPointEnable(config)) {
49 return; 49 return;
50 } 50 }
51 // 1.3 校验用户积分余额 51 // 1.3 校验用户积分余额
@@ -55,7 +55,6 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator { @@ -55,7 +55,6 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
55 } 55 }
56 56
57 // 2.1 计算积分优惠金额 57 // 2.1 计算积分优惠金额
58 - // TODO @疯狂:如果计算出来,优惠金额为 0,那是不是不用执行后续逻辑哈  
59 int pointPrice = calculatePointPrice(config, user.getPoint(), result); 58 int pointPrice = calculatePointPrice(config, user.getPoint(), result);
60 // 2.2 计算分摊的积分、抵扣金额 59 // 2.2 计算分摊的积分、抵扣金额
61 List<TradePriceCalculateRespBO.OrderItem> orderItems = filterList(result.getItems(), TradePriceCalculateRespBO.OrderItem::getSelected); 60 List<TradePriceCalculateRespBO.OrderItem> orderItems = filterList(result.getItems(), TradePriceCalculateRespBO.OrderItem::getSelected);
@@ -77,18 +76,10 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator { @@ -77,18 +76,10 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
77 TradePriceCalculatorHelper.recountAllPrice(result); 76 TradePriceCalculatorHelper.recountAllPrice(result);
78 } 77 }
79 78
80 - // TODO @疯狂:这个最好是 is 开头;因为 check 或者 validator,更多失败,会抛出异常;  
81 - private boolean checkDeductPointEnable(MemberPointConfigRespDTO config) {  
82 - // TODO @疯狂:这个要不直接写成 return config != null && config .... 多行这样一个形式;  
83 - if (config == null) {  
84 - return false;  
85 - }  
86 - if (!BooleanUtil.isTrue(config.getTradeDeductEnable())) {  
87 - return false;  
88 - }  
89 -  
90 - // 有没有配置:1 积分抵扣多少分  
91 - return config.getTradeDeductUnitPrice() != null && config.getTradeDeductUnitPrice() > 0; 79 + private boolean isDeductPointEnable(MemberPointConfigRespDTO config) {
  80 + return config != null &&
  81 + !BooleanUtil.isTrue(config.getTradeDeductEnable()) && // 积分功能是否启用
  82 + config.getTradeDeductUnitPrice() != null && config.getTradeDeductUnitPrice() > 0; // 有没有配置:1 积分抵扣多少分
92 } 83 }
93 84
94 private Integer calculatePointPrice(MemberPointConfigRespDTO config, Integer usePoint, TradePriceCalculateRespBO result) { 85 private Integer calculatePointPrice(MemberPointConfigRespDTO config, Integer usePoint, TradePriceCalculateRespBO result) {
@@ -98,14 +89,18 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator { @@ -98,14 +89,18 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
98 } 89 }
99 // 积分优惠金额(分) 90 // 积分优惠金额(分)
100 int pointPrice = usePoint * config.getTradeDeductUnitPrice(); 91 int pointPrice = usePoint * config.getTradeDeductUnitPrice();
101 - // 0 元购!!!:用户积分比较多时,积分可以抵扣的金额要大于支付金额,这时需要根据支付金额反推使用多少积分  
102 - if (result.getPrice().getPayPrice() < pointPrice) {  
103 - pointPrice = result.getPrice().getPayPrice();  
104 - // 反推需要扣除的积分  
105 - usePoint = NumberUtil.toBigDecimal(pointPrice)  
106 - .divide(NumberUtil.toBigDecimal(config.getTradeDeductUnitPrice()), 0, RoundingMode.HALF_UP)  
107 - .intValue(); 92 + if (result.getPrice().getPayPrice() <= pointPrice) {
  93 + // 禁止0元购
  94 + throw exception(PRICE_CALCULATE_PAY_PRICE_ILLEGAL);
108 } 95 }
  96 +// // 允许0 元购!!!:用户积分比较多时,积分可以抵扣的金额要大于支付金额,这时需要根据支付金额反推使用多少积分
  97 +// if (result.getPrice().getPayPrice() < pointPrice) {
  98 +// pointPrice = result.getPrice().getPayPrice();
  99 +// // 反推需要扣除的积分
  100 +// usePoint = NumberUtil.toBigDecimal(pointPrice)
  101 +// .divide(NumberUtil.toBigDecimal(config.getTradeDeductUnitPrice()), 0, RoundingMode.HALF_UP)
  102 +// .intValue();
  103 +// }
109 // 记录使用的积分 104 // 记录使用的积分
110 result.setUsePoint(usePoint); 105 result.setUsePoint(usePoint);
111 return pointPrice; 106 return pointPrice;