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 56 TradePriceCalculateRespBO.OrderItem orderItem = orderItems.get(i);
57 57 // 商品可能赠送了积分,所以这里要加上
58 58 orderItem.setGivePoint(orderItem.getGivePoint() + dividePoints.get(i));
59   - TradePriceCalculatorHelper.recountPayPrice(orderItem); // TODO @疯狂:这个应该不用调用哇?不影响支付金额
60 59 }
61 60 // 3.3 更新订单赠送积分
62 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 1 package cn.iocoder.yudao.module.trade.service.price.calculator;
2 2  
3 3 import cn.hutool.core.util.BooleanUtil;
4   -import cn.hutool.core.util.NumberUtil;
5 4 import cn.hutool.core.util.StrUtil;
6 5 import cn.iocoder.yudao.module.member.api.point.MemberPointApi;
7 6 import cn.iocoder.yudao.module.member.api.point.dto.MemberPointConfigRespDTO;
... ... @@ -15,10 +14,11 @@ import org.springframework.core.annotation.Order;
15 14 import org.springframework.stereotype.Component;
16 15  
17 16 import javax.annotation.Resource;
18   -import java.math.RoundingMode;
19 17 import java.util.List;
20 18  
  19 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
21 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 23 // TODO @疯狂:搞个单测,嘿嘿;
24 24 /**
... ... @@ -45,7 +45,7 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
45 45 }
46 46 // 1.2 校验积分抵扣是否开启
47 47 MemberPointConfigRespDTO config = memberPointApi.getConfig();
48   - if (!checkDeductPointEnable(config)) {
  48 + if (!isDeductPointEnable(config)) {
49 49 return;
50 50 }
51 51 // 1.3 校验用户积分余额
... ... @@ -55,7 +55,6 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
55 55 }
56 56  
57 57 // 2.1 计算积分优惠金额
58   - // TODO @疯狂:如果计算出来,优惠金额为 0,那是不是不用执行后续逻辑哈
59 58 int pointPrice = calculatePointPrice(config, user.getPoint(), result);
60 59 // 2.2 计算分摊的积分、抵扣金额
61 60 List<TradePriceCalculateRespBO.OrderItem> orderItems = filterList(result.getItems(), TradePriceCalculateRespBO.OrderItem::getSelected);
... ... @@ -77,18 +76,10 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
77 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 85 private Integer calculatePointPrice(MemberPointConfigRespDTO config, Integer usePoint, TradePriceCalculateRespBO result) {
... ... @@ -98,14 +89,18 @@ public class TradePointUsePriceCalculator implements TradePriceCalculator {
98 89 }
99 90 // 积分优惠金额(分)
100 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 105 result.setUsePoint(usePoint);
111 106 return pointPrice;
... ...