diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java index 3dba403..64e0693 100644 --- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java @@ -235,12 +235,16 @@ public class OrderServiceImpl implements OrderService { String redisLockKey = RedisKeyConstants.ORDER_SUB_KEY + userInfoDTO.getUserId(); if(redisUtil.getRedisLock(redisLockKey, "续租")) { try{ + LambdaQueryWrapper currentOrderWrapper = new LambdaQueryWrapper<>(); currentOrderWrapper.eq(OrderMainPO::getOrderNo, rentCarOrderReq.getOrderNo()).last( " limit 1"); OrderMainPO orderMainPO = orderMainRepo.getOne(currentOrderWrapper); if(orderMainPO == null){ throw new BizException("订单不存在"); } + if(!OrderStatusEnum.RENT_ING.getCode().equals(orderMainPO.getOrderStatus()) && !OrderStatusEnum.RENT_OVERDUE.getCode().equals(orderMainPO.getOrderStatus())){ + throw new BizException("订单非租赁或逾期状态,不能续租"); + } //生成子表订单 String paymentType; if(rentCarOrderReq.getIsAutoDeduct()){ @@ -353,6 +357,7 @@ public class OrderServiceImpl implements OrderService { LambdaQueryWrapper orderSubQueryWrapper = new LambdaQueryWrapper<>(); orderSubQueryWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId()); orderSubQueryWrapper.eq(OrderSubPO::getPayStatus, PayStatusEnum.USERPAYING.getCode()); + orderSubQueryWrapper.orderByDesc(OrderSubPO::getCreatedAt); List orderSubPOList = orderSubRepo.list(orderSubQueryWrapper); if(orderSubPOList.isEmpty()){ throw new InnerException("待支付子订单不存在"); @@ -437,6 +442,9 @@ public class OrderServiceImpl implements OrderService { if(orderMainPO == null){ throw new BizException("订单不存在"); } + if(!OrderStatusEnum.RENT_OVERDUE.getCode().equals(orderMainPO.getOrderStatus())){ + throw new BizException("订单非逾期状态,不能逾期处理"); + } //生成子表订单 String paymentType; if(rentCarOrderReq.getIsAutoDeduct()){