package com.mindskip.xzs.controller.wechat.student; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.controller.wechat.BaseWechatApiController; import com.mindskip.xzs.domain.ExamPaper; import com.mindskip.xzs.domain.Subject; import com.mindskip.xzs.domain.enums.ExamPaperTypeEnum; import com.mindskip.xzs.service.ClassesService; import com.mindskip.xzs.service.ExamPaperService; import com.mindskip.xzs.service.SubjectService; import com.mindskip.xzs.utility.DateTimeUtil; import com.mindskip.xzs.utility.PageInfoHelper; import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM; import com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageResponseVM; import com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageVM; import com.github.pagehelper.PageInfo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @version 2.2.0 * @description: 试卷 * Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司 * @date 2021 /9/7 9:45 */ @Controller("WechatStudentExamController") @RequestMapping(value = "/api/wx/student/exampaper") @AllArgsConstructor @ResponseBody public class ExamPaperController extends BaseWechatApiController { private final ExamPaperService examPaperService; private final SubjectService subjectService; private final ClassesService classesService; /** * 试卷查看 * * @param id the id * @return the rest response */ @RequestMapping(value = "/select/{id}", method = RequestMethod.POST) public RestResponse select(@PathVariable Integer id) { ExamPaperEditRequestVM vm = examPaperService.examPaperToVM(id); return RestResponse.ok(vm); } /** * 试卷分页 * * @param model the model * @return the rest response */ @RequestMapping(value = "/pageList", method = RequestMethod.POST) public RestResponse> pageList(@Valid ExamPaperPageVM model) { ExamPaperTypeEnum examPaperTypeEnum = ExamPaperTypeEnum.fromCode(model.getPaperType()); model.setLevelId(getCurrentUser().getUserLevel()); model.setDateTime(new Date()); PageInfo pageInfo = null; if (examPaperTypeEnum == ExamPaperTypeEnum.Classes) { List cIds = classesService.getJoinClasses(getCurrentUser().getId()).stream() .map(d -> d.getClassesId()).collect(Collectors.toList()); model.setCIds(cIds); pageInfo = examPaperService.studentClassesPage(model); } else { pageInfo = examPaperService.studentPage(model); } PageInfo page = PageInfoHelper.copyMap(pageInfo, e -> { ExamPaperPageResponseVM vm = modelMapper.map(e, ExamPaperPageResponseVM.class); Subject subject = subjectService.selectById(vm.getSubjectId()); vm.setSubjectName(subject.getName()); vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime())); return vm; }); return RestResponse.ok(page); } }