diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeCourseInfoDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeCourseInfoDao.java index d62ea61d..592d1ffe 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeCourseInfoDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeCourseInfoDao.java @@ -88,4 +88,17 @@ public interface TeacherOpenCourseMergeCourseInfoDao extends BaseMapper<TeacherO */ @Update void deleteMergeCourseInfoByTeacherOpenCourseIds(String teacherOpenCourseIds); + + /** + * 通过开课ID获取课程节点信息 + * @param teacherOpenCourseId + * @return + */ + @Cacheable(value = "teacherOpenCourseMergeCourseInfoDao.getCourseInfoNodeByTeacherOpenCourseId", unless = "#result != null") + default TeacherOpenCourseMergeCourseInfo getCourseInfoNodeByTeacherOpenCourseId(@NotNull Long teacherOpenCourseId) { + return createLambdaQuery().andEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseId, teacherOpenCourseId) + .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1) + .andIsNull(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId) + .unique(); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java index 0f5782a4..b1465d11 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -161,9 +161,9 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea for (String id : ids.split(",")) { List<TeacherOpenCourseMergeCourseInfo> courseResources = getCourseResources(Long.valueOf(id)); // TODO 这里要优化 - List<TeacherOpenCourseMergeCourseInfo> courseResources2 = getCourseResourcesByList(Long.valueOf(id)); - - int a = 1/0; +// List<TeacherOpenCourseMergeCourseInfo> courseResources2 = getCourseResourcesByList(Long.valueOf(id)); +// +// int a = 1/0; // 只匹配章节 Set<Long> idSet = courseResources.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType())) @@ -930,7 +930,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea * @return */ public List<TeacherOpenCourseMergeCourseInfo> getCourseResourcesByList(@NotNull Long teacherOpenCourseMergeCourseInfoId){ - ArrayList<TeacherOpenCourseMergeCourseInfo> result = new ArrayList<>(); + List<TeacherOpenCourseMergeCourseInfo> result = new CopyOnWriteArrayList<>(); getCourseResourcesByList(teacherOpenCourseMergeCourseInfoDao.getAllWithCache(), teacherOpenCourseMergeCourseInfoId, result); return result; } @@ -944,7 +944,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea * @return */ public List<TeacherOpenCourseMergeCourseInfo> getCourseResourcesByList(@NotNull Long teacherOpenCourseMergeCourseInfoId, @NotNull Long teacherOpenCourseId){ - ArrayList<TeacherOpenCourseMergeCourseInfo> result = new ArrayList<>(); + List<TeacherOpenCourseMergeCourseInfo> result = new CopyOnWriteArrayList<>(); getCourseResourcesByList(teacherOpenCourseMergeCourseInfoDao.getAllWithCacheWithTeacherOpenCourseId(teacherOpenCourseId), teacherOpenCourseMergeCourseInfoId, result); return result; } @@ -963,20 +963,15 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea public void getCourseResourcesByList(@NotNull Collection<TeacherOpenCourseMergeCourseInfo> courseInfoList, @NotNull Long filterTeacherOpenCourseMergeCourseInfoId, Collection<TeacherOpenCourseMergeCourseInfo> result){ - Iterator<TeacherOpenCourseMergeCourseInfo> iterator = courseInfoList.iterator(); - while (iterator.hasNext()) { - TeacherOpenCourseMergeCourseInfo courseInfo = iterator.next(); - + for (TeacherOpenCourseMergeCourseInfo courseInfo : courseInfoList) { // 先处理掉一些不合规的数据。防止死循环,过滤掉父类ID是他自己的情况 if(courseInfo.getCourseInfoParentId() == null || courseInfo.getCourseInfoParentId().equals(courseInfo.getTeacherOpenCourseMergeCourseInfoId())) { - iterator.remove(); continue; } // 处理关系 if(courseInfo.getCourseInfoParentId().equals(filterTeacherOpenCourseMergeCourseInfoId)) { result.add(courseInfo); - iterator.remove(); getCourseResourcesByList(courseInfoList, courseInfo.getTeacherOpenCourseMergeCourseInfoId(), result); } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java index 8095c62b..c3c9caf3 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java @@ -1,6 +1,7 @@ package com.ibeetl.jlw.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ConcurrentHashSet; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.func.Func1; import cn.hutool.core.util.ObjectUtil; @@ -562,7 +563,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea .filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType())).collect(Collectors.toSet()); // 章下面所有小节,包含章节点 - Set<TeacherOpenCourseMergeCourseInfo> result = new HashSet<>(12); + Set<TeacherOpenCourseMergeCourseInfo> result = new ConcurrentHashSet<>(12); for (TeacherOpenCourseMergeCourseInfo chapter : chapterSet) { result.clear(); Long teacherOpenCourseMergeCourseInfoId = chapter.getTeacherOpenCourseMergeCourseInfoId();