Compare commits
2 Commits
6ce070ffc7
...
859fcdc118
| Author | SHA1 | Date | |
|---|---|---|---|
| 859fcdc118 | |||
| 798f68aa2b |
@ -688,47 +688,56 @@ public class OrderServiceImpl implements OrderService {
|
||||
return getOrderDetailByOrderNo(orderMainPO.getOrderNo());
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void rejectRentOrder(RejectOrderReq rejectOrderReq) {
|
||||
OrderMainPO orderMainPO = queryOrderMainPoByOrderNo(rejectOrderReq.getOrderNo(), "0");
|
||||
if(!orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){
|
||||
throw new BizException("订单状态异常,非待取车状态,无法驳回");
|
||||
if(!orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())||!orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_RETURN.getCode())){
|
||||
throw new BizException("订单状态异常,非待取车或待还车状态,无法驳回");
|
||||
}
|
||||
SimpleUserInfoDTO userInfoDTO = jwtUtil.getUserInfoFromToken();
|
||||
//获取租车子订单
|
||||
LambdaQueryWrapper<OrderSubPO> orderSubWrapper = new LambdaQueryWrapper<>();
|
||||
orderSubWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId())
|
||||
.eq(OrderSubPO::getDelFlag, "0")
|
||||
.eq(OrderSubPO::getSuborderType, SubOrderTypeEnum.RENTCAR.getCode())
|
||||
.eq(OrderSubPO::getPayStatus, PayStatusEnum.SUCCESS).last(" limit 1");
|
||||
OrderSubPO orderSubPO = orderSubRepo.getOne(orderSubWrapper);
|
||||
//异步退款订单
|
||||
ThreadPoolUtils.getThreadPool().execute(() -> {
|
||||
//变更订单状态,记录结束订单时间,记录订单备注
|
||||
|
||||
if(orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){
|
||||
//获取租车子订单
|
||||
LambdaQueryWrapper<OrderSubPO> orderSubWrapper = new LambdaQueryWrapper<>();
|
||||
orderSubWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId())
|
||||
.eq(OrderSubPO::getDelFlag, "0")
|
||||
.eq(OrderSubPO::getSuborderType, SubOrderTypeEnum.RENTCAR.getCode())
|
||||
.eq(OrderSubPO::getPayStatus, PayStatusEnum.SUCCESS).last(" limit 1");
|
||||
OrderSubPO orderSubPO = orderSubRepo.getOne(orderSubWrapper);
|
||||
//异步退款订单
|
||||
ThreadPoolUtils.getThreadPool().execute(() -> {
|
||||
//变更订单状态,记录结束订单时间,记录订单备注
|
||||
LambdaUpdateWrapper<OrderMainPO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.MANUAL_END.getCode());
|
||||
updateWrapper.set(OrderMainPO::getActEndRentTime, LocalDateTime.now());
|
||||
updateWrapper.eq(OrderMainPO::getOrderNo, rejectOrderReq.getOrderNo());
|
||||
orderMainRepo.update(updateWrapper);
|
||||
if (Objects.nonNull(orderSubPO)) {
|
||||
//退款调用成功则添加退款子订单
|
||||
String outRefundNo = payService.refundOrder(orderSubPO.getPaymentMethod(), orderMainPO.getOperatorId(), orderSubPO.getPaymentId(), orderMainPO.getOrderAmount(), orderMainPO.getOrderAmount());
|
||||
if (StringUtils.isNotBlank(outRefundNo)) {
|
||||
OrderSubPO fdSubOrder = new OrderSubPO();
|
||||
fdSubOrder.setOrderId(orderMainPO.getOrderId());
|
||||
fdSubOrder.setSuborderNo(OrderUtil.generateSubOrderNo(OrderUtil.FD_PREFIX));
|
||||
fdSubOrder.setSuborderType(SubOrderTypeEnum.FD_REJECT.getCode());
|
||||
fdSubOrder.setAmount(orderMainPO.getOrderAmount());
|
||||
fdSubOrder.setPaymentMethod(orderSubPO.getPaymentMethod());
|
||||
fdSubOrder.setPayStatus(PayStatusEnum.REFUNDING.getCode());
|
||||
fdSubOrder.setPaymentId(orderSubPO.getPaymentId());
|
||||
fdSubOrder.setRefundId(outRefundNo);
|
||||
fdSubOrder.setRemark(rejectOrderReq.getRejectReason());
|
||||
orderSubRepo.save(fdSubOrder);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if(orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_RETURN.getCode())){
|
||||
LambdaUpdateWrapper<OrderMainPO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.MANUAL_END.getCode());
|
||||
updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.RENT_ING.getCode());
|
||||
updateWrapper.set(OrderMainPO::getActEndRentTime, LocalDateTime.now());
|
||||
updateWrapper.eq(OrderMainPO::getOrderNo, rejectOrderReq.getOrderNo());
|
||||
orderMainRepo.update(updateWrapper);
|
||||
if (Objects.nonNull(orderSubPO)) {
|
||||
//退款调用成功则添加退款子订单
|
||||
String outRefundNo = payService.refundOrder(orderSubPO.getPaymentMethod(), orderMainPO.getOperatorId(), orderSubPO.getPaymentId(), orderMainPO.getOrderAmount(), orderMainPO.getOrderAmount());
|
||||
if (StringUtils.isNotBlank(outRefundNo)) {
|
||||
OrderSubPO fdSubOrder = new OrderSubPO();
|
||||
fdSubOrder.setOrderId(orderMainPO.getOrderId());
|
||||
fdSubOrder.setSuborderNo(OrderUtil.generateSubOrderNo(OrderUtil.FD_PREFIX));
|
||||
fdSubOrder.setSuborderType(SubOrderTypeEnum.FD_REJECT.getCode());
|
||||
fdSubOrder.setAmount(orderMainPO.getOrderAmount());
|
||||
fdSubOrder.setPaymentMethod(orderSubPO.getPaymentMethod());
|
||||
fdSubOrder.setPayStatus(PayStatusEnum.REFUNDING.getCode());
|
||||
fdSubOrder.setPaymentId(orderSubPO.getPaymentId());
|
||||
fdSubOrder.setRefundId(outRefundNo);
|
||||
fdSubOrder.setRemark(rejectOrderReq.getRejectReason());
|
||||
orderSubRepo.save(fdSubOrder);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
||||
@ -14,11 +14,11 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 当前未提车订单处理任务
|
||||
* 当前未提车或未还车订单处理任务
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@ -41,34 +41,34 @@ public class NoPickCarProcessTask {
|
||||
@Scheduled(cron = "0 5 0 * * ?")//0点过5分执行
|
||||
@SchedulerLock(name = "checkNoPickCarOrders", lockAtMostFor = "9m", lockAtLeastFor = "1m")
|
||||
public void checkNoPickCarOrders() {
|
||||
log.info("开始执行当天未提车订单检查任务");
|
||||
log.info("开始执行当天未提车或未还车订单检查任务");
|
||||
try {
|
||||
processNoPickCarOrders();
|
||||
log.info("当天未提车订单检查任务执行完成");
|
||||
log.info("当天未提车或未还车订单检查任务执行完成");
|
||||
} catch (Exception e) {
|
||||
log.error("当天未提车订单检查任务失败", e);
|
||||
log.error("当天未提车或未还车订单检查任务失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理当天未提车订单
|
||||
* 处理当天未提车或未还车订单
|
||||
*/
|
||||
private void processNoPickCarOrders() {
|
||||
try {
|
||||
// 查询所有进行中的订单且当前时间已超过预计还车时间
|
||||
LambdaQueryWrapper<OrderMainPO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(OrderMainPO::getDelFlag, "0").in(OrderMainPO::getOrderStatus,
|
||||
Collections.singletonList(OrderStatusEnum.WAIT_PICK.getCode()))
|
||||
Arrays.asList(OrderStatusEnum.WAIT_PICK.getCode(), OrderStatusEnum.WAIT_RETURN.getCode()))
|
||||
.lt(OrderMainPO::getUpdateTime, LocalDateTime.now());
|
||||
|
||||
List<OrderMainPO> orders = orderMainRepo.list(queryWrapper);
|
||||
|
||||
if (orders.isEmpty()) {
|
||||
log.info("无当天未提车订单");
|
||||
log.info("无当天未提车或未还车订单");
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("发现{}个当天未提车订单,开始处理", orders.size());
|
||||
log.info("发现{}个当天未提车或未还车订单,开始处理", orders.size());
|
||||
|
||||
int successCount = 0;
|
||||
for (OrderMainPO order : orders) {
|
||||
@ -79,20 +79,20 @@ public class NoPickCarProcessTask {
|
||||
}
|
||||
}
|
||||
|
||||
log.info("当天未提车订单处理完成,成功处理{}个订单", successCount);
|
||||
log.info("当天未提车或未还车订单处理完成,成功处理{}个订单", successCount);
|
||||
} catch (Exception e) {
|
||||
log.error("处理当天未提车订单失败", e);
|
||||
log.error("处理当天未提车或未还车订单失败", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理当天未提车订单
|
||||
* 处理当天未提车或未还车订单
|
||||
*
|
||||
* @param orderMainPO
|
||||
*/
|
||||
private void processWayPay(OrderMainPO orderMainPO) {
|
||||
RejectOrderReq rejectOrderReq = new RejectOrderReq(orderMainPO.getOrderNo(), "当天未提车取消");
|
||||
RejectOrderReq rejectOrderReq = new RejectOrderReq(orderMainPO.getOrderNo(), "当天未提车或未还车取消");
|
||||
orderService.rejectRentOrder(rejectOrderReq);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user