From 91160a1adb963237e06d04575a4e1e624d9fbc51 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 30 Dec 2025 18:12:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(task):=20=E4=BF=AE=E5=A4=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E9=87=8D=E5=A4=8D=E5=88=9B=E5=BB=BA=E5=92=8C=E7=A9=BA?= =?UTF-8?q?=E6=8C=87=E9=92=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在原位替换模式下设置taskParams为null,避免按参数匹配 - 添加isReuseOldTask标识判断是否复用旧任务 - 复用旧任务时执行更新操作而非新增操作 - 添加member和item空值检查,防止空指针异常 - 优化日志记录,提供更准确的操作信息 --- .../service/task/impl/TaskTaskServiceImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 64df239c..24348778 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 @@ -402,12 +402,15 @@ public class TaskTaskServiceImpl implements TaskService { log.info("创建任务! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap); ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId()); TaskEntity taskEntity = null; + boolean isReuseOldTask = false; if (Integer.valueOf(0).equals(scenicConfig.getInteger("template_new_video_type"))) { log.info("景区{}启用:templateNewVideoType:全新视频原位替换", face.getScenicId()); taskReqQuery.setTemplateId(templateId); + taskReqQuery.setTaskParams(null); // 原位替换模式下,不按taskParams匹配 List templateTaskList = taskMapper.listEntity(taskReqQuery); if (!templateTaskList.isEmpty()) { taskEntity = templateTaskList.getFirst(); + isReuseOldTask = true; log.info("已有旧生成的视频:{}", taskEntity); MemberVideoEntity taskVideoRelation = videoMapper.queryRelationByMemberTask(face.getMemberId(), taskEntity.getId()); if (taskVideoRelation != null) { @@ -428,7 +431,12 @@ public class TaskTaskServiceImpl implements TaskService { taskEntity.setWorkerId(null); taskEntity.setStatus(0); taskEntity.setTaskParams(JacksonUtil.toJSONString(sourcesMap)); - taskMapper.add(taskEntity); + if (isReuseOldTask) { + taskMapper.update(taskEntity); + log.info("更新旧任务! taskId:{}", taskEntity.getId()); + } else { + taskMapper.add(taskEntity); + } memberVideoEntity.setTaskId(taskEntity.getId()); } else { log.info("重复task! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap); @@ -590,6 +598,10 @@ public class TaskTaskServiceImpl implements TaskService { public void sendVideoGeneratedServiceNotification(Long taskId, Long memberId) { MemberVideoEntity item = videoMapper.queryRelationByMemberTask(memberId, taskId); MemberRespVO member = memberMapper.getById(memberId); + if (member == null || item == null) { + log.warn("sendVideoGeneratedServiceNotification member or item is null, memberId:{}, taskId:{}", memberId, taskId); + return; + } String openId = member.getOpenId(); MpConfigEntity scenicMp = scenicRepository.getScenicMpConfig(member.getScenicId()); if (StringUtils.isNotBlank(openId) && scenicMp != null) {