未取车手动结束订单退押金和租金bug
This commit is contained in:
@ -199,17 +199,24 @@ public class ZcOrderMainServiceImpl implements IZcOrderMainService
|
||||
*/
|
||||
private boolean processDepositRefund(Long orderId, ZcOrderMain queryOrder) {
|
||||
// 查询押金子订单
|
||||
ZcOrderSub sub = new ZcOrderSub();
|
||||
sub.setOrderId(orderId);
|
||||
List<ZcOrderSub> 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());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user