refactor(task): 优化重复任务处理逻辑

- 修复重复任务时直接使用旧任务ID的问题
- 实现重复任务的更新机制:重置workerId为空,status为0
- 添加taskParams的更新功能
- 集成任务缓存清理机制
- 修正订单购买状态检查的参数传递
This commit is contained in:
2025-12-31 20:03:58 +08:00
parent cfb4284b7c
commit b4628bd3e8

View File

@@ -439,11 +439,21 @@ public class TaskTaskServiceImpl implements TaskService {
}
memberVideoEntity.setTaskId(taskEntity.getId());
} else {
log.info("重复task! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap);
memberVideoEntity.setTaskId(list.getFirst().getId());
VideoEntity video = videoMapper.findByTaskId(list.getFirst().getId());
log.info("重复task,更新旧任务! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap);
TaskRespVO existingTask = list.getFirst();
// 更新旧任务:重置workerId为空,status为0,更新taskParams
TaskEntity taskUpdate = new TaskEntity();
taskUpdate.setId(existingTask.getId());
taskUpdate.setWorkerId(null);
taskUpdate.setStatus(0);
taskUpdate.setTaskParams(JacksonUtil.toJSONString(sourcesMap));
taskMapper.update(taskUpdate);
videoTaskRepository.clearTaskCache(existingTask.getId());
memberVideoEntity.setTaskId(existingTask.getId());
VideoEntity video = videoMapper.findByTaskId(existingTask.getId());
if (video != null) {
IsBuyRespVO isBuy = orderBiz.isBuy(list.getFirst().getScenicId(), face.getMemberId(), face.getId(), 0, video.getId());
IsBuyRespVO isBuy = orderBiz.isBuy(existingTask.getScenicId(), face.getMemberId(), face.getId(), 0, video.getId());
if (isBuy.isBuy()) {
memberVideoEntity.setIsBuy(1);
memberVideoEntity.setOrderId(isBuy.getOrderId());