cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -1611,9 +1611,10 @@ .divide(BigDecimal.valueOf(exchangeType.getNums() == null ? 1 : exchangeType.getNums()), 2, java.math.RoundingMode.HALF_UP); } else if (Integer.valueOf(2).equals(coupon.getType())) { BigDecimal deduction = rule.getBigDecimal("conditionalAmount"); if (deduction == null || orderCash.compareTo(deduction) < 0) { if (deduction == null || deduction.compareTo(BigDecimal.ZERO) <= 0) { return ResultUtil.error("该优惠券无法使用"); } // 代金券可覆盖全部订单金额,超出订单金额的部分不找零。 ticketPayableCashAmount = orderCash.subtract(deduction).max(BigDecimal.ZERO); cashAmount = ticketPayableCashAmount .divide(BigDecimal.valueOf(exchangeType.getNums() == null ? 1 : exchangeType.getNums()), 2, java.math.RoundingMode.HALF_UP); cloud-server-activity/src/main/java/com/dsh/activity/model/CouponListVo.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * @author zhibing.pu * @date 2023/6/24 11:33 @@ -23,4 +25,8 @@ private String favorable; @ApiModelProperty("有效时间") private String effectiveTime; @ApiModelProperty("本订单可抵扣金额") private BigDecimal discountAmount; @ApiModelProperty("本订单使用该券后的应付金额") private BigDecimal payableAmount; } cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
@@ -232,6 +232,7 @@ couponListVo.setType(type); couponListVo.setEffectiveTime(userCoupon.get("endTime").toString()); String content = userCoupon.get("content").toString(); BigDecimal orderAmount = BigDecimal.valueOf(price == null ? 0D : price).max(BigDecimal.ZERO); if (type == 1) {//满减{"num1":1,"num2":1} JSONObject jsonObject = JSON.parseObject(content); Double num1 = jsonObject.getDouble("conditionalAmount"); @@ -240,6 +241,10 @@ } couponListVo.setUseCondition("满" + num1 + "元可用"); couponListVo.setFavorable(jsonObject.getString("deductionAmount")); BigDecimal discount = BigDecimal.valueOf(jsonObject.getDouble("deductionAmount")) .min(orderAmount); couponListVo.setDiscountAmount(discount); couponListVo.setPayableAmount(orderAmount.subtract(discount)); } if (type == 2) {//代金券{"num1":1} JSONObject jsonObject = JSON.parseObject(content); @@ -247,11 +252,12 @@ if (num1 == null) { num1 = 0d; } if (price.compareTo(num1) < 0) { continue; } // 代金券可全额抵扣,面额超过订单金额时按订单金额抵扣,不应从列表中剔除。 couponListVo.setUseCondition(""); couponListVo.setFavorable(num1 + ""); BigDecimal discount = BigDecimal.valueOf(num1).max(BigDecimal.ZERO).min(orderAmount); couponListVo.setDiscountAmount(discount); couponListVo.setPayableAmount(orderAmount.subtract(discount)); } if (type == 3) {//体验券{"num1":1} JSONObject jsonObject = JSON.parseObject(content); cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -848,7 +848,7 @@ if (userCoupon != null && coupon.getType() == 2) {//代金券 JSONObject jsonObject = JSON.parseObject(coupon.getContent()); Double num1 = jsonObject.getDouble("conditionalAmount"); if (money.compareTo(new BigDecimal(num1)) <= 0) { if (num1 == null || num1 <= 0) { return ResultUtil.error("该优惠券无法使用"); } money = money.subtract(new BigDecimal(num1)).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_EVEN); @@ -1280,7 +1280,7 @@ if (coupon.getType() == 2) {//代金券 JSONObject jsonObject = JSON.parseObject(coupon.getContent()); Double num1 = jsonObject.getDouble("conditionalAmount"); money = money.subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN); money = money.subtract(new BigDecimal(num1)).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_EVEN); } userCoupon.setStatus(2); userCouponClient.updateUserCoupon(userCoupon); @@ -1368,7 +1368,7 @@ if (coupon.getType() == 2) {//代金券 JSONObject jsonObject = JSON.parseObject(coupon.getContent()); Double num1 = jsonObject.getDouble("conditionalAmount"); money = money.subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN); money = money.subtract(new BigDecimal(num1)).max(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_EVEN); } } switch (siteBooking.getPayType()) {