package com.mindskip.xzs.controller.admin; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; 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.ExamPaper; import com.mindskip.xzs.domain.ExamTemplates; import com.mindskip.xzs.domain.ExamTemplatesSubject; import com.mindskip.xzs.domain.User; import com.mindskip.xzs.domain.vo.ExamTemplatesVO; import com.mindskip.xzs.repository.DepartmentMapper; import com.mindskip.xzs.repository.ExamTemplatesSubjectMapper; import com.mindskip.xzs.repository.UserDepartmentMapper; import com.mindskip.xzs.service.ExamTemplatesService; import com.mindskip.xzs.utility.PageInfoHelper; import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import java.util.Objects; @RestController("AdminExamTemplatesController") @RequestMapping(value = "/api/admin/exam/templates") @RequiredArgsConstructor public class ExamTemplatesController extends BaseApiController { private final ExamTemplatesService examTemplatesService; private final ExamTemplatesSubjectMapper examTemplatesSubjectMapper; private final WebContext webContext; private final DepartmentMapper departmentMapper; @RequestMapping(value = "/edit", method = RequestMethod.POST) public RestResponse edit(@RequestBody @Valid ExamPaperEditRequestVM model) { User currentUser = webContext.getCurrentUser(); if (Objects.nonNull(currentUser)) { // 如果是部门管理员,需要做数据权限 if ("1".equals(currentUser.getDeptAdmin())) { Integer deptId = departmentMapper.selectByAdminId(currentUser.getId()); model.setDeptId(deptId); } } examTemplatesService.add(model); return RestResponse.ok(); } @RequestMapping(value = "/list", method = RequestMethod.GET) public RestResponse> list(ExamTemplatesVO examTemplatesVO) throws Exception { User currentUser = webContext.getCurrentUser(); if (Objects.nonNull(currentUser)) { // 如果是部门管理员,需要做数据权限 if ("1".equals(currentUser.getDeptAdmin())) { Integer deptId = departmentMapper.selectByAdminId(currentUser.getId()); examTemplatesVO.setDeptId(deptId); } } 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()); Integer[] ids = examTemplatesSubjectMapper.getTemplatesId(e.getId()).stream().map(ExamTemplatesSubject::getSubjectId).toArray(Integer[]::new); vo.setSubjectId(ids); 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(); } // @RequestMapping(value = "/random", method = RequestMethod.POST) // public RestResponse randomExam() throws Exception { // User user = getCurrentUser(); // Integer id = examTemplatesService.randomExam(user); // return RestResponse.ok(id); // } }