调度工单处理后过期不生效

This commit is contained in:
attiya 2025-11-27 10:31:27 +08:00
parent 339b01526f
commit b2e6cc0180

View File

@ -1,12 +1,20 @@
package com.cdzy.operations.component; package com.cdzy.operations.component;
import com.cdzy.operations.enums.BikeOrderType;
import com.cdzy.operations.enums.OrderDispatchState;
import com.cdzy.operations.enums.OrderHandleState;
import com.cdzy.operations.model.entity.EbikeBikeOrder;
import com.cdzy.operations.service.EbikeBikeOrderService;
import com.cdzy.operations.utils.RedisUtil; import com.cdzy.operations.utils.RedisUtil;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static com.cdzy.operations.model.entity.table.EbikeBikeOrderTableDef.EBIKE_BIKE_ORDER;
@Component @Component
@Slf4j @Slf4j
public class SafeOrderExpirationListener { public class SafeOrderExpirationListener {
@ -17,6 +25,9 @@ public class SafeOrderExpirationListener {
@Resource @Resource
private ServiceInstanceManager instanceManager; private ServiceInstanceManager instanceManager;
@Resource
private EbikeBikeOrderService orderService;
// Redis键常量 // Redis键常量
private static final String ORDER_KEY_PREFIX = "bike:dispatch:lock:"; private static final String ORDER_KEY_PREFIX = "bike:dispatch:lock:";
@ -68,7 +79,7 @@ public class SafeOrderExpirationListener {
try { try {
// 执行实际的过期处理逻辑 // 执行实际的过期处理逻辑
processExpiredOrderBusiness(orderId, instanceId); processExpiredOrderBusiness(orderId);
log.info("实例 {} 完成工单过期处理: orderId={}", instanceId, orderId); log.info("实例 {} 完成工单过期处理: orderId={}", instanceId, orderId);
@ -98,9 +109,17 @@ public class SafeOrderExpirationListener {
/** /**
* 实际的业务处理逻辑 * 实际的业务处理逻辑
*/ */
private void processExpiredOrderBusiness(String orderId, String instanceId) { private void processExpiredOrderBusiness(String orderId) {
try { try {
//TODO处理订单该订单为到期未有用户骑行的调度订单 //处理订单该订单为到期未有用户骑行的调度订单
QueryWrapper query = QueryWrapper.create()
.where(EBIKE_BIKE_ORDER.ORDER_ID.eq(orderId))
.where(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.DISPATCH))
.where(EBIKE_BIKE_ORDER.HANDLE_STATE.eq(OrderHandleState.PROCESSED))
.where(EBIKE_BIKE_ORDER.DISPATCH_STATE.eq(OrderDispatchState.PROCESSED));
EbikeBikeOrder bikeOrder = orderService.getOne(query);
bikeOrder.setDispatchState(OrderDispatchState.INEFFECTIVE);
orderService.updateById(bikeOrder);
} catch (Exception e) { } catch (Exception e) {
log.error("处理工单业务异常: orderId={}", orderId, e); log.error("处理工单业务异常: orderId={}", orderId, e);
throw e; throw e;