续租增加租电订单金额
This commit is contained in:
@ -176,4 +176,7 @@ public class OrderDetailDTO {
|
||||
|
||||
@ApiModelProperty("支付订单信息")
|
||||
private List<PayOrderDTO> payOrderDTOList;
|
||||
|
||||
@ApiModelProperty("待支付金额")
|
||||
private BigDecimal waitPayAmount;
|
||||
}
|
||||
|
||||
@ -273,8 +273,16 @@ public class OrderServiceImpl implements OrderService {
|
||||
paymentType = PaymentTypeEnum.ZFB_PAY.getCode();
|
||||
}
|
||||
}
|
||||
|
||||
//获取续租车金额
|
||||
BigDecimal rentCarOrderAmount = getReRentCarAmount(orderMainPO.getEndRentTime(), orderMainPO.getRentalType(), orderMainPO.getRentalPrice(), orderMainPO.getRentalDays());
|
||||
//获取租电金额
|
||||
BigDecimal rentBatteyOrderAmount = BigDecimal.ZERO ;
|
||||
RentBatteyRuleDTO rentBatteyRuleDTO = null;
|
||||
if(orderMainPO.getRentBatteyRuleId()!=null) {
|
||||
rentBatteyRuleDTO = carInteg.getRentBatteyRuleByBatteyRuleId(orderMainPO.getRentBatteyRuleId());
|
||||
rentBatteyOrderAmount = Optional.ofNullable(rentBatteyRuleDTO).map(RentBatteyRuleDTO::getRentPrice).orElse(BigDecimal.ZERO);
|
||||
rentCarOrderAmount = rentCarOrderAmount.add(rentBatteyOrderAmount);
|
||||
}
|
||||
String paymentId = OrderUtil.generateSubOrderNo(OrderUtil.ZF_PREFIX);
|
||||
// 起支付返回预支付信息
|
||||
RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
|
||||
@ -297,9 +305,22 @@ public class OrderServiceImpl implements OrderService {
|
||||
rentOrder.setPaymentMethod(paymentType);
|
||||
rentOrder.setPayStatus(PayStatusEnum.USERPAYING.getCode());
|
||||
rentOrder.setReturnTime(newEndRentTime);
|
||||
|
||||
orderSubRepo.save(rentOrder);
|
||||
|
||||
//生成租电子订单
|
||||
if(rentBatteyOrderAmount.compareTo(BigDecimal.ZERO)>0){
|
||||
//生成租电子订单
|
||||
OrderSubPO rentBatraayOrder = new OrderSubPO();
|
||||
rentBatraayOrder.setOrderId(orderMainPO.getOrderId());
|
||||
rentBatraayOrder.setSuborderNo(OrderUtil.generateSubOrderNo(OrderUtil.ZC_PREFIX));
|
||||
rentBatraayOrder.setPaymentId(paymentId);
|
||||
rentBatraayOrder.setSuborderType(SubOrderTypeEnum.RENTBATTEY.getCode());
|
||||
rentBatraayOrder.setAmount(rentBatteyOrderAmount);
|
||||
rentBatraayOrder.setCreatedAt(LocalDateTime.now());
|
||||
rentBatraayOrder.setPaymentMethod(paymentType);
|
||||
rentBatraayOrder.setPayStatus(PayStatusEnum.USERPAYING.getCode());
|
||||
orderSubRepo.save(rentBatraayOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -646,21 +667,26 @@ public class OrderServiceImpl implements OrderService {
|
||||
//去查看订单是否支付成功
|
||||
LambdaQueryWrapper<OrderSubPO> querySubOrderWrapper = new LambdaQueryWrapper<>();
|
||||
querySubOrderWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId())
|
||||
.in(OrderSubPO::getSuborderType, Arrays.asList(SubOrderTypeEnum.OVERDUE.getCode(), SubOrderTypeEnum.RENTCAR.getCode()))
|
||||
.in(OrderSubPO::getSuborderType, Arrays.asList(SubOrderTypeEnum.OVERDUE.getCode(), SubOrderTypeEnum.RENTCAR.getCode(), SubOrderTypeEnum.RENTBATTEY.getCode()))
|
||||
.ne(OrderSubPO::getPayStatus, PayStatusEnum.SUCCESS).orderByDesc(OrderSubPO::getCreatedAt).last(" limit 1");
|
||||
OrderSubPO orderSubPO = orderSubRepo.getOne(querySubOrderWrapper);
|
||||
if(orderSubPO!=null){
|
||||
List<OrderSubPO> orderSubList = orderSubRepo.list(querySubOrderWrapper);
|
||||
if(OrderStatusEnum.WAIT_PAY.getCode().equalsIgnoreCase(orderMainPO.getOrderStatus())){
|
||||
orderDetailDTO.setWaitPayAmount(orderMainPO.getOrderAmount());
|
||||
}else {
|
||||
orderDetailDTO.setWaitPayAmount(orderSubList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
|
||||
}
|
||||
if(!CollectionUtils.isEmpty(orderSubList)){
|
||||
//如果是微信支付,则去微信查询支付状态,如果支付成功,则修改订单状态为支付成功
|
||||
if(PaymentTypeEnum.WX_PAY.getCode().equals(orderSubPO.getPaymentMethod())){
|
||||
Map<String, String> result = payInteg.orderQuery((long)companyStoreDTO.getOperatingCompanyId(), orderSubPO.getPaymentId());
|
||||
if(PaymentTypeEnum.WX_PAY.getCode().equals(orderSubList.get(0).getPaymentMethod())){
|
||||
Map<String, String> result = payInteg.orderQuery((long)companyStoreDTO.getOperatingCompanyId(), orderSubList.get(0).getPaymentId());
|
||||
if(StringUtils.equalsIgnoreCase(result.get("trade_state"), "SUCCESS")){
|
||||
String orderState = paySuccessOrder(orderMainPO, orderSubPO);
|
||||
String orderState = paySuccessOrder(orderMainPO, orderSubList);
|
||||
orderDetailDTO.setOrderStatus(orderState);
|
||||
}
|
||||
}else if(PaymentTypeEnum.ZFB_PAY.getCode().equals(orderSubPO.getPaymentMethod())){
|
||||
AlipayQueryResponse alipayQueryResponse = payInteg.alipayOrderQuery(orderSubPO.getPaymentId());
|
||||
}else if(PaymentTypeEnum.ZFB_PAY.getCode().equals(orderSubList.get(0).getPaymentMethod())){
|
||||
AlipayQueryResponse alipayQueryResponse = payInteg.alipayOrderQuery(orderSubList.get(0).getPaymentId());
|
||||
if(StringUtils.equalsIgnoreCase(alipayQueryResponse.getCode(), "SUCCESS") && StringUtils.equalsIgnoreCase(alipayQueryResponse.getTradeStatus(), "TRADE_SUCCESS")){
|
||||
String orderState = paySuccessOrder(orderMainPO, orderSubPO);
|
||||
String orderState = paySuccessOrder(orderMainPO, orderSubList);
|
||||
orderDetailDTO.setOrderStatus(orderState);
|
||||
}
|
||||
}
|
||||
@ -1070,24 +1096,30 @@ public class OrderServiceImpl implements OrderService {
|
||||
/**
|
||||
* 支付成功更新订单状态
|
||||
* @param orderMainPO
|
||||
* @param orderSubPO
|
||||
* @param orderSubList
|
||||
* @return
|
||||
*/
|
||||
private String paySuccessOrder(OrderMainPO orderMainPO, OrderSubPO orderSubPO){
|
||||
private String paySuccessOrder(OrderMainPO orderMainPO, List<OrderSubPO> orderSubList){
|
||||
String orderStatus = null;
|
||||
LambdaUpdateWrapper<OrderSubPO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.set(OrderSubPO::getPayStatus, PayStatusEnum.SUCCESS.getCode());
|
||||
updateWrapper.eq(OrderSubPO::getPaymentId, orderSubPO.getPaymentId());
|
||||
updateWrapper.eq(OrderSubPO::getPaymentId, orderSubList.get(0).getPaymentId());
|
||||
orderSubRepo.update(updateWrapper);
|
||||
|
||||
//租车订单
|
||||
OrderSubPO rentSubPO = orderSubList.stream().filter(orderSubPO -> SubOrderTypeEnum.RENTCAR.getCode().equalsIgnoreCase(orderSubPO.getSuborderType())).findFirst().orElse( null);
|
||||
|
||||
LambdaUpdateWrapper<OrderMainPO> updateWrapper2 = new LambdaUpdateWrapper<>();
|
||||
updateWrapper2.eq(OrderMainPO::getOrderId, orderMainPO.getOrderId());
|
||||
if(OrderStatusEnum.WAIT_PAY.getCode().equalsIgnoreCase(orderMainPO.getOrderStatus())){
|
||||
updateWrapper2.set(OrderMainPO::getOrderStatus, OrderStatusEnum.WAIT_PICK.getCode());
|
||||
orderStatus = OrderStatusEnum.WAIT_PICK.getCode();
|
||||
} else if(OrderStatusEnum.RERENT_WAIT_PAY.getCode().equalsIgnoreCase(orderMainPO.getOrderStatus())){
|
||||
updateWrapper2.set(OrderMainPO::getOrderAmount, orderMainPO.getOrderAmount().add(orderSubPO.getAmount()));
|
||||
updateWrapper2.set(OrderMainPO::getEndRentTime, orderSubPO.getReturnTime());
|
||||
BigDecimal rentCarOrderAmount = orderSubList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
updateWrapper2.set(OrderMainPO::getOrderAmount, orderMainPO.getOrderAmount().add(rentCarOrderAmount));
|
||||
if(rentSubPO!=null){
|
||||
updateWrapper2.set(OrderMainPO::getEndRentTime, rentSubPO.getReturnTime());
|
||||
}
|
||||
updateWrapper2.set(OrderMainPO::getOrderStatus, OrderStatusEnum.RENT_ING.getCode());
|
||||
if(orderMainPO.getOverdueDays()>0){
|
||||
updateWrapper2.set(OrderMainPO::getOverdueDays, 0);
|
||||
@ -1095,7 +1127,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
orderStatus = OrderStatusEnum.RENT_ING.getCode();
|
||||
}
|
||||
//如果是续租订单,增加续租次数
|
||||
if(SubOrderTypeEnum.RENTCAR.getCode().equalsIgnoreCase(orderSubPO.getSuborderType())){
|
||||
if(rentSubPO!=null){
|
||||
updateWrapper2.set(OrderMainPO::getRenewalTimes, orderMainPO.getRenewalTimes()+1);
|
||||
}
|
||||
orderMainRepo.update(updateWrapper2);
|
||||
|
||||
Reference in New Issue
Block a user