src/main/java/com/mindskip/xzs/configuration/spring/exception/ExceptionHandle.java
@@ -75,4 +75,11 @@ logger.error(e.getMessage(), e); return new RestResponse<>(SystemCode.QuestionError.getCode(), SystemCode.QuestionError.getMessage()); } @ExceptionHandler(RuntimeException.class) @ResponseBody public RestResponse handlerRuntimeException(RuntimeException e) { logger.error(e.getMessage(), e); return new RestResponse<>(SystemCode.InnerError.getCode(), e.getMessage()); } } src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -10,28 +10,35 @@ import com.mindskip.xzs.domain.vo.DepartmentVO; import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO; import com.mindskip.xzs.domain.vo.UserVO; 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.utility.PageInfoHelper; import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; import java.util.Objects; 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; /** * 获取部门下用户列表(下拉) @@ -51,16 +58,9 @@ return RestResponse.ok(); } @Autowired public DepartmentController(DepartmentService departmentService, UserService userService, UserDepartmentMapper userDepartmentMapper) { this.departmentService = departmentService; this.userService = userService; this.userDepartmentMapper = userDepartmentMapper; } @RequestMapping(value = "/list", method = RequestMethod.POST) public RestResponse<List<Department>> getAll(){ List<Department> res = departmentService.gets(); List<Department> res = departmentService.gets(-1); return RestResponse.ok(res); } @@ -93,7 +93,15 @@ @RequestMapping(value = "/getDepartmentUser", method = RequestMethod.POST) public RestResponse<List<DepartmentVO>> getUserDepartment(){ List<DepartmentVO> res = departmentService.gets() User currentUser = webContext.getCurrentUser(); Integer deptId = null; if (Objects.nonNull(currentUser)) { // 如果是部门管理员,需要做数据权限 if ("1".equals(currentUser.getDeptAdmin())) { deptId = departmentMapper.selectByAdminId(currentUser.getId()); } } List<DepartmentVO> res = departmentService.gets(deptId) .stream().map(e->{ DepartmentVO departmentVO = new DepartmentVO(); List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId()); src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
@@ -1,43 +1,63 @@ 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; public ExamTemplatesController(ExamTemplatesService examTemplatesService, ExamTemplatesSubjectMapper examTemplatesSubjectMapper) { this.examTemplatesService = examTemplatesService; this.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<PageInfo<ExamTemplatesVO>> 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<ExamTemplates> pageInfo = examTemplatesService.getByadmins(examTemplatesVO); PageInfo<ExamTemplatesVO> info = PageInfoHelper.copyMap(pageInfo, e -> { ExamTemplatesVO vo = new ExamTemplatesVO(); src/main/java/com/mindskip/xzs/domain/ExamTemplates.java
@@ -1,10 +1,13 @@ package com.mindskip.xzs.domain; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import java.util.List; @Data public class ExamTemplates implements Serializable { private Integer id; @@ -18,94 +21,6 @@ private List<String> limitDateTime; private Date startTime; private Date endTime; public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getEndTime() { return endTime; } public void setEndTime(Date endTime) { this.endTime = endTime; } public List<String> getLimitDateTime() { return limitDateTime; } public void setLimitDateTime(List<String> limitDateTime) { this.limitDateTime = limitDateTime; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPaperType() { return paperType; } public void setPaperType(String paperType) { this.paperType = paperType; } public String getSuggestTime() { return suggestTime; } public void setSuggestTime(String suggestTime) { this.suggestTime = suggestTime; } public String getTitleName() { return titleName; } public void setTitleName(String titleName) { this.titleName = titleName; } public Date getCtime() { return ctime; } public void setCtime(Date ctime) { this.ctime = ctime; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getMenuIds() { return menuIds; } public void setMenuIds(String menuIds) { this.menuIds = menuIds; } private Integer deptId; } src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
@@ -3,6 +3,7 @@ import com.mindskip.xzs.base.BasePage; import com.mindskip.xzs.domain.ExamTemplates; import com.mindskip.xzs.domain.ExamTemplatesSubject; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @@ -10,6 +11,7 @@ import java.util.Date; import java.util.List; @Data public class ExamTemplatesVO extends BasePage implements Serializable { private Integer id; @@ -20,72 +22,9 @@ private String status; private Integer userId; public LocalDateTime getNow() { return now; } /** * 部门ID */ private Integer deptId; public void setNow(LocalDateTime now) { this.now = now; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCtime() { return ctime; } public void setCtime(Date ctime) { this.ctime = ctime; } public Integer[] getSubjectId() { return subjectId; } public void setSubjectId(Integer[] subjectId) { this.subjectId = subjectId; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } @Override public String toString() { return "ExamTemplatesVO{" + "id=" + id + ", name='" + name + '\'' + ", ctime=" + ctime + ", now=" + now + ", subjectId=" + Arrays.toString(subjectId) + ", status='" + status + '\'' + ", userId=" + userId + '}'; } } src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -3,6 +3,7 @@ import com.mindskip.xzs.domain.Department; import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -13,7 +14,7 @@ Integer update(Department department); List<Department> gets(); List<Department> gets(Integer deptId); List<DepartmentResponseVM> page(DepartmentResponseVM departmentResponseVM); @@ -21,5 +22,13 @@ Department getById(Integer id); List<Integer> selectByAdminId(Integer id); Integer selectByAdminId(@Param("userId") Integer userId); /** * 查询除了id这个单位,该用户还是几个单位的负责人 * @param userId * @param id * @return */ Integer countByAdminId(@Param("userId") Integer userId, @Param("id") Integer id); } src/main/java/com/mindskip/xzs/service/DepartmentService.java
@@ -40,7 +40,7 @@ Department getById(Integer id); List<Department> gets(); List<Department> gets(Integer deptId); Department getName(String name); src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -63,13 +63,13 @@ throw new RuntimeException("该部门不存在"); } if (Objects.nonNull(department.getAdminId())) { Integer adminNum = departmentMapper.countByAdminId(department.getAdminId(), department.getId()); if (adminNum > 0) { throw new RuntimeException("一个用户只能是一个单位的管理员"); } if (! Objects.equals(entity.getAdminId(), department.getAdminId())) { // 取消原先的管理员标识 List<Integer> depIds = departmentMapper.selectByAdminId(entity.getAdminId()); depIds.remove(department.getId()); if (depIds.size() < 1) { userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue()); } userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue()); } // 标识部门管理员 userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue()); @@ -91,8 +91,11 @@ } @Override public List<Department> gets() { return departmentMapper.gets(); public List<Department> gets(Integer deptId) { if (deptId == -1) { deptId = null; } return departmentMapper.gets(deptId); } @Override @@ -117,13 +120,13 @@ throw new RuntimeException("该部门不存在"); } if (Objects.nonNull(form.getAdminId())) { Integer adminNum = departmentMapper.countByAdminId(form.getAdminId(), form.getId()); if (adminNum > 0) { throw new RuntimeException("一个用户只能是一个单位的管理员"); } if (! Objects.equals(entity.getAdminId(), form.getAdminId())) { // 取消原先的管理员标识 List<Integer> depIds = departmentMapper.selectByAdminId(entity.getAdminId()); depIds.remove(form.getId()); if (depIds.size() < 1) { userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue()); } userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue()); } // 标识部门管理员 userMapper.updateDeptAdmin(form.getAdminId(), DeptAdminEnum.YES.getValue()); src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java
@@ -58,7 +58,6 @@ if (model.getId() != null) { removes(model.getId()); } ExamTemplates examTemplates = ExamTemplatesClassConvert.INSTANCE.ExamPaperEditRequestVMToExamTemplates(model); if (!CollectionUtils.isEmpty(model.getLimitDateTime())) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); src/main/java/com/mindskip/xzs/utility/convert/ExamTemplatesClassConvert.java
@@ -29,6 +29,7 @@ @Mapping(source = "name",target = "name"), @Mapping(source = "paperType",target = "paperType"), @Mapping(source = "suggestTime",target = "suggestTime"), @Mapping(source = "deptId",target = "deptId"), }) ExamPaperEditRequestVM ExamTemplatesToExamPaperEditRequestVM(ExamTemplates examTemplates); src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperEditRequestVM.java
@@ -1,6 +1,8 @@ package com.mindskip.xzs.viewmodel.admin.exam; import lombok.Data; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -9,7 +11,7 @@ import java.util.List; import java.util.Map; @Data public class ExamPaperEditRequestVM { private Integer id; // @NotNull @@ -22,6 +24,11 @@ private String name; @NotNull private Integer suggestTime; /** * 发布试卷部门 */ private Integer deptId; private List<String> limitDateTime; @@ -48,173 +55,4 @@ private String status; private String menuIds; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getLevel() { return level; } public void setLevel(Integer level) { this.level = level; } public Integer[] getSubjectId() { return subjectId; } public void setSubjectId(Integer[] subjectId) { this.subjectId = subjectId; } public Integer getPaperType() { return paperType; } public void setPaperType(Integer paperType) { this.paperType = paperType; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getSuggestTime() { return suggestTime; } public void setSuggestTime(Integer suggestTime) { this.suggestTime = suggestTime; } public List<String> getLimitDateTime() { return limitDateTime; } public void setLimitDateTime(List<String> limitDateTime) { this.limitDateTime = limitDateTime; } public List<ExamPaperTitleItemVM> getTitleItems() { return titleItems; } public void setTitleItems(List<ExamPaperTitleItemVM> titleItems) { this.titleItems = titleItems; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } public Integer[] getDepartmentIds() { return departmentIds; } public void setDepartmentIds(Integer[] departmentIds) { this.departmentIds = departmentIds; } public Map<Integer, Integer> getSubjectSource() { return subjectSource; } public void setSubjectSource(Map<Integer, Integer> subjectSource) { this.subjectSource = subjectSource; } public Integer getAggregateSource() { return aggregateSource; } public void setAggregateSource(Integer aggregateSource) { this.aggregateSource = aggregateSource; } public List<QuestionTypeVM> getQuestionTypeVMS() { return questionTypeVMS; } public void setQuestionTypeVMS(List<QuestionTypeVM> questionTypeVMS) { this.questionTypeVMS = questionTypeVMS; } public Integer[] getUserIds() { return userIds; } public void setUserIds(Integer[] userIds) { this.userIds = userIds; } public Integer[][] getUserId() { return userId; } public void setUserId(Integer[][] userId) { this.userId = userId; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getMenuIds() { return menuIds; } public void setMenuIds(String menuIds) { this.menuIds = menuIds; } @Override public String toString() { return "ExamPaperEditRequestVM{" + "id=" + id + ", level=" + level + ", subjectId=" + Arrays.toString(subjectId) + ", paperType=" + paperType + ", name='" + name + '\'' + ", suggestTime=" + suggestTime + ", limitDateTime=" + limitDateTime + ", titleItems=" + titleItems + ", score='" + score + '\'' + ", departmentIds=" + Arrays.toString(departmentIds) + ", userIds=" + Arrays.toString(userIds) + ", subjectSource=" + subjectSource + ", questionTypeVMS=" + questionTypeVMS + ", aggregateSource=" + aggregateSource + ", userId=" + Arrays.toString(userId) + ", type='" + type + '\'' + ", status='" + status + '\'' + ", menuIds='" + menuIds + '\'' + '}'; } } src/main/resources/mapper/DepartmentMapper.xml
@@ -44,6 +44,9 @@ LEFT JOIN t_user tu ON td.admin_id = tu.id AND tu.deleted = 0 WHERE td.deleted = 0 <if test="deptId != null"> AND td.id = #{deptId} </if> </select> <select id="getById" resultMap="BaseResultMap"> @@ -95,7 +98,11 @@ </select> <select id="selectByAdminId" resultType="integer"> SELECT id FROM t_department WHERE admin_id = #{id} AND deleted = 0 SELECT id FROM t_department WHERE admin_id = #{userId} AND deleted = 0 </select> <select id="countByAdminId" resultType="integer"> SELECT count(*) FROM t_department WHERE admin_id = #{userId} AND deleted = 0 AND id != #{id} </select> </mapper> src/main/resources/mapper/ExamTemplatesMapper.xml
@@ -70,6 +70,9 @@ <if test="userId != null"> and u.user_id = #{userId} </if> <if test="deptId != null"> and e.dept_id = #{deptId} </if> <if test="now !=null"> and #{now} between e.start_time and e.end_time </if> @@ -93,4 +96,4 @@ where id = #{id} </delete> </mapper> </mapper>