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); } } 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); } 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); } 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()) ); } } 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; } 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>