手动结束订单时,如果未取车则更新逻辑退押金和租金
This commit is contained in:
@ -205,6 +205,9 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService
|
|||||||
ZcOrderSub querySub = zcOrderSubService.selectZcOrderSub(depositSub);
|
ZcOrderSub querySub = zcOrderSubService.selectZcOrderSub(depositSub);
|
||||||
|
|
||||||
if (querySub != null) {
|
if (querySub != null) {
|
||||||
|
|
||||||
|
ZcOrderMain queryMain = selectZcOrderMainByOrderId(orderId);
|
||||||
|
|
||||||
// 创建退款子订单
|
// 创建退款子订单
|
||||||
String suborderNo = OrderUtil.generateSubOrderNo(OrderUtil.FD_PREFIX);
|
String suborderNo = OrderUtil.generateSubOrderNo(OrderUtil.FD_PREFIX);
|
||||||
|
|
||||||
@ -212,17 +215,22 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService
|
|||||||
refundSub.setOrderId(orderId);
|
refundSub.setOrderId(orderId);
|
||||||
refundSub.setSuborderNo(suborderNo);
|
refundSub.setSuborderNo(suborderNo);
|
||||||
refundSub.setSuborderType(OrderUtil.FD_DEPOSIT);
|
refundSub.setSuborderType(OrderUtil.FD_DEPOSIT);
|
||||||
// 计算实际退款金额(押金减去逾期费用)
|
// 如果租车订单未取车,退租车费用和押金费用
|
||||||
BigDecimal overdueAmount = BigDecimal.ZERO;
|
if(queryMain.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){
|
||||||
long overdueDays = DateUtils.daysBetween(queryOrder.getEndRentTime(), DateUtils.getNowDate());
|
refundSub.setAmount(queryOrder.getDepositPrice().add(queryOrder.getRentalPrice()));
|
||||||
if (overdueDays > 0) {
|
}else {
|
||||||
overdueAmount = queryOrder.getOverdueFee().multiply(new BigDecimal(overdueDays));
|
// 计算实际退款金额(押金减去逾期费用)
|
||||||
|
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.setPaymentMethod(querySub.getPaymentMethod());
|
||||||
refundSub.setCreatedAt(DateUtils.getNowDate());
|
refundSub.setCreatedAt(DateUtils.getNowDate());
|
||||||
refundSub.setPaymentId(querySub.getPaymentId());
|
refundSub.setPaymentId(querySub.getPaymentId());
|
||||||
|
|||||||
Reference in New Issue
Block a user