From b4628bd3e84896d2826036607cf15712ebaaf94b Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 31 Dec 2025 20:03:58 +0800 Subject: [PATCH] =?UTF-8?q?refactor(task):=20=E4=BC=98=E5=8C=96=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E4=BB=BB=E5=8A=A1=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复重复任务时直接使用旧任务ID的问题 - 实现重复任务的更新机制:重置workerId为空,status为0 - 添加taskParams的更新功能 - 集成任务缓存清理机制 - 修正订单购买状态检查的参数传递 --- .../service/task/impl/TaskTaskServiceImpl.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index 24348778..b45cee00 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -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());