package com.mindskip.xzs.controller.admin; import com.github.pagehelper.PageInfo; import com.mindskip.xzs.base.BaseApiController; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.context.WebContext; import com.mindskip.xzs.domain.ExamTemplates; import com.mindskip.xzs.domain.ExamTemplatesConfig; import com.mindskip.xzs.domain.ExamTemplatesSubject; import com.mindskip.xzs.domain.vo.ExamTemplatesVO; import com.mindskip.xzs.repository.ExamTemplatesSubjectMapper; import com.mindskip.xzs.service.ExamPaperDepartmentService; import com.mindskip.xzs.service.ExamTemplatesConfigService; import com.mindskip.xzs.service.ExamTemplatesService; import com.mindskip.xzs.utility.PageInfoHelper; import com.mindskip.xzs.utility.minio.DateUtils; import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @RestController("AdminExamTemplatesController") @RequestMapping(value = "/api/admin/exam/templates") @RequiredArgsConstructor public class ExamTemplatesController extends BaseApiController { private final ExamTemplatesService examTemplatesService; private final ExamTemplatesConfigService examTemplatesConfigService; private final ExamTemplatesSubjectMapper examTemplatesSubjectMapper; private final WebContext webContext; private final ExamPaperDepartmentService examPaperDepartmentService; @RequestMapping(value = "/edit", method = RequestMethod.POST) public RestResponse edit(@RequestBody @Valid ExamPaperEditRequestVM model) { model.setCreateUser(getCurrentUser().getId()); examTemplatesService.add(model); return RestResponse.ok(); } @RequestMapping(value = "/list", method = RequestMethod.POST) public RestResponse> list(@RequestBody ExamTemplatesVO examTemplatesVO) throws Exception { // 如果是部门管理员,需要做数据权限 examTemplatesVO.setDeptId(ObjectUtils.isNotEmpty(examTemplatesVO.getDeptId()) ? examTemplatesVO.getDeptId() : getAdminDeptIds()); PageInfo pageInfo = examTemplatesService.getByadmins(examTemplatesVO); PageInfo info = PageInfoHelper.copyMap(pageInfo, e -> { ExamTemplatesVO vo = new ExamTemplatesVO(); vo.setName(e.getName()); vo.setId(e.getId()); vo.setCtime(e.getCtime()); List subjectList = examTemplatesSubjectMapper.getTemplatesId(e.getId()); Integer[] ids = subjectList.stream().map(ExamTemplatesSubject::getSubjectId).toArray(Integer[]::new); String subjectNames = subjectList.stream().map(ExamTemplatesSubject::getSubjectName).collect(Collectors.joining("、")); vo.setSubjectNames(subjectNames); vo.setSubjectId(ids); vo.setCreateDepartment(examPaperDepartmentService.selectByUserId(e.getCreateUser())); return vo; }); return RestResponse.ok(info); } @RequestMapping(value = "/select/{id}", method = RequestMethod.POST) public RestResponse select(@PathVariable Integer id) { return RestResponse.ok(examTemplatesService.getById(id)); } @RequestMapping(value = "/remove/{id}", method = RequestMethod.POST) public RestResponse remove(@PathVariable Integer id) { examTemplatesService.remove(id); return RestResponse.ok(); } @PostMapping("/setConfig") public RestResponse setConfig(@RequestBody ExamTemplatesConfig examTemplatesConfig) { if (Objects.isNull(examTemplatesConfig.getId())) { examTemplatesConfig.setCreateUser(getCurrentUser().getId()); examTemplatesConfig.setCreateTime(DateUtils.getNowDate()); } return RestResponse.ok(examTemplatesConfigService.saveOrUpdate(examTemplatesConfig)); } @GetMapping("/getConfig") public RestResponse getConfig() { return RestResponse.ok(examTemplatesConfigService.getConfig()); } }