From fa868f641423f7ec4faf0a7e12c7f421ff9d6562 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 24 Oct 2025 15:59:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B9=B1=E4=B8=83=E5=85=AB=E7=B3=9F=E6=8A=98?= =?UTF-8?q?=E6=89=A3=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/order/dto/CheckOrderPay.java | 8 ++++++ .../java/com/czg/order/entity/OrderInfo.java | 10 ++++++++ .../service/impl/OrderInfoServiceImpl.java | 25 ++++++++++++++++--- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java index 05b8efae8..479a724c4 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java @@ -102,6 +102,10 @@ public class CheckOrderPay implements Serializable { * 积分抵扣金额(tb_points_basic_setting表) */ private BigDecimal pointsDiscountAmount; + /** + * 会员折扣减免金额 + */ + private BigDecimal vipDiscountAmount; /** * 使用的积分数量 (扣除各类折扣 enable_deduction后使用) @@ -161,6 +165,10 @@ public class CheckOrderPay implements Serializable { return roundAmount == null ? BigDecimal.ZERO : roundAmount; } + public BigDecimal getVipDiscountAmount(){ + return vipDiscountAmount == null ? BigDecimal.ZERO : vipDiscountAmount; + } + public boolean isVipPrice() { return vipPrice != null && vipPrice == 1; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java index 8735d2f89..4ba5465d4 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java @@ -112,6 +112,10 @@ public class OrderInfo implements Serializable { * 其它优惠券抵扣金额 */ private BigDecimal otherCouponDiscountAmount; + /** + * 会员折扣金额 + */ + private BigDecimal vipDiscountAmount; /** * 折扣金额 @@ -290,6 +294,8 @@ public class OrderInfo implements Serializable { private String failMsg; + + public String getRefundRemark() { return StrUtil.isBlank(refundRemark) ? "" : refundRemark + " "; } @@ -298,6 +304,10 @@ public class OrderInfo implements Serializable { return newCustomerDiscountAmount == null ? BigDecimal.ZERO : newCustomerDiscountAmount; } + public BigDecimal getVipDiscountAmount() { + return vipDiscountAmount == null ? BigDecimal.ZERO : vipDiscountAmount; + } + public BigDecimal getOriginAmount() { return originAmount == null ? BigDecimal.ZERO : originAmount; } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 24d812d1d..b9372a720 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -400,8 +400,8 @@ public class OrderInfoServiceImpl extends ServiceImpl 0) { + if (param.getVipDiscountAmount().compareTo(BigDecimal.ZERO) <= 0) { + param.setVipDiscountAmount(BigDecimal.ZERO); + } else { + BigDecimal discount = BigDecimal.valueOf(100).subtract(BigDecimal.valueOf(shopUser.getDiscount())).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); + BigDecimal discountAmount = newTotalAmount.multiply(discount); + discountAmount = discountAmount.setScale(2, RoundingMode.HALF_UP); + if (discountAmount.compareTo(param.getVipDiscountAmount()) != 0) { + throw new ValidateException("生成支付订单失败,未满足积分抵扣最低门槛"); + } + newTotalAmount = newTotalAmount.subtract(discountAmount); + } + } //积分抵扣 金额范围校验 抵扣金额校验 if (param.getPointsNum() > 0) { if (pointSetting.getMinPaymentAmount().compareTo(newTotalAmount) > 0) { @@ -1426,6 +1438,8 @@ public class OrderInfoServiceImpl extends ServiceImpl 0) { jsonObject.put("满减活动抵扣", orderInfo.getDiscountActAmount()); } + if (orderInfo.getVipDiscountAmount() != null && orderInfo.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { + jsonObject.put("会员整单折扣", orderInfo.getVipDiscountAmount()); + } if (orderInfo.getOtherCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { jsonObject.put("其它优惠券折扣", orderInfo.getOtherCouponDiscountAmount()); }