From 489eebe584a8d991f844ff4c703779c7b5d0af5e Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期一, 13 五月 2024 13:58:06 +0800
Subject: [PATCH] feat:在线看题

---
 src/main/java/com/mindskip/xzs/service/QuestionService.java                                        |    6 ++
 src/main/java/com/mindskip/xzs/repository/QuestionMapper.java                                      |    6 ++
 src/main/resources/mapper/QuestionMapper.xml                                                       |   15 +++++++
 src/main/java/com/mindskip/xzs/controller/student/QuestionController.java                          |   25 ++++++++++++
 src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java                               |   16 ++++++--
 src/main/java/com/mindskip/xzs/viewmodel/student/question/answer/QuestionPageStudentRequestVM.java |   10 +++++
 6 files changed, 71 insertions(+), 7 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 a597bd6..250c05a 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/QuestionController.java
@@ -1,7 +1,14 @@
 package com.mindskip.xzs.controller.student;
 
+import com.github.pagehelper.PageInfo;
 import com.mindskip.xzs.base.BaseApiController;
+import com.mindskip.xzs.base.RestResponse;
 import com.mindskip.xzs.service.QuestionService;
+import com.mindskip.xzs.service.SubjectService;
+import com.mindskip.xzs.viewmodel.admin.question.ExamQuestionVO;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionAnswerVO;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentRequestVM;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -10,9 +17,25 @@
 public class QuestionController extends BaseApiController {
 
     private final QuestionService questionService;
+    private final SubjectService subjectService;
 
     @Autowired
-    public QuestionController(QuestionService questionService) {
+    public QuestionController(QuestionService questionService, SubjectService subjectService) {
         this.questionService = questionService;
+        this.subjectService = subjectService;
     }
+
+    @RequestMapping(value = "/select/question", method = RequestMethod.POST)
+    public RestResponse<PageInfo<QuestionPageStudentResponseVM>> selectQuestion(@RequestBody QuestionPageStudentRequestVM model) {
+        return RestResponse.ok(questionService.selectQuestion(model));
+    }
+
+    @RequestMapping(value = "/select/question/{id}", method = RequestMethod.GET)
+    public RestResponse<QuestionAnswerVO> selectQuestionById(@PathVariable Integer id) {
+        QuestionAnswerVO vm = new QuestionAnswerVO();
+        ExamQuestionVO question = questionService.getQuestionEditRequestVM(id);
+        vm.setQuestionVM(question);
+        return RestResponse.ok(vm);
+    }
+
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java b/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java
index a9aeb95..ff26145 100644
--- a/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/QuestionMapper.java
@@ -1,9 +1,11 @@
 package com.mindskip.xzs.repository;
 
-import com.mindskip.xzs.domain.other.KeyValue;
 import com.mindskip.xzs.domain.Question;
+import com.mindskip.xzs.domain.other.KeyValue;
 import com.mindskip.xzs.domain.vo.QuestionVO;
 import com.mindskip.xzs.viewmodel.admin.question.QuestionPageRequestVM;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentRequestVM;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM;
 import com.mindskip.xzs.vo.QuestionExportVO;
 import com.mindskip.xzs.vo.QuestionImportVO;
 import org.apache.ibatis.annotations.Mapper;
@@ -27,4 +29,6 @@
     List<Question> getAll();
 
     List<QuestionImportVO> export(@Param("query") QuestionExportVO query);
+
+    List<QuestionPageStudentResponseVM> selectQuestion(QuestionPageStudentRequestVM model);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/QuestionService.java b/src/main/java/com/mindskip/xzs/service/QuestionService.java
index a098ffc..63465ca 100644
--- a/src/main/java/com/mindskip/xzs/service/QuestionService.java
+++ b/src/main/java/com/mindskip/xzs/service/QuestionService.java
@@ -1,10 +1,12 @@
 package com.mindskip.xzs.service;
 
+import com.github.pagehelper.PageInfo;
 import com.mindskip.xzs.domain.Question;
 import com.mindskip.xzs.viewmodel.admin.question.ExamQuestionVO;
 import com.mindskip.xzs.viewmodel.admin.question.QuestionEditRequestVM;
 import com.mindskip.xzs.viewmodel.admin.question.QuestionPageRequestVM;
-import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentRequestVM;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM;
 import com.mindskip.xzs.vo.QuestionExportVO;
 import com.mindskip.xzs.vo.QuestionImportVO;
 import org.apache.ibatis.annotations.Param;
@@ -39,4 +41,6 @@
      * @return
      */
     List<QuestionImportVO> export(QuestionExportVO query);
+
+    PageInfo<QuestionPageStudentResponseVM> selectQuestion(QuestionPageStudentRequestVM model);
 }
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 7e8b0cc..ff336aa 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
@@ -14,10 +14,7 @@
 import com.mindskip.xzs.service.QuestionSubjectService;
 import com.mindskip.xzs.service.SubjectService;
 import com.mindskip.xzs.service.TextContentService;
-import com.mindskip.xzs.utility.DateTimeUtil;
-import com.mindskip.xzs.utility.JsonUtil;
-import com.mindskip.xzs.utility.ModelMapperSingle;
-import com.mindskip.xzs.utility.ExamUtil;
+import com.mindskip.xzs.utility.*;
 import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
 import com.mindskip.xzs.viewmodel.admin.question.ExamQuestionVO;
 import com.mindskip.xzs.viewmodel.admin.question.QuestionEditItemVM;
@@ -25,6 +22,8 @@
 import com.mindskip.xzs.viewmodel.admin.question.QuestionPageRequestVM;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentRequestVM;
+import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM;
 import com.mindskip.xzs.vo.QuestionExportVO;
 import com.mindskip.xzs.vo.QuestionImportVO;
 import org.modelmapper.ModelMapper;
@@ -257,4 +256,13 @@
     public List<QuestionImportVO> export(QuestionExportVO query) {
         return questionMapper.export(query);
     }
+
+    @Override
+    public PageInfo<QuestionPageStudentResponseVM> selectQuestion(QuestionPageStudentRequestVM model) {
+        return PageHelper.startPage(model.getPageIndex(), model.getPageSize(), "id desc").doSelectPageInfo(() ->
+                questionMapper.selectQuestion(model).stream().peek(
+                        q -> q.setShortTitle(HtmlUtil.clear(q.getShortTitle()))
+                ).collect(Collectors.toList())
+        );
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/student/question/answer/QuestionPageStudentRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/student/question/answer/QuestionPageStudentRequestVM.java
index 426bfc9..174b9bd 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/student/question/answer/QuestionPageStudentRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/student/question/answer/QuestionPageStudentRequestVM.java
@@ -5,6 +5,16 @@
 public class QuestionPageStudentRequestVM extends BasePage {
     private Integer createUser;
 
+    private String subjectName;
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
     public Integer getCreateUser() {
         return createUser;
     }
diff --git a/src/main/resources/mapper/QuestionMapper.xml b/src/main/resources/mapper/QuestionMapper.xml
index 0764bb9..b5d066c 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -297,4 +297,19 @@
         </foreach>
     </select>
 
+    <select id="selectQuestion" resultType="com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM">
+        select a.id,
+               a.question_type,
+               JSON_VALUE(d.content, '$.titleContent') as shortTitle,
+               GROUP_CONCAT(c.name)                    as subjectName
+        from t_question a
+                 inner join t_question_subject b on a.id = b.question_id and b.deleted = 0
+                 inner join t_subject c on b.subject_id = c.id and c.deleted = 0
+                 inner join t_text_content d on a.info_text_content_id = d.id
+        where a.deleted = 0
+        group by a.id, question_type, a.create_time
+        HAVING GROUP_CONCAT(c.name) like concat('%', #{subjectName}, '%')
+        order by a.create_time
+    </select>
+
 </mapper>

--
Gitblit v1.8.0