From 3eef65777a5f1beb5d6a69deae2ff70418359ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 17:09:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AF=E9=80=80=E6=AC=BE=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/entity/TbOrderDetail.java | 1 + .../cashierservice/service/CartService.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java index b356312..7faaa60 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -50,5 +50,6 @@ public class TbOrderDetail implements Serializable { private static final long serialVersionUID = 1L; private Integer isMember; private String useCouponInfo; + private BigDecimal canReturnAmount; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java index 3c79e7a..e21346b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java @@ -1525,6 +1525,10 @@ public class CartService { orderInfo.setCouponInfoList(JSONObject.toJSONString(infoDTO)); } + + // 计算可退款金额 + updateOrderDetailCanReturn(detailPriceDTO.getOrderDetailList(), orderInfo); + // 修改订单详情并打票 updateDetailAndPrint(orderInfo, detailPriceDTO, shopEatTypeInfoDTO, orderDTO.isOnlyChangeCoupon()); @@ -1558,6 +1562,28 @@ public class CartService { } } + private void updateOrderDetailCanReturn(List orderDetailList, TbOrderInfo orderInfo) { + orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList()); + BigDecimal totalAmount = BigDecimal.ZERO; + BigDecimal lastAmount = BigDecimal.ZERO; + BigDecimal lastReturnAmount = BigDecimal.ZERO; + BigDecimal orderAmount = orderInfo.getOrderAmount(); + for (TbOrderDetail orderDetail : orderDetailList) { + totalAmount = totalAmount.add(orderDetail.getPriceAmount()); + } + for (TbOrderDetail item : orderDetailList) { + if (StrUtil.isNotBlank(orderInfo.getCouponInfoList()) || orderInfo.getPointsNum() != null) { + BigDecimal canReturnAmount = item.getPriceAmount().divide(totalAmount.subtract(lastAmount), 10, RoundingMode.HALF_DOWN) + .multiply(orderAmount.subtract(lastReturnAmount)).setScale(2, RoundingMode.HALF_DOWN); + lastReturnAmount = canReturnAmount; + lastAmount = item.getPriceAmount(); + item.setCanReturnAmount(canReturnAmount); + }else { + item.setCanReturnAmount(item.getPriceAmount()); + } + } + } + private void returnCoupon(TbOrderInfo orderInfo) { // 返还优惠券 PayService.returnCoupon(orderInfo, shopCouponService, mpCashierCartMapper);