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 1a816f5..5aba4c2 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 @@ -199,17 +199,24 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService */ private boolean processDepositRefund(Long orderId, ZcOrderMain queryOrder) { // 查询押金子订单 + ZcOrderSub sub = new ZcOrderSub(); + sub.setOrderId(orderId); + List subList = zcOrderSubService.selectZcOrderSubList(sub); + ZcOrderSub depositSub = new ZcOrderSub(); - depositSub.setOrderId(orderId); - depositSub.setSuborderType(OrderUtil.DEPOSIT); - ZcOrderSub querySub = zcOrderSubService.selectZcOrderSub(depositSub); + BigDecimal batteryAmount = BigDecimal.ZERO; + BigDecimal carAmount = BigDecimal.ZERO; + for (ZcOrderSub os : subList) { + if(os.getSuborderType().equals(OrderUtil.DEPOSIT)){ + depositSub = os; + }else if(os.getSuborderType().equals(OrderUtil.RENTBATTEY)){ + batteryAmount = os.getAmount(); + }else if(os.getSuborderType().equals(OrderUtil.RENTCAR)){ + carAmount = os.getAmount(); + } + } - ZcOrderSub battreySub = new ZcOrderSub(); - battreySub.setOrderId(orderId); - battreySub.setSuborderType(OrderUtil.RENTBATTEY); - ZcOrderSub queryBattreySub = zcOrderSubService.selectZcOrderSub(depositSub); - - if (querySub != null) { + if (depositSub != null) { ZcOrderMain queryMain = selectZcOrderMainByOrderId(orderId); @@ -223,7 +230,7 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService // 如果租车订单未取车,退租车费用和押金费用 if(queryMain.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){ // 退押金和租车费用和租电费用 - refundSub.setAmount(queryOrder.getDepositPrice().add(queryBattreySub.getAmount())); + refundSub.setAmount(depositSub.getAmount().add(batteryAmount).add(carAmount)); }else { // 计算实际退款金额(押金减去逾期费用) BigDecimal overdueAmount = BigDecimal.ZERO; @@ -231,15 +238,15 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService if (overdueDays > 0) { overdueAmount = queryOrder.getOverdueFee().multiply(new BigDecimal(overdueDays)); } - BigDecimal refundAmount = querySub.getAmount().subtract(overdueAmount); + BigDecimal refundAmount = depositSub.getAmount().subtract(overdueAmount); if (refundAmount.compareTo(BigDecimal.ZERO) < 0) { refundAmount = BigDecimal.ZERO; } refundSub.setAmount(refundAmount); } - refundSub.setPaymentMethod(querySub.getPaymentMethod()); + refundSub.setPaymentMethod(depositSub.getPaymentMethod()); refundSub.setCreatedAt(DateUtils.getNowDate()); - refundSub.setPaymentId(querySub.getPaymentId()); + refundSub.setPaymentId(depositSub.getPaymentId()); refundSub.setRefundId(suborderNo); refundSub.setCreateTime(DateUtils.getNowDate());