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());