From 688d8d236bd7c6d3d591eb84bf9715fd472c4146 Mon Sep 17 00:00:00 2001 From: 19173159168 Date: Sun, 7 Sep 2025 20:17:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E7=BB=93=E6=9D=9F=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=9C=AA=E5=8F=96?= =?UTF-8?q?=E8=BD=A6=E5=88=99=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91=E9=80=80?= =?UTF-8?q?=E6=8A=BC=E9=87=91=E5=92=8C=E7=A7=9F=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ZcOrderMainServiceImpl.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java index 5c8bc31..8c2c446 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/orders/service/impl/ZcOrderMainServiceImpl.java @@ -205,6 +205,9 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService ZcOrderSub querySub = zcOrderSubService.selectZcOrderSub(depositSub); if (querySub != null) { + + ZcOrderMain queryMain = selectZcOrderMainByOrderId(orderId); + // 创建退款子订单 String suborderNo = OrderUtil.generateSubOrderNo(OrderUtil.FD_PREFIX); @@ -212,17 +215,22 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService refundSub.setOrderId(orderId); refundSub.setSuborderNo(suborderNo); refundSub.setSuborderType(OrderUtil.FD_DEPOSIT); - // 计算实际退款金额(押金减去逾期费用) - BigDecimal overdueAmount = BigDecimal.ZERO; - long overdueDays = DateUtils.daysBetween(queryOrder.getEndRentTime(), DateUtils.getNowDate()); - if (overdueDays > 0) { - overdueAmount = queryOrder.getOverdueFee().multiply(new BigDecimal(overdueDays)); + // 如果租车订单未取车,退租车费用和押金费用 + if(queryMain.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){ + refundSub.setAmount(queryOrder.getDepositPrice().add(queryOrder.getRentalPrice())); + }else { + // 计算实际退款金额(押金减去逾期费用) + BigDecimal overdueAmount = BigDecimal.ZERO; + long overdueDays = DateUtils.daysBetween(queryOrder.getEndRentTime(), DateUtils.getNowDate()); + if (overdueDays > 0) { + overdueAmount = queryOrder.getOverdueFee().multiply(new BigDecimal(overdueDays)); + } + BigDecimal refundAmount = querySub.getAmount().subtract(overdueAmount); + if (refundAmount.compareTo(BigDecimal.ZERO) < 0) { + refundAmount = BigDecimal.ZERO; + } + refundSub.setAmount(refundAmount); } - BigDecimal refundAmount = querySub.getAmount().subtract(overdueAmount); - if (refundAmount.compareTo(BigDecimal.ZERO) < 0) { - refundAmount = BigDecimal.ZERO; - } - refundSub.setAmount(refundAmount); refundSub.setPaymentMethod(querySub.getPaymentMethod()); refundSub.setCreatedAt(DateUtils.getNowDate()); refundSub.setPaymentId(querySub.getPaymentId());