fix(ops): 迁移updateStatus修复到Enhanced实现
REMOVED 状态改为同步更新 Redis,避免自动派单查询到已完成任务 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -179,17 +179,30 @@ public class OrderQueueServiceEnhanced implements OrderQueueService {
|
|||||||
|
|
||||||
int updated = orderQueueMapper.updateById(queueDO);
|
int updated = orderQueueMapper.updateById(queueDO);
|
||||||
|
|
||||||
// 2. 异步更新 Redis
|
// 2. 更新 Redis
|
||||||
if (updated > 0) {
|
if (updated > 0) {
|
||||||
OrderQueueDTO dto = convertToDTO(queueDO);
|
OrderQueueDTO dto = convertToDTO(queueDO);
|
||||||
CompletableFuture.runAsync(() -> {
|
|
||||||
|
// REMOVED 状态需要同步更新,确保任务完成后立即从 Redis 队列移除
|
||||||
|
// 避免自动派单下一个时查询到已完成的任务
|
||||||
|
if (OrderQueueStatusEnum.REMOVED == newStatus) {
|
||||||
try {
|
try {
|
||||||
redisQueueService.updateStatus(queueId, newStatus.getStatus());
|
redisQueueService.updateStatus(queueId, newStatus.getStatus());
|
||||||
log.debug("Redis 更新状态成功: queueId={}, status={}", queueId, newStatus.getStatus());
|
log.debug("Redis 同步更新状态成功: queueId={}, status={}", queueId, newStatus.getStatus());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Redis 更新状态失败: queueId={}", queueId, e);
|
log.error("Redis 同步更新状态失败: queueId={}", queueId, e);
|
||||||
}
|
}
|
||||||
});
|
} else {
|
||||||
|
// 其他状态异步更新
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
try {
|
||||||
|
redisQueueService.updateStatus(queueId, newStatus.getStatus());
|
||||||
|
log.debug("Redis 异步更新状态成功: queueId={}, status={}", queueId, newStatus.getStatus());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Redis 异步更新状态失败: queueId={}", queueId, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("队列状态已更新: queueId={}, opsOrderId={}, oldStatus={}, newStatus={}",
|
log.info("队列状态已更新: queueId={}, opsOrderId={}, oldStatus={}, newStatus={}",
|
||||||
|
|||||||
Reference in New Issue
Block a user