package com.mindskip.xzs.controller.student;
|
|
import com.mindskip.xzs.base.BaseApiController;
|
import com.mindskip.xzs.base.RestResponse;
|
import com.mindskip.xzs.domain.*;
|
import com.mindskip.xzs.domain.question.QuestionObject;
|
import com.mindskip.xzs.service.*;
|
import com.mindskip.xzs.utility.DateTimeUtil;
|
import com.mindskip.xzs.utility.HtmlUtil;
|
import com.mindskip.xzs.utility.JsonUtil;
|
import com.mindskip.xzs.utility.PageInfoHelper;
|
import com.mindskip.xzs.viewmodel.admin.question.QuestionEditRequestVM;
|
import com.mindskip.xzs.viewmodel.student.exam.ExamPaperSubmitItemVM;
|
import com.mindskip.xzs.viewmodel.student.question.answer.QuestionAnswerVM;
|
import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentRequestVM;
|
import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM;
|
import com.github.pagehelper.PageInfo;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@RestController("StudentQuestionAnswerController")
|
@RequestMapping(value = "/api/student/question/answer")
|
public class QuestionAnswerController extends BaseApiController {
|
|
private final ExamPaperQuestionCustomerAnswerService examPaperQuestionCustomerAnswerService;
|
private final QuestionService questionService;
|
private final TextContentService textContentService;
|
private final SubjectService subjectService;
|
private final QuestionSubjectService questionSubjectService;
|
|
@Autowired
|
public QuestionAnswerController(ExamPaperQuestionCustomerAnswerService examPaperQuestionCustomerAnswerService, QuestionService questionService, TextContentService textContentService, SubjectService subjectService, QuestionSubjectService questionSubjectService) {
|
this.examPaperQuestionCustomerAnswerService = examPaperQuestionCustomerAnswerService;
|
this.questionService = questionService;
|
this.textContentService = textContentService;
|
this.subjectService = subjectService;
|
this.questionSubjectService = questionSubjectService;
|
}
|
|
@RequestMapping(value = "/page", method = RequestMethod.POST)
|
public RestResponse<PageInfo<QuestionPageStudentResponseVM>> pageList(@RequestBody QuestionPageStudentRequestVM model) {
|
model.setCreateUser(getCurrentUser().getId());
|
PageInfo<ExamPaperQuestionCustomerAnswer> pageInfo = examPaperQuestionCustomerAnswerService.studentPage(model);
|
PageInfo<QuestionPageStudentResponseVM> page = PageInfoHelper.copyMap(pageInfo, q -> {
|
// Subject subject = subjectService.selectById(q.getSubjectId());
|
Integer[] ids = questionSubjectService.getQuestion(q.getQuestionId())
|
.stream().map(QuestionSubject::getSubjectId).toArray(Integer[]::new);
|
String name = "";
|
if (ids.length > 0) {
|
name = subjectService.selectByIds(ids)
|
.stream().map(Subject::getName).collect(Collectors.joining(","));
|
}
|
QuestionPageStudentResponseVM vm = modelMapper.map(q, QuestionPageStudentResponseVM.class);
|
vm.setCreateTime(DateTimeUtil.dateFormat(q.getCreateTime()));
|
TextContent textContent = textContentService.selectById(q.getQuestionTextContentId());
|
QuestionObject questionObject = JsonUtil.toJsonObject(textContent.getContent(), QuestionObject.class);
|
String clearHtml = HtmlUtil.clear(questionObject.getTitleContent());
|
vm.setShortTitle(clearHtml);
|
vm.setSubjectName(name);
|
return vm;
|
});
|
return RestResponse.ok(page);
|
}
|
|
|
@RequestMapping(value = "/select/{id}", method = RequestMethod.POST)
|
public RestResponse<QuestionAnswerVM> select(@PathVariable Integer id) {
|
QuestionAnswerVM vm = new QuestionAnswerVM();
|
ExamPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer = examPaperQuestionCustomerAnswerService.selectById(id);
|
ExamPaperSubmitItemVM questionAnswerVM = examPaperQuestionCustomerAnswerService.examPaperQuestionCustomerAnswerToVM(examPaperQuestionCustomerAnswer);
|
QuestionEditRequestVM questionVM = questionService.getQuestionEditRequestVM(examPaperQuestionCustomerAnswer.getQuestionId());
|
vm.setQuestionVM(questionVM);
|
vm.setQuestionAnswerVM(questionAnswerVM);
|
return RestResponse.ok(vm);
|
}
|
|
}
|