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);
|
log.info("创建任务! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap);
|
||||||
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId());
|
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId());
|
||||||
TaskEntity taskEntity = null;
|
TaskEntity taskEntity = null;
|
||||||
|
boolean isReuseOldTask = false;
|
||||||
if (Integer.valueOf(0).equals(scenicConfig.getInteger("template_new_video_type"))) {
|
if (Integer.valueOf(0).equals(scenicConfig.getInteger("template_new_video_type"))) {
|
||||||
log.info("景区{}启用:templateNewVideoType:全新视频原位替换", face.getScenicId());
|
log.info("景区{}启用:templateNewVideoType:全新视频原位替换", face.getScenicId());
|
||||||
taskReqQuery.setTemplateId(templateId);
|
taskReqQuery.setTemplateId(templateId);
|
||||||
|
taskReqQuery.setTaskParams(null); // 原位替换模式下,不按taskParams匹配
|
||||||
List<TaskEntity> templateTaskList = taskMapper.listEntity(taskReqQuery);
|
List<TaskEntity> templateTaskList = taskMapper.listEntity(taskReqQuery);
|
||||||
if (!templateTaskList.isEmpty()) {
|
if (!templateTaskList.isEmpty()) {
|
||||||
taskEntity = templateTaskList.getFirst();
|
taskEntity = templateTaskList.getFirst();
|
||||||
|
isReuseOldTask = true;
|
||||||
log.info("已有旧生成的视频:{}", taskEntity);
|
log.info("已有旧生成的视频:{}", taskEntity);
|
||||||
MemberVideoEntity taskVideoRelation = videoMapper.queryRelationByMemberTask(face.getMemberId(), taskEntity.getId());
|
MemberVideoEntity taskVideoRelation = videoMapper.queryRelationByMemberTask(face.getMemberId(), taskEntity.getId());
|
||||||
if (taskVideoRelation != null) {
|
if (taskVideoRelation != null) {
|
||||||
@@ -428,7 +431,12 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
taskEntity.setWorkerId(null);
|
taskEntity.setWorkerId(null);
|
||||||
taskEntity.setStatus(0);
|
taskEntity.setStatus(0);
|
||||||
taskEntity.setTaskParams(JacksonUtil.toJSONString(sourcesMap));
|
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());
|
memberVideoEntity.setTaskId(taskEntity.getId());
|
||||||
} else {
|
} else {
|
||||||
log.info("重复task! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap);
|
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) {
|
public void sendVideoGeneratedServiceNotification(Long taskId, Long memberId) {
|
||||||
MemberVideoEntity item = videoMapper.queryRelationByMemberTask(memberId, taskId);
|
MemberVideoEntity item = videoMapper.queryRelationByMemberTask(memberId, taskId);
|
||||||
MemberRespVO member = memberMapper.getById(memberId);
|
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();
|
String openId = member.getOpenId();
|
||||||
MpConfigEntity scenicMp = scenicRepository.getScenicMpConfig(member.getScenicId());
|
MpConfigEntity scenicMp = scenicRepository.getScenicMpConfig(member.getScenicId());
|
||||||
if (StringUtils.isNotBlank(openId) && scenicMp != null) {
|
if (StringUtils.isNotBlank(openId) && scenicMp != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user