未取车手动结束订单退押金和租金bug

This commit is contained in:
majian314
2025-09-09 17:24:12 +08:00
parent b8e62f94cd
commit 7c9cd21294

View File

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