You've already forked FrameTour-BE
fix(task): 修复任务重复创建和空指针问题
- 在原位替换模式下设置taskParams为null,避免按参数匹配 - 添加isReuseOldTask标识判断是否复用旧任务 - 复用旧任务时执行更新操作而非新增操作 - 添加member和item空值检查,防止空指针异常 - 优化日志记录,提供更准确的操作信息
This commit is contained in:
@@ -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<TaskEntity> 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) {
|
||||
|
||||
Reference in New Issue
Block a user