From 87c1bdac0c88d208cd2786913742d818e4d2debb Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 14 五月 2024 16:52:35 +0800
Subject: [PATCH] 在线练习多选题处理
---
src/main/java/com/mindskip/xzs/repository/QuestionMapper.java | 2
src/main/resources/mapper/QuestionMapper.xml | 8 ++-
src/main/java/com/mindskip/xzs/controller/student/QuestionController.java | 14 ++++++
src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java | 11 +++++
src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java | 23 ++++++++---
src/main/java/com/mindskip/xzs/domain/enums/QuestionTypeEnum.java | 2
src/main/java/com/mindskip/xzs/domain/vo/QuestionContentVO.java | 2 +
src/main/java/com/mindskip/xzs/domain/vo/QuestionVO.java | 3 +
src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java | 39 +++++++++++++++----
src/main/resources/mapper/QuestionSubjectMapper.xml | 3 +
src/main/java/com/mindskip/xzs/service/SelfPracticeService.java | 8 ++++
11 files changed, 94 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/controller/student/QuestionController.java b/src/main/java/com/mindskip/xzs/controller/student/QuestionController.java
index 97171b3..b6d6095 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/QuestionController.java
@@ -38,11 +38,23 @@
return RestResponse.ok(vm);
}
+ /**
+ * 鏌ヨ棰樼洰鍐呭
+ *
+ * @param id
+ * @return
+ */
@GetMapping("/{id}")
- public RestResponse getById(@PathVariable("id") Integer id) {
+ public RestResponse getContentById(@PathVariable("id") Integer id) {
return questionService.selectContentById(id);
}
+ /**
+ * 鑾峰彇棰樼洰绛旀
+ *
+ * @param id
+ * @return
+ */
@GetMapping("/answer/{id}")
public RestResponse getAnswer(@PathVariable("id") Integer id) {
return questionService.getAnswer(id);
diff --git a/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java b/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java
index 7e6391d..3116847 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/SelfPracticeController.java
@@ -58,4 +58,15 @@
return selfPracticeService.startPractice(id);
}
+ /**
+ * 闅忔満涓�閬撻
+ *
+ * @param id
+ * @return
+ */
+ @GetMapping("/random/{id}")
+ public RestResponse randomOneQuestion(@PathVariable("id") Integer id) {
+ return selfPracticeService.randomOneQuestion(id);
+ }
+
}
diff --git a/src/main/java/com/mindskip/xzs/domain/enums/QuestionTypeEnum.java b/src/main/java/com/mindskip/xzs/domain/enums/QuestionTypeEnum.java
index 2b21e84..8b166c1 100644
--- a/src/main/java/com/mindskip/xzs/domain/enums/QuestionTypeEnum.java
+++ b/src/main/java/com/mindskip/xzs/domain/enums/QuestionTypeEnum.java
@@ -57,7 +57,7 @@
}
}
- public int getCode() {
+ public Integer getCode() {
return code;
}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/QuestionContentVO.java b/src/main/java/com/mindskip/xzs/domain/vo/QuestionContentVO.java
index 8628093..1fcf571 100644
--- a/src/main/java/com/mindskip/xzs/domain/vo/QuestionContentVO.java
+++ b/src/main/java/com/mindskip/xzs/domain/vo/QuestionContentVO.java
@@ -40,4 +40,6 @@
}
+
+
}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/QuestionVO.java b/src/main/java/com/mindskip/xzs/domain/vo/QuestionVO.java
index da60a68..947cddd 100644
--- a/src/main/java/com/mindskip/xzs/domain/vo/QuestionVO.java
+++ b/src/main/java/com/mindskip/xzs/domain/vo/QuestionVO.java
@@ -31,4 +31,7 @@
/** 澶氶�夐绛旀 */
private List<String> correctList;
+ /** 澶氶�夐绛旀鏁� */
+ private Integer answerNum = 0;
+
}
diff --git a/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java b/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java
index bd70910..e8a2a9c 100644
--- a/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java
@@ -34,5 +34,5 @@
QuestionVO selectContentById(Integer id);
- String getAnswer(Integer id);
+ QuestionVO getAnswer(Integer id);
}
diff --git a/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java b/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java
index fea3b33..37a8746 100644
--- a/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java
+++ b/src/main/java/com/mindskip/xzs/service/SelfPracticeService.java
@@ -53,4 +53,12 @@
* @return
*/
RestResponse subjectQuestionNum(List<Integer> subjectIds);
+
+ /**
+ * 闅忔満涓�閬撻
+ *
+ * @param id
+ * @return
+ */
+ RestResponse randomOneQuestion(Integer id);
}
diff --git a/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
index 8ff5b7e..b3bee77 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
@@ -274,18 +274,29 @@
@Override
public RestResponse selectContentById(Integer id) {
- QuestionVO vo = questionMapper.selectContentById(id);
- jsonQuestion(vo);
- return RestResponse.ok(vo);
+ QuestionVO questionVO = questionMapper.selectContentById(id);
+ jsonQuestion(questionVO);
+ if (QuestionTypeEnum.MultipleChoice.getCode().equals(questionVO.getQuestionType())) {
+ // 澶氶�夐闇�瑕佽繑鍥炵瓟妗堟暟閲忥紝瀛﹀憳閫変腑瀵瑰簲鏁伴噺鎵嶆煡璇㈢瓟妗�
+ if (StringUtils.hasText(questionVO.getCorrect())) {
+ questionVO.setAnswerNum(questionVO.getCorrect().split(",").length);
+ }
+ }
+ questionVO.setContentJson("");
+ questionVO.setCorrect("");
+ questionVO.getContent().setCorrect("");
+ questionVO.getContent().setAnalyze("");
+ return RestResponse.ok(questionVO);
}
@Override
public RestResponse getAnswer(Integer id) {
- String content = questionMapper.getAnswer(id);
- if (StringUtils.hasText(content)) {
- QuestionContentVO vo = JSON.parseObject(content, QuestionContentVO.class);
+ QuestionVO questionVO = questionMapper.getAnswer(id);
+ if (Objects.nonNull(questionVO) && StringUtils.hasText(questionVO.getCorrect())) {
+ QuestionContentVO vo = JSON.parseObject(questionVO.getContentJson(), QuestionContentVO.class);
vo.setQuestionItemObjects(null);
vo.setTitleContent(null);
+ vo.setCorrect(questionVO.getCorrect());
return RestResponse.ok(vo);
}
return RestResponse.ok(null);
diff --git a/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java
index 09cac23..68ad3dd 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java
@@ -129,18 +129,41 @@
return RestResponse.ok(num);
}
+ @Override
+ public RestResponse randomOneQuestion(Integer id) {
+ SelfPractice en = selfPracticeMapper.selectById(id);
+ if (Objects.isNull(en)) {
+ throw new RuntimeException("缁冧範涓嶅瓨鍦�");
+ }
+ List<Integer> subjectIds = JSON.parseArray(en.getSubjects(), Integer.class);
+ List<QuestionVO> one = questionSubjectMapper.getRandomQuestionId(subjectIds, 1);
+ if (one.size() < 1) {
+ throw new RuntimeException("娌℃湁鎵惧埌棰樼洰锛屽彲鑳芥墍閫夎鐩寘鍚鐩笉瓒�");
+ }
+ QuestionVO questionVO = one.get(0);
+ jsonQuestion(questionVO);
+ if (QuestionTypeEnum.MultipleChoice.getCode().equals(questionVO.getQuestionType())) {
+ // 澶氶�夐闇�瑕佽繑鍥炵瓟妗堟暟閲忥紝瀛﹀憳閫変腑瀵瑰簲鏁伴噺鎵嶆煡璇㈢瓟妗�
+ if (StringUtils.hasText(questionVO.getCorrect())) {
+ questionVO.setAnswerNum(questionVO.getCorrect().split(",").length);
+ }
+ }
+ questionVO.setContentJson("");
+ questionVO.setCorrect("");
+ questionVO.getContent().setCorrect("");
+ questionVO.getContent().setAnalyze("");
+ return RestResponse.ok(questionVO);
+ }
/**
* 澶勭悊棰樼洰鍐呭JSON
*
- * @param vos
+ * @param vo
*/
- public void jsonQuestion(List<QuestionVO> vos) {
- vos.stream().forEach(vo -> {
- if (StringUtils.hasText(vo.getContentJson())) {
- QuestionContentVO questionContent = JSON.parseObject(vo.getContentJson(), QuestionContentVO.class);
- vo.setContent(questionContent);
- }
- });
+ public void jsonQuestion(QuestionVO vo) {
+ if (StringUtils.hasText(vo.getContentJson())) {
+ QuestionContentVO questionContent = JSON.parseObject(vo.getContentJson(), QuestionContentVO.class);
+ vo.setContent(questionContent);
+ }
}
}
diff --git a/src/main/resources/mapper/QuestionMapper.xml b/src/main/resources/mapper/QuestionMapper.xml
index 7cdd3b5..7acf77b 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -317,15 +317,17 @@
tq.id,
tq.question_type as questionType,
tq.difficult,
- ttc.content as contentJson
+ ttc.content as contentJson,
+ tq.correct
FROM
t_question tq
INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.id = #{id}
</select>
- <select id="getAnswer" resultType="string">
+ <select id="getAnswer" resultType="com.mindskip.xzs.domain.vo.QuestionVO">
SELECT
- ttc.content
+ tq.correct,
+ ttc.content as contentJson
FROM
t_question tq
INNER JOIN t_text_content ttc ON tq.info_text_content_id = ttc.id AND tq.id = #{id} AND tq.deleted = 0
diff --git a/src/main/resources/mapper/QuestionSubjectMapper.xml b/src/main/resources/mapper/QuestionSubjectMapper.xml
index 1b05d52..7f134aa 100644
--- a/src/main/resources/mapper/QuestionSubjectMapper.xml
+++ b/src/main/resources/mapper/QuestionSubjectMapper.xml
@@ -70,7 +70,8 @@
tq.id,
tq.question_type as questionType,
tq.difficult,
- ttc.content as contentJson
+ ttc.content as contentJson,
+ tq.correct
FROM
t_question_subject tqs
INNER JOIN t_question tq ON tqs.question_id = tq.id AND tq.deleted = 0 AND tqs.subject_id IN <foreach collection="subjectIds" open="(" separator="," close=")" item="subjectId">#{subjectId}</foreach>
--
Gitblit v1.8.0