From c836bbe1334993ddef70d71195204f2e35026f4d Mon Sep 17 00:00:00 2001 From: yaodan <1421553879@qq.com> Date: Sun, 30 Apr 2023 18:09:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TeacherOpenCourseHandsOnService.java | 4 +- ...acherOpenCourseMergeCourseInfoService.java | 6 +- ...enCourseMergeResourcesQuestionService.java | 64 +++++++++---------- ...ourseMergeResourcesQuestionController.java | 3 +- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java index 4eece74f..3e9461af 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java @@ -485,7 +485,9 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService<TeacherOpen */ public void copySystemHandsToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, @NotNull(message = "课程ID不能为空!") Long courseInfoId, - @Nullable Map<Long, Long> courseInfoIdPair) { + @Nullable Map<Long, Long> courseInfoIdPair, + @Nullable Map<Long, Long> resourcesQuestionIdPair + ) { Date now = new Date(); CoreUser currentUser = getUser(); 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 0cbcb2f3..b0458a0e 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -807,8 +807,8 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea // 如果课程章节没查到记录,则下面的资源也没必要执行,资源依赖课程章节 if (ObjectUtil.isNotEmpty(courseInfos)) { - // 拷贝系统题目库到教师开课 - teacherOpenCourseMergeResourcesQuestionService.copySystemQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); + // 拷贝系统题目库到教师开课,并返回新旧题目ID的映射关系 + Map<Long, Long> resourcesQuestionIdPair = teacherOpenCourseMergeResourcesQuestionService.copySystemQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); // 取出来所有的课程章、节的ID。大于等于2,就是章和他的子节点.从系统题目表抽取 // teacherOpenCourseQuestionSettingService.copySystemQuestionChapterTestQuestionToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); // 从开课题库中抽取章节练习题 @@ -816,7 +816,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea // 拷贝系统资源库到教师开课 teacherOpenCourseMergeResourcesInfoService.copySystemResourcesInfoToOpenCourse(teacherOpenCourseId, courseInfos, courseInfoIdPair); - teacherOpenCourseHandsOnService.copySystemHandsToOpenCourse(teacherOpenCourseId, courseInfoId, courseInfoIdPair); + teacherOpenCourseHandsOnService.copySystemHandsToOpenCourse(teacherOpenCourseId, courseInfoId, courseInfoIdPair,resourcesQuestionIdPair); } }); diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java index bb50dc40..f73c7c12 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java @@ -3,6 +3,7 @@ package com.ibeetl.jlw.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Snowflake; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.NumberUtil; @@ -81,6 +82,8 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ @Autowired private ResourcesQuestionSnapshotService resourcesQuestionSnapshotService; + private static final Snowflake snowflake = new Snowflake(); + public PageQuery<TeacherOpenCourseMergeResourcesQuestion> queryByCondition(PageQuery query) { PageQuery ret = teacherOpenCourseMergeResourcesQuestionDao.queryByCondition(query); @@ -465,8 +468,8 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param allCourseInfo 指定的所有课程章节信息 * @param courseInfoIdPair 拷贝过来的ID段,旧ID和新ID的一个映射关系(非必填) */ - public void copySystemQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, - Collection<CourseInfo> allCourseInfo, @NotNull Map<Long, Long> courseInfoIdPair) { + public Map<Long, Long> copySystemQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, + Collection<CourseInfo> allCourseInfo, @NotNull Map<Long, Long> courseInfoIdPair) { // 待拷贝的系统课程ID不能为空.才会执行 if (ObjectUtil.isNotEmpty(allCourseInfo)) { @@ -480,33 +483,12 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ // 系统题目库ID集合 Set<Long> resourcesQuestionIds = resourcesQuestionList.stream().map(ResourcesQuestion::getResourcesQuestionId).collect(toSet()); // 拷贝系统题目库到教师开课 - copyFromSystemQuestion(resourcesQuestionIds, teacherOpenCourseId, courseInfoIdPair); + return copyFromSystemQuestion(resourcesQuestionIds, teacherOpenCourseId, courseInfoIdPair); } + return new HashMap<>(); } - /** - * 根据指定的课程ID和章节ID集合,去从系统题目拷贝到开课题目库 - * - * @param teacherOpenCourseId 开课ID - * @param allCourseInfoIdsJoin 指定的所有课程章节ID - * @param courseInfoIdPair 拷贝过来的ID段,旧ID和新ID的一个映射关系(非必填) - */ - public void copySystemQuestionToOpenCourse(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, - String allCourseInfoIdsJoin, @NotNull Map<Long, Long> courseInfoIdPair) { - // 待拷贝的系统课程ID不能为空.才会执行 - if (ObjectUtil.isNotEmpty(allCourseInfoIdsJoin)) { - ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery(); - resourcesQuestionQuery.setCourseInfoIds(allCourseInfoIdsJoin); - resourcesQuestionQuery.setQuestionStatus(1); - List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery); - - // 系统题目库ID集合 - Set<Long> resourcesQuestionIds = resourcesQuestionList.stream().map(ResourcesQuestion::getResourcesQuestionId).collect(toSet()); - // 拷贝系统题目库到教师开课 - copyFromSystemQuestion(resourcesQuestionIds, teacherOpenCourseId, courseInfoIdPair); - } - } /** * 从resources_question 表,拷贝数据。类似从模板中,拉取数据 @@ -519,11 +501,11 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param courseInfoIdPair * @return */ - public void copyFromSystemQuestion(Set<Long> systemResourcesQuestionIds, - @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map<Long, Long> courseInfoIdPair) { + public Map<Long, Long> copyFromSystemQuestion(Set<Long> systemResourcesQuestionIds, + @NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, Map<Long, Long> courseInfoIdPair) { if (ObjectUtil.isEmpty(systemResourcesQuestionIds)) { - return; + return courseInfoIdPair; } // 题目ID集合 String ids = join(systemResourcesQuestionIds.toArray(), ","); @@ -536,11 +518,13 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ // 转换后的数据暂存 List<TeacherOpenCourseMergeResourcesQuestion> convertedList = new ArrayList<>(); // 类转换方法 - resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion(resourcesQuestions, convertedList, courseInfoIdPair); + Map<Long, Long> resourcesQuestionIdPair = resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion(resourcesQuestions, convertedList, courseInfoIdPair); // 设置开课ID convertedList.forEach(item -> item.setTeacherOpenCourseId(teacherOpenCourseId)); // 批量插入 teacherOpenCourseMergeResourcesQuestionDao.insertBatch(convertedList); + + return resourcesQuestionIdPair; } /** @@ -550,21 +534,37 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param to * @param courseInfoIdPair */ - public void resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion( + public Map<Long, Long> resourcesQuestionConvertToTeacherOpenCourseMergeResourcesQuestion( @NotNull Collection<ResourcesQuestion> from, @NotNull Collection<TeacherOpenCourseMergeResourcesQuestion> to, Map<Long, Long> courseInfoIdPair) { + + Map<Long, Long> resourcesQuestionIdPair = new HashMap<>(); // 拷贝部分字段映射 - CopyOptions copyOptions = CopyOptions.create().setFieldMapping(MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId")); + Map<String, String> of = MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId"); + of.put("resourcesQuestionId", "teacherOpenCourseMergeResourcesQuestionId"); + CopyOptions copyOptions = CopyOptions.create().setFieldMapping(of); // 拷贝 to.addAll(BeanUtil.copyToList(from, TeacherOpenCourseMergeResourcesQuestion.class, copyOptions)); + // 主动更改Id,并记录映射关系 + for (TeacherOpenCourseMergeResourcesQuestion teacherOpenCourseMergeResourcesQuestion : to) { + long newId = snowflake.nextId(); + + // 记录映射关系 + resourcesQuestionIdPair.put(teacherOpenCourseMergeResourcesQuestion.getTeacherOpenCourseMergeResourcesQuestionId(), + newId); + teacherOpenCourseMergeResourcesQuestion.setTeacherOpenCourseMergeCourseInfoId(newId); + } + if (ObjectUtil.isAllEmpty(to, courseInfoIdPair)) { - return; + return new HashMap<>(); } // 重置开课课程ID resetNewId(to, courseInfoIdPair); + + return resourcesQuestionIdPair; } /** diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java index fb152062..db6fd2dd 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeResourcesQuestionController.java @@ -466,8 +466,7 @@ public class TeacherOpenCourseMergeResourcesQuestionController extends BaseContr */ @PostMapping(API + "/copyFromQuestion.do") public JsonResult copyFromQuestion(Long[] resourcesQuestionIds, Long teacherOpenCourseId) { - teacherOpenCourseMergeResourcesQuestionService.copyFromSystemQuestion(CollectionUtil.newHashSet(resourcesQuestionIds), teacherOpenCourseId, null); - return JsonResult.success(); + return JsonResult.success(teacherOpenCourseMergeResourcesQuestionService.copyFromSystemQuestion(CollectionUtil.newHashSet(resourcesQuestionIds), teacherOpenCourseId, null)); } /**