diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/util/user/CacheUserUtil.java b/admin-core/src/main/java/com/ibeetl/admin/core/util/user/CacheUserUtil.java index d179ed5d..a52455dd 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/util/user/CacheUserUtil.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/util/user/CacheUserUtil.java @@ -12,7 +12,9 @@ import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest; /** *

- * 当前登录用户的 + * 当前登录用户的信息 + * 另一个实现 {@link CorePlatformService } 太重了 + * *

* * @author mlx diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseQuestionLogDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseQuestionLogDao.java index 5ae7234e..363e9509 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseQuestionLogDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseQuestionLogDao.java @@ -25,5 +25,4 @@ public interface TeacherOpenCourseQuestionLogDao extends BaseMapper getByIds(String ids); List getValuesByQuery(TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery); - Integer doCount(TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery); } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java index 72b91e0f..f80015cd 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java @@ -107,67 +107,30 @@ public class TeacherOpenCourseQuestionSetting extends BaseEntity{ @FetchSql("select count(1) from resources_question_snapshot t " + "where t.question_status = 1 " + "and t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# ") - private int questionCount; // 平均答对数量 - @FetchSql("SELECT " + - " tz.sum_temp / IFNULL( tz.student_count, 1 ) " + - "FROM " + - " ( " + - " SELECT " + - " sum( CASE WHEN t.question_answer = CONCAT( ta.teacher_open_course_question_log_answer, ',' ) THEN 1 ELSE 0 END ) AS sum_temp, " + - " count( " + - " DISTINCT ( ta.student_id )) AS student_count " + - " FROM " + - " resources_question_snapshot t " + - " INNER JOIN teacher_open_course_question_log ta ON ta.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id " + - " AND ta.resources_question_snapshot_id = t.resources_question_snapshot_id " + - " WHERE " + - " t.question_status = 1 " + - " AND ta.teacher_open_course_question_log_status = 1 " + - " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId#) tz ") + @FetchSql("select sum(t.student_score > 0) / if(count(DISTINCT(t.student_id)) =0, 1, count(DISTINCT(t.student_id))) \n" + + "from teacher_open_course_question_log t \n" + + "where t.teacher_open_course_question_log_status = 1 " + + " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# ") private Integer avgSuccessCount; // 平均答错数量 - @FetchSql("SELECT " + - " tz.sum_temp / IFNULL( tz.student_count, 1 ) " + - "FROM " + - " ( " + - " SELECT " + - " sum( CASE WHEN t.question_answer <> CONCAT( ta.teacher_open_course_question_log_answer, ',' ) THEN 1 ELSE 0 END ) AS sum_temp, " + - " count( " + - " DISTINCT ( ta.student_id )) AS student_count " + - " FROM " + - " resources_question_snapshot t " + - " INNER JOIN teacher_open_course_question_log ta ON ta.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id " + - " AND ta.resources_question_snapshot_id = t.resources_question_snapshot_id " + - " WHERE " + - " t.question_status = 1 " + - " AND ta.teacher_open_course_question_log_status = 1 " + - " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId#) tz ") + @FetchSql("select sum(t.student_score = 0) / if(count(DISTINCT(t.student_id)) =0, 1, count(DISTINCT(t.student_id))) \n" + + "from teacher_open_course_question_log t \n" + + "where t.teacher_open_course_question_log_status = 1 " + + " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# ") private Integer avgErrorCount; // 平均正确率 100最大 private float avgSuccessRate; // 平均得分 - @FetchSql("SELECT " + - " tz.sum_temp / IFNULL( tz.student_count, 1 ) " + - "FROM " + - " ( " + - " SELECT " + - " sum( CASE WHEN t.question_answer <> CONCAT( ta.teacher_open_course_question_log_answer, ',' ) THEN t.question_score ELSE 0 END ) AS sum_temp, " + - " count( " + - " DISTINCT ( ta.student_id )) AS student_count " + - " FROM " + - " resources_question_snapshot t " + - " INNER JOIN teacher_open_course_question_log ta ON ta.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id " + - " AND ta.resources_question_snapshot_id = t.resources_question_snapshot_id " + - " WHERE " + - " t.question_status = 1 " + - " AND ta.teacher_open_course_question_log_status = 1 " + - " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId#) tz ") + @FetchSql("select sum(t.student_score) / if(count(DISTINCT(t.student_id)) =0, 1, count(DISTINCT(t.student_id))) \n" + + "from teacher_open_course_question_log t \n" + + "where t.teacher_open_course_question_log_status = 1 " + + " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# ") private float avgScore; // 关联的班级列表 diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java index ddc1292e..bb4569b6 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java @@ -1,8 +1,10 @@ package com.ibeetl.jlw.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.ReUtil; import cn.jlw.util.EnumUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; @@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.math.BigDecimal; @@ -220,6 +223,7 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService 例: {"10086": ["D", "A", "B", "A"]} * @param questionSettingId 题目配置ID @@ -233,12 +237,15 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService valuesByQuery = teacherOpenCourseQuestionLogDao.getValuesByQuery(teacherOpenCourseQuestionLogQuery); + + // 查询条件 + TeacherOpenCourseQuestionLogQuery questionLogQuery = TeacherOpenCourseQuestionLogQuery.builder() + .resourcesQuestionSnapshotIdPlural(questionSnapshotIds) + .teacherOpenCourseQuestionLogStatus(1) + .studentId(student.getStudentId()) + .teacherOpenCourseQuestionSettingId(questionSettingId) + .build(); + List valuesByQuery = teacherOpenCourseQuestionLogDao.getValuesByQuery(questionLogQuery); Assert.notEmpty(valuesByQuery, "未查询到题目!"); // 处理答案和分数 @@ -255,8 +262,10 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService 1, "作答次数设置有误,请联系管理员!"); // 数据库查询该学生已经做过的次数 - TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery = new TeacherOpenCourseQuestionLogQuery(); - teacherOpenCourseQuestionLogQuery.setStudentId(student.getStudentId()); - Integer doCount = teacherOpenCourseQuestionLogDao.doCount(teacherOpenCourseQuestionLogQuery); + TeacherOpenCourseQuestionLog teacherOpenCourseQuestionLog = new TeacherOpenCourseQuestionLog(); + teacherOpenCourseQuestionLog.setStudentId(student.getStudentId()); + long doCount = teacherOpenCourseQuestionLogDao.templateCount(teacherOpenCourseQuestionLog); // 断言判断最大作答次数 Assert.isTrue(doCount < teacherOpenCourseQuestionSettingSettingDoCount, "已超过最大作答次数!"); } @@ -325,22 +334,48 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService { shuffleOrderOptions(value, "questionAnswer","questionOption", true); - // 屏蔽答案 + }); + + // 做题日志关联学生, 初步提交日志信息,不包含学生提交的答案和得分情况 + preSubmitStudentQuestionLog(student.getStudentId(), teacherOpenCourseQuestionSettingId, resourcesQuestionSnapshots); + + // 屏蔽答案 + resourcesQuestionSnapshots.forEach(value -> { value.setQuestionAnswer(null); }); } - List logs = BeanUtil.copyToList(resourcesQuestionSnapshots, TeacherOpenCourseQuestionLog.class); + return resourcesQuestionSnapshots; + } + + /** + * 日志关联学生信息和配置ID信息 + * + * @param studentId + */ + public void preSubmitStudentQuestionLog(@NotBlank(message = "学生ID不能为空!") final Long studentId, + @NotBlank(message = "题目配置ID不能为空!") final Long teacherOpenCourseQuestionSettingId, + @NotEmpty(message = "题目快照列表不能为空!") List resourcesQuestionSnapshots) { + + if (CollectionUtil.isEmpty(resourcesQuestionSnapshots)) { + return; + } + // 断言 + Assert.notBlank(resourcesQuestionSnapshots.get(0).getQuestionAnswer(), "题目快照选项不能为空!"); + List teacherOpenCourseQuestionLogs = BeanUtil.copyToList(resourcesQuestionSnapshots, TeacherOpenCourseQuestionLog.class); // 设计个单表,后面进行修改操作 - logs.forEach(logPo -> { - logPo.setTeacherOpenCourseQuestionSettingId(teacherOpenCourseQuestionSettingId); - logPo.setTeacherOpenCourseQuestionLogStatus(1); - logPo.setStudentId(student.getStudentId()); - logPo.setTeacherOpenCourseQuestionLogAddTime(new Date()); + teacherOpenCourseQuestionLogs.forEach(questionLog -> { + // 题目的答案,如果最后一位是逗号,则删除掉 + String questionAnswer = ReUtil.replaceAll(questionLog.getQuestionAnswer(), "\\,$", ""); + questionLog.setTeacherOpenCourseQuestionSettingId(teacherOpenCourseQuestionSettingId); + questionLog.setTeacherOpenCourseQuestionLogStatus(1); + questionLog.setStudentId(studentId); + questionLog.setTeacherOpenCourseQuestionLogAddTime(new Date()); + questionLog.setQuestionAnswer(questionAnswer); }); - insertBatch(logs); - return resourcesQuestionSnapshots; + + insertBatch(teacherOpenCourseQuestionLogs); } /** 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 676f8b5b..a69b2682 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java @@ -194,6 +194,20 @@ public class TeacherOpenCourseQuestionLogController { return JsonResult.success(); } + /** + * 学生端-根绝题目配置信息,获取相关的题目 + * @param teacherOpenCourseQuestionSettingId 配置ID + * @param fromTypeEnum 来源类型 + * @return + */ + @PostMapping(MODEL + "/questionDetail.json") + @Function("teacherOpenCourseQuestionLog.query") + public JsonResult questionDetail(Long teacherOpenCourseQuestionSettingId, + ResourcesQuestionSnapshotFromTypeEnum fromTypeEnum, @SCoreUser CoreUser coreUser) { + Assert.isTrue(coreUser.isStudent(), "非学生身份,无法获取题目!"); + return JsonResult.success(teacherOpenCourseQuestionLogService.questionDetail(teacherOpenCourseQuestionSettingId, fromTypeEnum)); + } + /** * 学生端-和题目有关的做题提交方法 * 支持附件上传。不支持简答题上传, @@ -239,18 +253,4 @@ public class TeacherOpenCourseQuestionLogController { return JsonResult.success(teacherOpenCourseQuestionLogService.questionAnalysis(questionSnapshotIds)); } - /** - * 学生端-根绝题目配置信息,获取相关的题目 - * @param teacherOpenCourseQuestionSettingId 配置ID - * @param fromTypeEnum 来源类型 - * @return - */ - @PostMapping(MODEL + "/questionDetail.json") - @Function("teacherOpenCourseQuestionLog.query") - public JsonResult questionDetail(Long teacherOpenCourseQuestionSettingId, - ResourcesQuestionSnapshotFromTypeEnum fromTypeEnum, @SCoreUser CoreUser coreUser) { - Assert.isTrue(coreUser.isStudent(), "非学生身份,无法获取题目!"); - return JsonResult.success(teacherOpenCourseQuestionLogService.questionDetail(teacherOpenCourseQuestionSettingId, fromTypeEnum)); - } - } 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 0d8d700d..5552d4f9 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 @@ -4,7 +4,11 @@ import cn.jlw.validate.ValidateConfig; import com.ibeetl.admin.core.annotation.Query; import com.ibeetl.admin.core.web.query.PageParam; import com.ibeetl.jlw.entity.TeacherOpenCourseQuestionLog; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; import java.math.BigDecimal; @@ -14,6 +18,10 @@ import java.util.Date; *题目日志查询 */ @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) public class TeacherOpenCourseQuestionLogQuery extends PageParam { @NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class) @Query(name = "学生做题日志ID", display = false) diff --git a/web/src/test/java/base/BaseTest.java b/web/src/test/java/base/BaseTest.java index cda2e1e1..2f95a08d 100644 --- a/web/src/test/java/base/BaseTest.java +++ b/web/src/test/java/base/BaseTest.java @@ -55,7 +55,7 @@ public class BaseTest { * * @throws Exception */ - public void putStudentLoginInfoToEnv() throws Exception { + public String[] putStudentLoginInfoToEnv() throws Exception { // 随机取一个学生的登录信息 List studentList = studentDao.execute( "select org_id, user_id " + @@ -67,8 +67,13 @@ public class BaseTest { // 学生ID Student student = CollectionUtils.firstElement(studentList); // 换学生身份登录系统 - TestEnvUtil.setProperty("user.id", student.getUserId().toString()); - TestEnvUtil.setProperty("user.orgId", student.getOrgId().toString()); + String userId = student.getUserId().toString(); + String orgId = student.getOrgId().toString(); + + TestEnvUtil.setProperty("user.id", userId); + TestEnvUtil.setProperty("user.orgId", orgId); + + return new String[] { userId, orgId }; } public void putLoginInfoToEnv(final String userId, final String orgId) throws Exception { @@ -88,7 +93,7 @@ public class BaseTest { * * @throws Exception */ - public void putTeacherLoginInfoToEnv() throws Exception { + public String[] putTeacherLoginInfoToEnv() throws Exception { // 随机取一个学生的登录信息 List teacherList = teacherDao.execute( "select org_id, user_id " + @@ -100,9 +105,14 @@ public class BaseTest { Assert.assertTrue("教师表表为空,程序中断!", ObjectUtil.isNotEmpty(teacherList)); // 学生ID Teacher teacher = CollectionUtils.firstElement(teacherList); - // 换学生身份登录系统 - TestEnvUtil.setProperty("user.id", teacher.getUserId().toString()); - TestEnvUtil.setProperty("user.orgId", teacher.getOrgId().toString()); + // 换教师身份登录系统 + String userId = teacher.getUserId().toString(); + String orgId = teacher.getOrgId().toString(); + + TestEnvUtil.setProperty("user.id", userId); + TestEnvUtil.setProperty("user.orgId", orgId); + + return new String[] { userId, orgId }; } /** diff --git a/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogControllerTest.java b/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogControllerTest.java index 96d85f4b..1f11890f 100644 --- a/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogControllerTest.java +++ b/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogControllerTest.java @@ -9,6 +9,7 @@ import com.ibeetl.jlw.dao.StudentDao; import com.ibeetl.jlw.dao.TeacherOpenCourseQuestionSettingDao; import com.ibeetl.jlw.entity.ResourcesQuestionSnapshot; import com.ibeetl.jlw.entity.TeacherOpenCourseQuestionSetting; +import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import org.junit.Assert; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -22,9 +23,11 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; import static cn.hutool.json.JSONUtil.toJsonStr; +import static com.ibeetl.admin.test.util.test.RandomUtils.randomSet; import static java.util.stream.Collectors.toList; import static org.apache.commons.lang3.StringUtils.join; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.util.CollectionUtils.firstElement; class TeacherOpenCourseQuestionLogControllerTest extends BaseTest { @@ -38,6 +41,53 @@ class TeacherOpenCourseQuestionLogControllerTest extends BaseTest { @Resource TeacherOpenCourseQuestionSettingDao teacherOpenCourseQuestionSettingDao; + private static ResourcesQuestionSnapshotFromTypeEnum fromTypeEnum; + private static Long teacherOpenCourseQuestionSettingId; + + // [用户ID,组织ID] + private static String[] loginInfo; + + + @Test + @Order(1) + public void questionDetail() throws Exception { + + try { + // 获取一个状态正常的作业ID + TeacherOpenCourseQuestionSetting entity = new TeacherOpenCourseQuestionSetting(); + entity.setTeacherOpenCourseQuestionSettingStatus(1); + List homeworkList = teacherOpenCourseQuestionSettingDao.template(entity); + // 断言 + Assert.assertTrue(ObjectUtil.isNotEmpty(homeworkList)); + + // 开课作业ID + teacherOpenCourseQuestionSettingId = RandomUtil.randomEle(homeworkList).getTeacherOpenCourseQuestionSettingId(); + fromTypeEnum = firstElement(randomSet(ResourcesQuestionSnapshotFromTypeEnum.class)); + + // 随机取一个学生的登录信息 + loginInfo = putStudentLoginInfoToEnv(); + + //构造请求参数 + RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/questionDetail.json") + .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE) + .param("teacherOpenCourseQuestionSettingId", String.valueOf(teacherOpenCourseQuestionSettingId)) + .param("fromTypeEnum", fromTypeEnum.name()); + + //发送请求,验证返回结果 + String result = mvc.perform(rb) + .andExpect(status().isOk()) + .andExpect(MockMvcResultMatchers.jsonPath("$.code").value("0")) + .andReturn().getResponse().getContentAsString(); + + System.out.println(result); + }catch (Exception e) { + throw e; + }finally { + clearEnvLoginInfo(); + } + } + + /** * 和题目有关的做题提交方法 * @@ -45,6 +95,7 @@ class TeacherOpenCourseQuestionLogControllerTest extends BaseTest { * 参数: fromType 来源类型 */ @Test + @Order(2) void addQuestionLog() throws Exception { try { // 通过查询数据库来random实体类属性 @@ -54,9 +105,11 @@ class TeacherOpenCourseQuestionLogControllerTest extends BaseTest { " from resources_question_snapshot t\n" + " where t.question_status = 1\n" + "\tand teacher_open_course_question_setting_id = \n" + - "\t\t(select teacher_open_course_question_setting_id from resources_question_snapshot ORDER BY RAND() limit 1) \n" + + "\t\t(select teacher_open_course_question_setting_id from teacher_open_course_question_log ORDER BY RAND() limit 1) \n" + " order by RAND()"); + Assert.assertTrue("题目快照列表不能为空!", ObjectUtil.isNotEmpty(questionSnapshots)); + // 题目快照ID和答案 Map> answerRandomMap = new ConcurrentHashMap<>(); @@ -86,12 +139,12 @@ class TeacherOpenCourseQuestionLogControllerTest extends BaseTest { }); // 随机取一个学生的登录信息 - putStudentLoginInfoToEnv(); + putLoginInfoToEnv(loginInfo[0], loginInfo[1]); //构造请求参数 RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/addQuestionLog.json") .contentType(MediaType.APPLICATION_JSON_VALUE) - .param("questionSettingId", questionSnapshots.get(0).getTeacherOpenCourseQuestionSettingId().toString()) + .param("questionSettingId", teacherOpenCourseQuestionSettingId.toString()) .content(toJsonStr(answerRandomMap)); //发送请求,验证返回结果 String result = mvc.perform(rb) @@ -108,69 +161,44 @@ class TeacherOpenCourseQuestionLogControllerTest extends BaseTest { } } - @Test - @Order(2) - public void questionDetail() throws Exception { - - // 获取一个状态正常的作业ID - TeacherOpenCourseQuestionSetting entity = new TeacherOpenCourseQuestionSetting(); - entity.setTeacherOpenCourseQuestionSettingStatus(1); - List homeworkList = teacherOpenCourseQuestionSettingDao.template(entity); - // 断言 - Assert.assertTrue(ObjectUtil.isNotEmpty(homeworkList)); - - // 开课作业ID - Long teacherOpenCourseQuestionSettingId = RandomUtil.randomEle(homeworkList).getTeacherOpenCourseQuestionSettingId(); - - //构造请求参数 - RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/questionDetail.json") - .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE) - .param("resourcesQuestionSnapshotFromId", String.valueOf(teacherOpenCourseQuestionSettingId)); - - //发送请求,验证返回结果 - String result = mvc.perform(rb) - .andExpect(status().isOk()) - .andExpect(MockMvcResultMatchers.jsonPath("$.code").value("0")) - .andReturn().getResponse().getContentAsString(); - - System.out.println(result); - } - - @Test @Order(3) public void questionAnalysis() throws Exception { - - // 随机取一个学生的登录信息 - List questionSnapshots = resourcesQuestionSnapshotDao.execute( - "select t.*\n" + - " from resources_question_snapshot t\n" + - " where t.question_status = 1\n" + - "\tand teacher_open_course_question_setting_id = \n" + + try { + // 随机取一个学生的登录信息 + List questionSnapshots = resourcesQuestionSnapshotDao.execute( + "select t.*\n" + + " from resources_question_snapshot t\n" + + " where t.question_status = 1\n" + + "\tand teacher_open_course_question_setting_id = \n" + "\t\t(select teacher_open_course_question_setting_id from resources_question_snapshot ORDER BY RAND() limit 1) \n" + - " order by RAND()"); - // 断言 - Assert.assertTrue(ObjectUtil.isNotEmpty(questionSnapshots)); - - // 开课作业ID - List questionSnapshotIds = RandomUtil.randomEleList(questionSnapshots, 10) - .stream().map(ResourcesQuestionSnapshot::getResourcesQuestionSnapshotId).collect(toList()); + " order by RAND()"); + // 断言 + Assert.assertTrue(ObjectUtil.isNotEmpty(questionSnapshots)); - putStudentLoginInfoToEnv(); + // 开课作业ID + List questionSnapshotIds = RandomUtil.randomEleList(questionSnapshots, 10) + .stream().map(ResourcesQuestionSnapshot::getResourcesQuestionSnapshotId).collect(toList()); - //构造请求参数 - RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/questionAnalysis.json") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(JSONUtil.toJsonStr(questionSnapshotIds)); + putLoginInfoToEnv(loginInfo[0], loginInfo[1]); - //发送请求,验证返回结果 - String result = mvc.perform(rb) - .andExpect(status().isOk()) - .andExpect(MockMvcResultMatchers.jsonPath("$.code").value("0")) - .andReturn().getResponse().getContentAsString(); + //构造请求参数 + RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/questionAnalysis.json") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(JSONUtil.toJsonStr(questionSnapshotIds)); - System.out.println(result); + //发送请求,验证返回结果 + String result = mvc.perform(rb) + .andExpect(status().isOk()) + .andExpect(MockMvcResultMatchers.jsonPath("$.code").value("0")) + .andReturn().getResponse().getContentAsString(); - clearEnvLoginInfo(); + System.out.println(result); + }catch (Exception e) { + throw e; + }finally { + // 清除登录信息 + clearEnvLoginInfo(); + } } } \ No newline at end of file diff --git a/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingControllerTest.java b/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingControllerTest.java index db2bb843..82114f0c 100644 --- a/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingControllerTest.java +++ b/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingControllerTest.java @@ -161,6 +161,7 @@ class TeacherOpenCourseQuestionSettingControllerTest extends BaseTest { TeacherOpenCourseQuestionSettingQuery teacherOpenCourseQuestionSettingQuery = randomPojo(TeacherOpenCourseQuestionSettingQuery.class // 处理plural 结尾的属性 , BeanUtil::ignoreFieldsHandler, (e) -> { + e.setDefault(); // 随机取一个开课ID e.setTeacherOpenCourseId(RandomUtil.randomEle(openCourseList).getTeacherOpenCourseId()); e.setTeacherOpenCourseQuestionSettingType(typeEnum); @@ -173,11 +174,6 @@ class TeacherOpenCourseQuestionSettingControllerTest extends BaseTest { e.setResourcesQuestionIdPlural(resourcesQuestionIds); // 设置关联ID e.setTeacherOpenCourseQuestionSettingId(e.getTeacherOpenCourseQuestionSettingId()); - e.setTeacherOpenCourseQuestionSettingDoCount(1); - e.setTeacherOpenCourseQuestionSettingEndShowQa(1); - e.setTeacherOpenCourseQuestionSettingEndShowTrueFalse(1); - e.setTeacherOpenCourseQuestionSettingOptionNoOrder(1); - e.setTeacherOpenCourseQuestionSettingQuestionNoOrder(1); e.setTeacherOpenCourseQuestionSettingSchoolClassIds(schoolClassIds); });