diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java index 24989e2b..fe7f6545 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java @@ -385,6 +385,8 @@ public class CourseTagServiceImpl implements ICourseTagService { QueryBuilder query=QueryBuilder.from(CourseTag.class); List filters = new ArrayList<>(); filters.add(FieldFilters.eq("tagName",tagName));//精确匹配 + filters.add(FieldFilters.eq("status",0));//正式 + filters.add(FieldFilters.eq("deleted",0));//未删除的 query.addFilters(filters); List courseTagList = courseTagDao.findList(query.builder()); if (courseTagList==null || courseTagList.size()==0){//1.1 如果该标签不存在,则新建标签 @@ -461,6 +463,9 @@ public class CourseTagServiceImpl implements ICourseTagService { continue; } + //合并临时标签 + tag = mergeTag(tag); + // 创建课程-标签关联关系 createCourseTagRelation(courseId, tag, userInfo); @@ -508,6 +513,9 @@ public class CourseTagServiceImpl implements ICourseTagService { log.warn("标签不存在: {}", tagId); continue; } + //如果已有同名的正式标签 则需要合并 + //合并临时标签 + tag = mergeTag(tag); // 创建课程-标签关联关系 createCourseTagRelation(courseId, tag, userInfo); @@ -526,6 +534,35 @@ public class CourseTagServiceImpl implements ICourseTagService { log.info("完成编辑课程标签处理: courseId={}", newCourse != null ? newCourse.getId() : "null"); } + + /** + * 合并标签 + */ + private CourseTag mergeTag(CourseTag tag){ + //只处理临时标签 正式的忽略 + if (tag.getStatus()==1){ + QueryBuilder query=QueryBuilder.from(CourseTag.class); + List filters = new ArrayList<>(); + filters.add(FieldFilters.eq("tagName",tag));//精确匹配 + filters.add(FieldFilters.eq("status",0));//正式 + filters.add(FieldFilters.eq("deleted",0));//未删除的 + query.addFilters(filters); + List courseTagList = courseTagDao.findList(query.builder()); + log.info("标签合并 createTag courseTagList = {} " , courseTagList); + //如果无同名正式标签 则转正 + //有同名正式标签 则合并 + if (courseTagList != null && !courseTagList.isEmpty()) { + //删除临时标签 + tag.setSysUpdateBy("系统合并删除"); + tag.setSysUpdateTime(LocalDateTime.now()); + courseTagDao.setDeleted(tag.getId()); + //返回同名正式标签 + tag = courseTagList.get(0); + } + } + return tag; + } + /** * 创建课程-标签关联关系 */ @@ -739,7 +776,9 @@ public class CourseTagServiceImpl implements ICourseTagService { tag != null ? tag.getUseCount() : "null"); // 将标签状态设置为正式(status=0) - tag.setStatus(0); // 正式标签 + if (tag != null && tag.getStatus() == 1) { + tag.setStatus(0); // 正式标签 + } // 统计当前活跃的关联关系数量 QueryBuilder query = QueryBuilder.from(CourseTagRelation.class); List filters = new ArrayList<>();