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