|
@@ -840,13 +840,12 @@ DISCOUNT("畅学卡")
|
|
|
}
|
|
|
// 判断满减
|
|
|
if (couponInfo.getUseLimit() != null && amount.compareTo(BigDecimal
|
|
|
- .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0
|
|
|
- && !couponAmountMap.isEmpty()) {
|
|
|
+ .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0) {
|
|
|
throw new BizException("优惠券不可用");
|
|
|
}
|
|
|
|
|
|
// 总金额扣除优惠金额
|
|
|
- amount = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
|
|
|
+ BigDecimal actual = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
|
|
|
|
|
|
// 根据商品金额比例分摊优惠金额
|
|
|
// 剩余金额
|
|
@@ -857,7 +856,7 @@ DISCOUNT("畅学卡")
|
|
|
BigDecimal actualPrice = entry.getValue();
|
|
|
BigDecimal couponAmount;
|
|
|
|
|
|
- if (amount.compareTo(BigDecimal.ZERO) >0) {
|
|
|
+ if (actual.compareTo(BigDecimal.ZERO) >0) {
|
|
|
couponAmount = BigDecimal.valueOf(couponInfo.getDiscountPrice())
|
|
|
.multiply(userOrderDetail.getActualPrice()).divide(amount, 2, RoundingMode.HALF_DOWN);
|
|
|
} else {
|
|
@@ -870,7 +869,7 @@ DISCOUNT("畅学卡")
|
|
|
couponAmount,userOrderDetail.getDiscountJson()));
|
|
|
userOrderDetail.setActualPrice(actualPrice.subtract(couponAmount));
|
|
|
}
|
|
|
- if (remainAmount.compareTo(BigDecimal.ZERO) > 0&& amount.compareTo(BigDecimal.ZERO) >0) {
|
|
|
+ if (remainAmount.compareTo(BigDecimal.ZERO) > 0 && actual.compareTo(BigDecimal.ZERO) >0) {
|
|
|
UserOrderDetail userOrderDetail = goodsInfos.get(couponAmountMap.keySet().stream().findFirst().get()).getUserOrderDetail();
|
|
|
userOrderDetail.setActualPrice(userOrderDetail.getActualPrice().subtract(remainAmount));
|
|
|
|