|
|
@@ -96,11 +96,42 @@ public class OrderServiceImpl implements OrderService {
|
|
|
order.setPayTime(LocalDateTime.now());
|
|
|
order.setUpdateTime(LocalDateTime.now());
|
|
|
orderMapper.updateById(order);
|
|
|
-
|
|
|
+
|
|
|
createSubscription(order);
|
|
|
+ cancelOtherPendingOrders(order.getUserId(), order.getPoolType(), orderNo);
|
|
|
log.info("支付成功,orderNo: {}", orderNo);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 取消用户在同一订阅池的其他未支付订单
|
|
|
+ */
|
|
|
+ private void cancelOtherPendingOrders(Long userId, Integer poolType, String currentOrderNo) {
|
|
|
+ List<PaymentOrder> pendingOrders = orderMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<PaymentOrder>()
|
|
|
+ .eq(PaymentOrder::getUserId, userId)
|
|
|
+ .eq(PaymentOrder::getPoolType, poolType)
|
|
|
+ .eq(PaymentOrder::getOrderStatus, PaymentOrder.STATUS_PENDING)
|
|
|
+ .ne(PaymentOrder::getOrderNo, currentOrderNo)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (pendingOrders.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ for (PaymentOrder order : pendingOrders) {
|
|
|
+ order.setOrderStatus(PaymentOrder.STATUS_CANCELLED);
|
|
|
+ order.setCancelTime(now);
|
|
|
+ order.setUpdateTime(now);
|
|
|
+ orderMapper.updateById(order);
|
|
|
+ log.info("自动取消用户其他未支付订单,orderNo: {}, userId: {}, poolType: {}",
|
|
|
+ order.getOrderNo(), userId, poolType);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("自动取消用户其他未支付订单完成,userId: {}, poolType: {}, 共取消{}个订单",
|
|
|
+ userId, poolType, pendingOrders.size());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 创建订阅
|
|
|
* 超短池:到当日24点
|