From 6854619b71055085104f66c8aa4ce9eb5e822fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 17:14:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/pojo/order/TbCashierCart.java | 19 +++++++++++++------ .../impl/shopimpl/TbShopTableServiceImpl.java | 6 +++--- 2 files changed, 16 insertions(+), 9 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 43775903..b83a735e 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 @@ -25,6 +25,7 @@ import javax.persistence.*; import javax.validation.constraints.*; import java.math.BigDecimal; import java.io.Serializable; +import java.math.RoundingMode; /** * @author lyf @@ -221,15 +222,21 @@ public class TbCashierCart implements Serializable { * 获取总价不包含打包费 * */ - public BigDecimal getTotalAmountByNum(BigDecimal num) { + public BigDecimal getTotalAmountByNum(BigDecimal num, BigDecimal discountRadio) { + if (discountRadio == null) { + discountRadio = new BigDecimal("1"); + } + resetTotalAmount(discountRadio); if (num == null) { num = totalNumber; } - if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - return num.multiply(memberPrice); - } else { - return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice); - } + + return totalAmount.divide(totalNumber, 9, RoundingMode.HALF_UP).multiply(num).setScale(2, RoundingMode.HALF_UP); +// if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { +// return num.multiply(memberPrice); +// } else { +// return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice); +// } } 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 54933f1d..4929b533 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 @@ -1287,7 +1287,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbCashierCart balanceCart = null; if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) { cashierCart.setUserCouponId(couponVo.getId()); - discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); + discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null, null)); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber())); currentUseNum = cashierCart.getNumber(); // 优惠券数量小于购物车数量,分割购物车数据 @@ -1297,7 +1297,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum()); BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP); cashierCart.setPackFee(singlePackFee.multiply(currentUseNum)); - BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum()); + BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum(), null); cashierCart.setTotalAmount(totalAmountByNum.add(singlePackFee.multiply(currentUseNum))); cashierCart.setNumber(couponVo.getCurrentUseNum()); cashierCart.setTotalNumber(couponVo.getCurrentUseNum()); @@ -1315,7 +1315,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { balanceCart.setNumber(balanceNum); balanceCart.setTotalNumber(balanceNum); balanceCart.setPackFee(singlePackFee.multiply(balanceNum)); - balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(balanceNum))); + balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum, null).add(singlePackFee.multiply(balanceNum))); balanceCartList.add(balanceCart); } else { currentUseNum =cashierCart.getNumber();