From 53efb4a946628babca032acc20add23eb0bfa4cd Mon Sep 17 00:00:00 2001 From: Mlxa0324 Date: Mon, 21 Nov 2022 23:56:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=81=9A=E9=A2=98=E6=97=A5=E5=BF=97=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=AD=94=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/sql/mysql/tianze-pro-update.sql | 3 +- .../main/java/cn/jlw/util/CacheUserUtil.java | 25 ++++++++++- .../TeacherOpenCourseMergeCourseInfoTree.java | 7 +-- .../entity/TeacherOpenCourseQuestionLog.java | 6 ++- ...acherOpenCourseMergeCourseInfoService.java | 4 +- .../TeacherOpenCourseQuestionLogService.java | 43 +++++++++++-------- ...eacherOpenCourseQuestionLogController.java | 25 ++++++----- .../TeacherOpenCourseQuestionLogQuery.java | 5 +++ 8 files changed, 79 insertions(+), 39 deletions(-) diff --git a/doc/sql/mysql/tianze-pro-update.sql b/doc/sql/mysql/tianze-pro-update.sql index c04b6385..b2c42c30 100644 --- a/doc/sql/mysql/tianze-pro-update.sql +++ b/doc/sql/mysql/tianze-pro-update.sql @@ -361,4 +361,5 @@ ALTER TABLE teacher_open_course_merge_schedule_session ADD COLUMN teacher_open_c ALTER TABLE teacher_open_course_merge_schedule_session ADD COLUMN teacher_open_course_schedule_session_class_list varchar(4000) COMMENT '开课节次和班级的组合,JSON格式'; -- 回显用 -ALTER TABLE resources_question_snapshot ADD COLUMN teacher_open_course_merge_resources_question_id bigint COMMENT '开课题目ID'; \ No newline at end of file +ALTER TABLE resources_question_snapshot ADD COLUMN teacher_open_course_merge_resources_question_id bigint COMMENT '开课题目ID'; +ALTER TABLE teacher_open_course_question_log ADD COLUMN question_analysis varchar(1000) COMMENT '解析'; \ No newline at end of file diff --git a/web/src/main/java/cn/jlw/util/CacheUserUtil.java b/web/src/main/java/cn/jlw/util/CacheUserUtil.java index 393e3add..ba450ad8 100644 --- a/web/src/main/java/cn/jlw/util/CacheUserUtil.java +++ b/web/src/main/java/cn/jlw/util/CacheUserUtil.java @@ -4,9 +4,10 @@ import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.util.PlatformException; import com.ibeetl.jlw.entity.Student; +import com.ibeetl.jlw.entity.Teacher; +import com.ibeetl.jlw.entity.UniversitiesColleges; -import static com.ibeetl.admin.core.service.CorePlatformService.ACCESS_CURRENT_ORG; -import static com.ibeetl.admin.core.service.CorePlatformService.T_STUDENT; +import static com.ibeetl.admin.core.service.CorePlatformService.*; import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest; /** @@ -26,10 +27,30 @@ public final class CacheUserUtil { private CacheUserUtil() { } + /** + * 获取学生登陆信息 + * @return + */ public static Student getStudent() { checkSession(); return (Student)getRequest().getSession().getAttribute(T_STUDENT); } + /** + * 获取教师登陆信息 + * @return + */ + public static Teacher getTeacher() { + checkSession(); + return (Teacher)getRequest().getSession().getAttribute(T_TEACHER); + } + /** + * 获取院校管理员登陆信息 + * @return + */ + public static UniversitiesColleges getUniAdmin() { + checkSession(); + return (UniversitiesColleges)getRequest().getSession().getAttribute(T_COLLEGES_ADMIN); + } public static void checkSession() { CoreOrg org = (CoreOrg) getRequest().getSession().getAttribute(ACCESS_CURRENT_ORG); diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeCourseInfoTree.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeCourseInfoTree.java index 4ff1a7a9..eae9d412 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeCourseInfoTree.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeCourseInfoTree.java @@ -1,7 +1,8 @@ package com.ibeetl.jlw.entity; -import com.ibeetl.admin.core.annotation.Dict; +import com.ibeetl.admin.core.entity.BaseEntity; import lombok.Data; +import lombok.EqualsAndHashCode; import org.beetl.sql.annotation.entity.AutoID; import org.beetl.sql.annotation.entity.InsertIgnore; import org.beetl.sql.annotation.entity.Table; @@ -20,8 +21,9 @@ import java.util.List; @Data @Fetch(level = 5) @Table(name = "teacher_open_course_merge_course_info") +@EqualsAndHashCode(callSuper=false) @SuppressWarnings("ALL") -public class TeacherOpenCourseMergeCourseInfoTree { +public class TeacherOpenCourseMergeCourseInfoTree extends BaseEntity { //ID @AutoID @@ -46,7 +48,6 @@ public class TeacherOpenCourseMergeCourseInfoTree { private String courseInfoThumbnail ; //课程标签ID - @Dict private Long courseLabelId ; @UpdateIgnore diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java index 037aeb38..bc8f6a80 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java @@ -102,7 +102,11 @@ public class TeacherOpenCourseQuestionLog extends BaseEntity{ //答案(单选是一个 多选是多个 判断是对错) private String questionAnswer ; - + + //解析 + + private String questionAnalysis ; + //组织ID private Long orgId ; 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 b1465d11..ca00c427 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -864,7 +864,9 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService getValuesByQuery (TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery){ return teacherOpenCourseQuestionLogDao.getValuesByQuery(teacherOpenCourseQuestionLogQuery); } + public List getValuesByQueryNotWithPermission (TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery){ + return teacherOpenCourseQuestionLogDao.getValuesByQueryNotWithPermission(teacherOpenCourseQuestionLogQuery); + } public TeacherOpenCourseQuestionLog getInfo (Long teacherOpenCourseQuestionLogId){ TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery = new TeacherOpenCourseQuestionLogQuery(); @@ -390,11 +392,12 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService> questionAnalysis(@NotNull(message = "题目配置ID不能为空!") Long questionSettingId) { - ResourcesQuestionSnapshotQuery resourcesQuestionSnapshotQuery = new ResourcesQuestionSnapshotQuery(); - resourcesQuestionSnapshotQuery.setTeacherOpenCourseQuestionSettingId(questionSettingId); - resourcesQuestionSnapshotQuery.setQuestionStatus(1); - List valuesByQuery = resourcesQuestionSnapshotDao.getValuesByQuery(resourcesQuestionSnapshotQuery); + public Map> questionAnalysis(@NotNull(message = "题目配置ID不能为空!") Long questionSettingId, @NotNull(message = "学生ID不能为空!") Long studentId) { + TeacherOpenCourseQuestionLogQuery query = new TeacherOpenCourseQuestionLogQuery(); + query.setTeacherOpenCourseQuestionSettingId(questionSettingId); + query.setTeacherOpenCourseQuestionLogStatus(1); + query.setStudentId(studentId); + List valuesByQuery = getValuesByQueryNotWithPermission(query); return questionAnalysis(valuesByQuery); } @@ -404,20 +407,24 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService> questionAnalysis(@NotNull(message = "题目配置ID不能为空!") TreeSet questionSnapshotIds) { - List valuesByQuery = resourcesQuestionSnapshotDao.getByIds(join(questionSnapshotIds.toArray(), ",")); + public Map> questionAnalysis(@NotNull(message = "题目配置ID不能为空!") TreeSet questionSnapshotIds, @NotNull(message = "学生ID不能为空!") Long studentId) { + TeacherOpenCourseQuestionLogQuery query = new TeacherOpenCourseQuestionLogQuery(); + query.setResourcesQuestionSnapshotIdPlural(join(questionSnapshotIds.toArray(), ",")); + query.setTeacherOpenCourseQuestionLogStatus(1); + query.setStudentId(studentId); + List valuesByQuery = getValuesByQueryNotWithPermission(query); return questionAnalysis(valuesByQuery); } /** * 开课相关-考试或者作业,答题提交后,获取问题解析。根据配置获取 - * @param questionSnapshots + * @param questionLogList * @return */ - public Map> questionAnalysis(@NotEmpty(message = "未查询到题目列表!") final List questionSnapshots) { + public Map> questionAnalysis(@NotEmpty(message = "未查询到题目列表!") final List questionLogList) { TeacherOpenCourseQuestionSettingQuery settingQuery = new TeacherOpenCourseQuestionSettingQuery(); - settingQuery.setTeacherOpenCourseQuestionSettingId(questionSnapshots.get(0).getTeacherOpenCourseQuestionSettingId()); + settingQuery.setTeacherOpenCourseQuestionSettingId(questionLogList.get(0).getTeacherOpenCourseQuestionSettingId()); final TeacherOpenCourseQuestionSetting hwSetting = teacherOpenCourseQuestionSettingService.getInfo(settingQuery); // 答卷后显示答案解析 @@ -425,13 +432,13 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService { - ResourcesQuestionSnapshot resourcesQuestionSnapshot = new ResourcesQuestionSnapshot(); - resourcesQuestionSnapshot.setResourcesQuestionSnapshotId(item.getResourcesQuestionSnapshotId()); - resourcesQuestionSnapshot.setQuestionAnswer(isEndShowQa ? item.getQuestionAnswer() : ""); - resourcesQuestionSnapshot.setQuestionAnalysis(isEndShowTrueFalse ? item.getQuestionAnalysis(): ""); - return resourcesQuestionSnapshot; - }).collect(groupingBy(ResourcesQuestionSnapshot::getQuestionType)); + return questionLogList.stream().map(item -> { + TeacherOpenCourseQuestionLog questionLog = new TeacherOpenCourseQuestionLog(); + questionLog.setResourcesQuestionSnapshotId(item.getResourcesQuestionSnapshotId()); + questionLog.setQuestionAnswer(isEndShowQa ? item.getQuestionAnswer() : ""); + questionLog.setQuestionAnalysis(isEndShowTrueFalse ? item.getQuestionAnswer(): ""); + return questionLog; + }).collect(groupingBy(TeacherOpenCourseQuestionLog::getQuestionType)); } /** diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java index df1f3c3a..bd4244be 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java @@ -7,6 +7,7 @@ import com.ibeetl.admin.core.annotation.Function; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.file.FileService; import com.ibeetl.admin.core.web.JsonResult; +import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.entity.TeacherOpenCourseQuestionLog; import com.ibeetl.jlw.service.TeacherOpenCourseQuestionLogService; import com.ibeetl.jlw.web.query.TeacherOpenCourseQuestionLogQuery; @@ -26,6 +27,8 @@ import java.util.List; import java.util.Map; import java.util.TreeSet; +import static cn.jlw.util.CacheUserUtil.getStudent; + /** * 题目日志 我的课程-题库-做题日志 接口 * 切记不要对非线程安全的静态变量进行写操作 @@ -136,31 +139,27 @@ public class TeacherOpenCourseQuestionLogController { * 学生端-答题后显示答案、和分析 * * @param questionSnapshotIds [题目快照ID] - * @param coreUser 用来验证用户登录,为了解耦不会传递到Service层 * @return */ @PostMapping(API + "/questionAnalysisBySnapIds.do") @ResponseBody - public JsonResult questionAnalysis( - @RequestBody - TreeSet questionSnapshotIds, - @SCoreUser - CoreUser coreUser) { - Assert.isTrue(coreUser.isStudent(), "非学生身份,无法获取题目分析!"); - return JsonResult.success(teacherOpenCourseQuestionLogService.questionAnalysis(questionSnapshotIds)); + public JsonResult questionAnalysis(@RequestBody TreeSet questionSnapshotIds) { + Student student = getStudent(); + Assert.notNull(student, "非学生身份,无法获取题目分析!"); + return JsonResult.success(teacherOpenCourseQuestionLogService.questionAnalysis(questionSnapshotIds, student.getStudentId())); } /** - * 学生端-答题后显示答案、和分析 + * 学生端-答题后显示答案、和分析。 * * @param questionSettingId 题目配置ID - * @param coreUser 用来验证用户登录,为了解耦不会传递到Service层 * @return */ @PostMapping(API + "/questionAnalysisBySettingId.do") - public JsonResult questionAnalysisBySettingId(Long questionSettingId, @SCoreUser CoreUser coreUser) { - Assert.isTrue(coreUser.isStudent(), "非学生身份,无法获取题目分析!"); - return JsonResult.success(teacherOpenCourseQuestionLogService.questionAnalysis(questionSettingId)); + public JsonResult questionAnalysisBySettingId(Long questionSettingId) { + Student student = getStudent(); + Assert.notNull(student, "非学生身份,无法获取题目分析!"); + return JsonResult.success(teacherOpenCourseQuestionLogService.questionAnalysis(questionSettingId, student.getStudentId())); } /** diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionLogQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionLogQuery.java index 1a87a97d..ead5fa6e 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionLogQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionLogQuery.java @@ -84,6 +84,10 @@ public class TeacherOpenCourseQuestionLogQuery extends PageParam { private String questionAnswer ; + //解析 + + private String questionAnalysis ; + private String teacherOpenCourseQuestionLogIdPlural; private String teacherOpenCourseQuestionSettingIdPlural; private String resourcesQuestionSnapshotIdPlural; @@ -120,6 +124,7 @@ public class TeacherOpenCourseQuestionLogQuery extends PageParam { pojo.setQuestionOptionD(this.getQuestionOptionD()); pojo.setQuestionOptionE(this.getQuestionOptionE()); pojo.setQuestionAnswer(this.getQuestionAnswer()); + pojo.setQuestionAnalysis(this.getQuestionAnalysis()); return pojo; }