From 7cacd5c831bb4583c83ce25702543acfd53d4531 Mon Sep 17 00:00:00 2001 From: Mlxa0324 <mlx950324@163.com> Date: Sun, 26 Feb 2023 22:27:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E9=9A=8F=E6=9C=BA?= =?UTF-8?q?=E6=8A=BD=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...herOpenCourseMergeResourcesQuestionDao.java | 7 +------ .../ResourcesQuestionSnapshotService.java | 18 +++++++++++++++++- .../teacherOpenCourseMergeResourcesQuestion.md | 15 ++++++++------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java index d0f0960e..fe2d98c3 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java @@ -6,7 +6,6 @@ import com.ibeetl.jlw.entity.vo.QuestionTypeCountVO; import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesQuestionQuery; import org.beetl.sql.core.engine.PageQuery; import org.beetl.sql.mapper.BaseMapper; -import org.beetl.sql.mapper.annotation.Param; import org.beetl.sql.mapper.annotation.SqlResource; import org.beetl.sql.mapper.annotation.Update; import org.springframework.stereotype.Component; @@ -45,13 +44,9 @@ public interface TeacherOpenCourseMergeResourcesQuestionDao extends BaseMapper<T * 根据题型和数量,随机取离线题库。通过开课的题目快照表和题目配置表 * 这里用章节练习的原因是:开课中的题库,是实时同步到章节练习中的,删除或者上下架,也都会同步的。 * @param questionSettingDTO - * @param teacherOpenCourseId 开课ID - * @param questionSettingId 题目配置ID * @return */ - List<TeacherOpenCourseMergeResourcesQuestion> getRandomMergeResourcesQuestionListByChapterTestQuestion(QuestionSettingDTO questionSettingDTO, - @Param("teacherOpenCourseId") Long teacherOpenCourseId, - @Param("questionSettingId") Long questionSettingId); + <T extends QuestionSettingDTO> List<TeacherOpenCourseMergeResourcesQuestion> getRandomMergeResourcesQuestionListByChapterTestQuestion(T questionSettingDTO); /** * 根据开课ID获取下面的题目类型和类型下的总题数 diff --git a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java index 2dfbf9aa..e4d27832 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java @@ -22,6 +22,7 @@ import com.ibeetl.jlw.enums.GlobalUpStatusEnum; import com.ibeetl.jlw.enums.QuestionLogAddTypeEnum; import com.ibeetl.jlw.web.query.ResourcesQuestionSnapshotQuery; import com.ibeetl.jlw.web.query.TeacherOpenCourseQuestionSettingQuery; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.assertj.core.util.Lists; @@ -420,10 +421,16 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService<ResourcesQ List<ResourcesQuestionSnapshot> result = new ArrayList<>(); for (QuestionSettingDTO questionSettingOption : questionSettingOptions) { + + // 数据放在实体类扩展中 + QuestionSettingDTOExtend settingExtend = BeanUtil.copyProperties(questionSettingOption, QuestionSettingDTOExtend.class); + settingExtend.setQuestionSettingId(questionSettingId); + settingExtend.setTeacherOpenCourseId(null); + // 根据配置随机出题。这里直接设置题目的分值。 List<TeacherOpenCourseMergeResourcesQuestion> randomMergeResourcesQuestionList = teacherOpenCourseMergeResourcesQuestionDao - .getRandomMergeResourcesQuestionListByChapterTestQuestion(questionSettingOption, null, questionSettingId); + .getRandomMergeResourcesQuestionListByChapterTestQuestion(settingExtend); setRQNewCourseInfoId(randomMergeResourcesQuestionList, courseInfoIdPair); @@ -432,6 +439,15 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService<ResourcesQ } return result; } + + @Data + protected class QuestionSettingDTOExtend extends QuestionSettingDTO { + + private Long questionSettingId; + private Long teacherOpenCourseId; + + } + /** * 根据题目类型配置。从系统题库获取 * 获取题目快照列表。并配置题目配置ID diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md index 2a6a969d..ded61dc6 100644 --- a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md +++ b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md @@ -782,22 +782,24 @@ getRandomMergeResourcesQuestionListByChapterTestQuestion b.org_id FROM resources_question_snapshot a, - teacher_open_course_question_setting b + teacher_open_course_question_setting b, + teacher_open_course_merge_resources_question c WHERE 1 AND a.teacher_open_course_question_setting_id = a.teacher_open_course_question_setting_id - AND question_status = 1 + AND a.teacher_open_course_merge_resources_question_id = c.teacher_open_course_merge_resources_question_id + AND c.teacher_open_course_id = b.teacher_open_course_id + AND a.question_status = 1 + AND c.question_status = 1 @if(!isEmpty(teacherOpenCourseId)){ AND b.teacher_open_course_id = #teacherOpenCourseId# @} @if(!isEmpty(questionSettingId)){ AND b.teacher_open_course_id - @// 保证至少会返回一个值,默认返回-1 - = (select ifnull(max(teacher_open_course_id), '-1') from teacher_open_course_question_setting + in (select teacher_open_course_id from teacher_open_course_question_setting where 1 and teacher_open_course_question_setting_id = #questionSettingId# - and teacher_open_course_question_setting_status = 1 - limit 1) + and teacher_open_course_question_setting_status = 1 ) @} @// 如果都为空,则不返回数据,比较保守些 @if(isEmpty(questionSettingId) && isEmpty(teacherOpenCourseId)){ @@ -807,7 +809,6 @@ getRandomMergeResourcesQuestionListByChapterTestQuestion AND b.teacher_open_course_question_setting_type = 'CHAPTER_EXERCISE' ) t where 1=1 - and t.question_status = 1 @// 题目ID优先级高 @if(!isEmpty(resourcesQuestionIdPlural)) { and find_in_set(t.teacher_open_course_merge_resources_question_id, #resourcesQuestionIdPlural#)