package com.mindskip.xzs.controller.admin; import com.mindskip.xzs.base.BaseApiController; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.domain.Department; import com.mindskip.xzs.domain.ExamPaper; import com.mindskip.xzs.domain.User; import com.mindskip.xzs.domain.UserDepartment; import com.mindskip.xzs.domain.vo.BaseSelect; import com.mindskip.xzs.domain.vo.CascaderDataVO; import com.mindskip.xzs.domain.vo.DepartmentVO; import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO; import com.mindskip.xzs.repository.DepartmentMapper; import com.mindskip.xzs.repository.UserDepartmentMapper; import com.mindskip.xzs.service.DepartmentService; import com.mindskip.xzs.service.UserService; import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @RestController("AdminDepartmentController") @RequestMapping("/api/admin/department") @RequiredArgsConstructor public class DepartmentController extends BaseApiController { private final DepartmentService departmentService; private final UserService userService; private final UserDepartmentMapper userDepartmentMapper; private final DepartmentMapper departmentMapper; /** * 获取部门下用户列表(下拉) * @param deptId * @return */ @GetMapping("/{id}/user-list") public RestResponse> getDeptUserList(@PathVariable("id") Integer deptId) { List data = departmentService.getDeptUserList(deptId); return RestResponse.ok(data); } @PostMapping("/update-admin") public RestResponse updateAdmin(@RequestBody UpdateDeptAdminVO form) { departmentService.updateAdmin(form); return RestResponse.ok(); } @RequestMapping(value = "/list", method = RequestMethod.POST) public RestResponse> getAll(){ List res = departmentService.gets(new ArrayList<>()); return RestResponse.ok(res); } @RequestMapping(value = "/page/list", method = RequestMethod.POST) public RestResponse> pageList(@RequestBody DepartmentResponseVM model) { List pageInfo = departmentService.gets(model); return RestResponse.ok(pageInfo); } @RequestMapping(value = "/add", method = RequestMethod.POST) public RestResponse add(@RequestBody @Valid Department model) { return RestResponse.ok(departmentService.add(model)); } @RequestMapping(value = "/update", method = RequestMethod.POST) public RestResponse update(@RequestBody @Valid Department model) { return RestResponse.ok(departmentService.update(model)); } @RequestMapping(value = "/get/{id}", method = RequestMethod.POST) public RestResponse update(@PathVariable Integer id) { return RestResponse.ok(departmentService.getByIdVO(id)); } @RequestMapping(value = "/getUserByDepartment/{id}", method = RequestMethod.POST) public RestResponse> getUserByDepartment(@PathVariable Integer id){ return RestResponse.ok(userService.getUserByLevel(id)); } @RequestMapping(value = "/getDepartmentUser", method = RequestMethod.POST) public RestResponse> getUserDepartment(Integer examPaperId){ List res = departmentService.gets(isDeptAdmin() ? getAdminDeptIds() : null) .stream().map(e->{ DepartmentVO departmentVO = new DepartmentVO(); List userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId()); List list = new ArrayList<>(); for (UserDepartment userDepartment : userDepartments) { User user; // 选择补考用户时查询符合补考条件的用户 if (examPaperId != null) { ExamPaper examPaper = new ExamPaper(); examPaper.setCreateUser(userDepartment.getUserId()); examPaper.setId(examPaperId); user = userService.getUserByExam(examPaper); } else { user = userService.getUserById(userDepartment.getUserId()); } if (ObjectUtils.isNotEmpty(user)) { list.add(user); } } departmentVO.setUserList(list); departmentVO.setDepartment(e); return departmentVO; }).collect(Collectors.toList()); return RestResponse.ok(res); } @RequestMapping(value = "/getDepartmentUserByTemplateId", method = RequestMethod.POST) public RestResponse> getDepartmentUserByTemplateId(Integer templateId){ List res = departmentService.gets(isDeptAdmin() ? getAdminDeptIds() : null) .stream().map(e->{ DepartmentVO departmentVO = new DepartmentVO(); List userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId()); List list = new ArrayList<>(); for (UserDepartment userDepartment : userDepartments) { User user; // 选择补考用户时查询符合补考条件的用户 if (templateId != null) { ExamPaper examPaper = new ExamPaper(); examPaper.setCreateUser(userDepartment.getUserId()); examPaper.setId(templateId); user = userService.getUserByExamByTemplateId(examPaper); } else { user = userService.getUserById(userDepartment.getUserId()); } if (ObjectUtils.isNotEmpty(user)) { list.add(user); } } departmentVO.setUserList(list); departmentVO.setDepartment(e); return departmentVO; }).collect(Collectors.toList()); return RestResponse.ok(res); } @RequestMapping(value = "/getDeptAdmins", method = RequestMethod.GET) public RestResponse> getDeptAdmins(){ return RestResponse.ok(userService.getDeptAdmins(isDeptAdmin() ? getAdminDeptIds() : null)); } @GetMapping("/cascader") public RestResponse> cascader(){ return RestResponse.ok(departmentService.cascader()); } @GetMapping("/getCurrentDeptId") public RestResponse> getCurrentDeptIds(){ return RestResponse.ok(getAdminDeptIds()); } }