From 5df075910baba796445c3d514af556d60dbeab08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 11:49:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8D=95=E5=93=81=E6=94=B9=E4=BB=B7?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/pojo/order/TbCashierCart.java | 12 ++++++++++-- .../impl/shopimpl/TbShopTableServiceImpl.java | 18 ++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java index eff0d41e..31d7ffa5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java @@ -192,11 +192,13 @@ public class TbCashierCart implements Serializable { if ("true".equals(isGift)) { totalAmount = packFee; } else { + BigDecimal subtract; if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - totalAmount = totalNumber.multiply(memberPrice).add(packFee); + subtract = memberPrice.subtract(discountSaleAmount); } else { - totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee); + subtract = salePrice.subtract(discountSaleAmount); } + totalAmount = totalNumber.multiply(subtract.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : subtract).add(packFee); } } @@ -247,4 +249,10 @@ public class TbCashierCart implements Serializable { } + public void resetDiscountSaleAmount() { + BigDecimal finalAmount = BigDecimal.ZERO; + if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { + + } + } } 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 acc7cdbc..8901b8f9 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 @@ -3146,13 +3146,19 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("购物车商品不存在"); } - if (updatePriceDTO.getSaleAmount().compareTo(cashierCart.getDiscountSaleAmount()) == 0) { - return cashierCart; + if (cashierCart.getIsMember() == 0) { + if (cashierCart.getSalePrice().subtract(updatePriceDTO.getSaleAmount()).compareTo(BigDecimal.ZERO) < 0) { + throw new BadRequestException("折扣金额不能超过单价"); + } + }else { + if (cashierCart.getMemberPrice().subtract(updatePriceDTO.getSaleAmount()).compareTo(BigDecimal.ZERO) < 0) { + throw new BadRequestException("折扣金额不能超过单价"); + } } - BigDecimal newTotalPrice = updatePriceDTO.getSaleAmount().multiply(cashierCart.getTotalNumber()).add(cashierCart.getPackFee()); BigDecimal oldAmount = cashierCart.getTotalAmount(); - cashierCart.setTotalAmount(newTotalPrice); + cashierCart.setDiscountSaleAmount(updatePriceDTO.getSaleAmount()); + cashierCart.resetTotalAmount(); cashierCart.setUpdatedAt(DateUtil.current()); cashierCart.setDiscountSaleNote(updatePriceDTO.getNote()); cashierCart.setDiscountSaleAmount(updatePriceDTO.getSaleAmount()); @@ -3160,8 +3166,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 更新订单和detail价格 if (cashierCart.getOrderId() != null) { - mpOrderDetailService.updatePriceByCartId(cashierCart.getId(), updatePriceDTO.getSaleAmount(), newTotalPrice); - mpOrderInfoService.incrAmount(cashierCart.getOrderId(), newTotalPrice.subtract(oldAmount)); + mpOrderDetailService.updatePriceByCartId(cashierCart.getId(), updatePriceDTO.getSaleAmount(), cashierCart.getTotalAmount()); + mpOrderInfoService.incrAmount(cashierCart.getOrderId(), cashierCart.getTotalAmount().subtract(oldAmount)); } return cashierCart; }