diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java index b03e1a51..15724eb7 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java @@ -349,14 +349,30 @@ public class PriceDetailDTO implements Serializable { public void setDiscountPrice(Double discountPrice) { this.discountPrice = discountPrice; + promotionPriceHandler(); this.recount(); } public void setCouponPrice(Double couponPrice) { this.couponPrice = couponPrice; + promotionPriceHandler(); this.recount(); } + /** + * 如果促销金额+优惠券金额大于商品金额问题处理 + */ + private void promotionPriceHandler() { + if (couponPrice == null || discountPrice == null) { + return; + } + //如果订单优惠总额>商品金额,则处理一下数据,使得两数相加<=商品金额 + if (CurrencyUtil.add(couponPrice, discountPrice) > goodsPrice) { + couponPrice = CurrencyUtil.sub(goodsPrice, discountPrice); + this.setCouponPrice(couponPrice); + } + } + public void setDistributionCommission(Double distributionCommission) { this.distributionCommission = distributionCommission; this.recount();