diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index d78f59fc..dd334f6a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -2187,12 +2187,16 @@ public class TbShopTableServiceImpl implements TbShopTableService { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); BigDecimal discount = payDTO.getDiscount(); - cashierCarts.forEach(item -> { - item.setTotalAmount(item.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + BigDecimal totalAmount = BigDecimal.ZERO; + for (TbCashierCart cashierCart : cashierCarts) { + if (cashierCart.getUserCouponId() == null) { + cashierCart.setTotalAmount(cashierCart.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + totalAmount = cashierCart.getTotalAmount(); + } // item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); // item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - }); + } detailList.forEach(item -> { item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); @@ -2203,15 +2207,15 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpCashierCartService.updateBatchById(cashierCarts); mpOrderDetailService.updateBatchById(detailList); BigDecimal oldAmount = orderInfo.getOrderAmount(); - BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); - BigDecimal discountAmount = oldAmount.subtract(finalAmount); +// BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); + BigDecimal discountAmount = oldAmount.subtract(totalAmount); orderInfo.setDiscountAmount(discountAmount); orderInfo.setDiscountRatio(payDTO.getDiscount()); - orderInfo.setOrderAmount(finalAmount); - orderInfo.setAmount(finalAmount); - orderInfo.setSettlementAmount(finalAmount); + orderInfo.setOrderAmount(totalAmount); + orderInfo.setAmount(totalAmount); + orderInfo.setSettlementAmount(totalAmount); mpOrderInfoService.updateById(orderInfo); - return finalAmount; + return totalAmount; } @Override