Commit 11ffa45b898e5ad9dde75065d61a91ba9185abe1
1 parent
cd2d0b70
积分:Review代码修改
Showing
2 changed files
with
18 additions
and
24 deletions
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; |