From 2d928646669fe6026c7d63f6b409d9b2790aa65e Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期五, 19 七月 2024 16:09:20 +0800 Subject: [PATCH] feat:设置部门管理员报错解决 --- src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java | 4 +- src/main/resources/mapper/DepartmentMapper.xml | 3 - src/main/resources/mapper/UserDepartmentMapper.xml | 4 ++ src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java | 2 src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java | 39 +++++++++++-------- src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java | 2 + src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java | 23 +++++++---- src/main/java/com/mindskip/xzs/repository/UserMapper.java | 4 +- src/main/java/com/mindskip/xzs/service/UserService.java | 2 src/main/resources/mapper/UserMapper.xml | 24 ++++-------- 10 files changed, 56 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java index 715893d..b8eb2a4 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java +++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java @@ -146,7 +146,7 @@ @RequestMapping(value = "/getDeptAdmins", method = RequestMethod.GET) public RestResponse<List<Department>> getDeptAdmins(){ - return RestResponse.ok(userService.getDeptAdmins(isDeptAdmin() ? getCurrentUser().getId() : null)); + return RestResponse.ok(userService.getDeptAdmins(isDeptAdmin() ? getAdminDeptIds() : null)); } @GetMapping("/cascader") diff --git a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java index 4d87d81..7958361 100644 --- a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java +++ b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java @@ -28,4 +28,6 @@ List<BaseSelect> getDeptUserList(Integer deptId); void insertBatchByDepartmentExamine(DepartmentExamineVO departmentExamine); + + List<Integer> selectDeptAdmin(Integer id); } diff --git a/src/main/java/com/mindskip/xzs/repository/UserMapper.java b/src/main/java/com/mindskip/xzs/repository/UserMapper.java index 2d55a02..0667ad9 100644 --- a/src/main/java/com/mindskip/xzs/repository/UserMapper.java +++ b/src/main/java/com/mindskip/xzs/repository/UserMapper.java @@ -165,11 +165,11 @@ void updateUserDeptAdmin(UpdateDeptAdminVO form); - void cancelUserDeptAdmin(UpdateDeptAdminVO form); + void cancelUserDeptAdmin(List<Integer> userIds); List<Integer> getDeptAdminIds(@Param("userId") Integer userId); - List<Department> getDeptAdmins(Integer id); + List<Department> getDeptAdmins(List<Integer> ids); User getUserByExamByTemplateId(ExamPaper examPaper); diff --git a/src/main/java/com/mindskip/xzs/service/UserService.java b/src/main/java/com/mindskip/xzs/service/UserService.java index a604df6..cfabe4b 100644 --- a/src/main/java/com/mindskip/xzs/service/UserService.java +++ b/src/main/java/com/mindskip/xzs/service/UserService.java @@ -143,7 +143,7 @@ List<Department> getDeptAdminIdAndInfo(Integer userId); - List<Department> getDeptAdmins(Integer id); + List<Department> getDeptAdmins(List<Integer> ids); User getUserByExamByTemplateId(ExamPaper examPaper); diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java index f723447..0389eab 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java @@ -58,15 +58,19 @@ if (Objects.isNull(entity)) { throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪"); } + // 鍏堟竻闄や箣鍓嶇殑绠$悊鍛樻爣璇� + List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId()); + List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList()); + if (! CollectionUtils.isEmpty(userIds)) { + userMapper.clearDeptAdmin(userIds, entity.getId()); + userMapper.cancelUserDeptAdmin(userIds); + } + // 璁剧疆閮ㄩ棬绠$悊鍛� if (! CollectionUtils.isEmpty(department.getAdminId())) { - List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId()); - List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList()); - if (! CollectionUtils.isEmpty(userIds)) { - // 鍏堟竻闄や箣鍓嶇殑绠$悊鍛樻爣璇� - userMapper.clearDeptAdmin(userIds, entity.getId()); - } - // 鏍囪瘑閮ㄩ棬绠$悊鍛� userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue(), entity.getId()); + UpdateDeptAdminVO updateDeptAdminVO = new UpdateDeptAdminVO(); + updateDeptAdminVO.setAdminIds(department.getAdminId()); + userMapper.updateUserDeptAdmin(updateDeptAdminVO); } if (Objects.nonNull(department.getParentId())) { // 鏌ュ嚭鐖剁骇鐨勫眰绾� @@ -133,6 +137,7 @@ Collections.reverse(fatherList); vo.setParentIds(fatherList); } + vo.setAdminId(userDepartmentMapper.selectDeptAdmin(id)); return vo; } @@ -163,20 +168,20 @@ if (Objects.isNull(entity)) { throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪"); } + List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId()); + List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList()); + if (! CollectionUtils.isEmpty(userIds)) { + // 鍏堟竻闄や箣鍓嶇殑绠$悊鍛樻爣璇� + userMapper.clearDeptAdmin(userIds, entity.getId()); + // 淇敼娌¤閫夋嫨鐨勭敤鎴峰苟涓斾笉鏄埆鐨勯儴闂ㄧ鐞嗗憳鐨勭敤鎴疯鑹蹭负1 + userMapper.cancelUserDeptAdmin(userIds); + } if (! CollectionUtils.isEmpty(form.getAdminIds())) { - List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId()); - List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList()); - if (! CollectionUtils.isEmpty(userIds)) { - // 鍏堟竻闄や箣鍓嶇殑绠$悊鍛樻爣璇� - userMapper.clearDeptAdmin(userIds, entity.getId()); - } // 鏍囪瘑閮ㄩ棬绠$悊鍛� userMapper.updateDeptAdmin(form.getAdminIds(), DeptAdminEnum.YES.getValue(), entity.getId()); + // 淇敼琚�夋嫨鐨勭敤鎴蜂负閮ㄩ棬绠$悊鍛� + userMapper.updateUserDeptAdmin(form); } - // 淇敼琚�夋嫨鐨勭敤鎴蜂负閮ㄩ棬绠$悊鍛� - userMapper.updateUserDeptAdmin(form); - // 淇敼娌¤閫夋嫨鐨勭敤鎴峰苟涓斾笉鏄埆鐨勯儴闂ㄧ鐞嗗憳鐨勭敤鎴疯鑹蹭负1 - userMapper.cancelUserDeptAdmin(form); } @Override diff --git a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java index 5581e44..26791e9 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java @@ -15,6 +15,7 @@ import com.mindskip.xzs.repository.SubjectMapper; import com.mindskip.xzs.service.SubjectService; import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -112,14 +113,18 @@ @Override @Transactional(rollbackFor = Exception.class) public void edit(EditSubjectForm form) { - // 鍒犻櫎鍘熷厛鐨勮鐩紝鍐嶆柊澧� - subjectDeptMapper.deleteByDeptId(form.getDeptId()); - List<SubjectDept> toAddList = form.getSubjectIds().stream().map(subjectId -> { - SubjectDept subjectDept = new SubjectDept(); - subjectDept.setDeptId(form.getDeptId()); - subjectDept.setSubjectId(subjectId); - return subjectDept; - }).collect(Collectors.toList()); - subjectDeptMapper.add(toAddList); + if (ObjectUtils.isNotEmpty(form.getDeptId())) { + // 鍒犻櫎鍘熷厛鐨勮鐩紝鍐嶆柊澧� + subjectDeptMapper.deleteByDeptId(form.getDeptId()); + List<SubjectDept> toAddList = form.getSubjectIds().stream().map(subjectId -> { + SubjectDept subjectDept = new SubjectDept(); + subjectDept.setDeptId(form.getDeptId()); + subjectDept.setSubjectId(subjectId); + return subjectDept; + }).collect(Collectors.toList()); + if (ObjectUtils.isNotEmpty(toAddList)) { + subjectDeptMapper.add(toAddList); + } + } } } diff --git a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java index 52814e7..792341e 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java @@ -197,8 +197,8 @@ } @Override - public List<Department> getDeptAdmins(Integer id) { - List<Department> list = userMapper.getDeptAdmins(id); + public List<Department> getDeptAdmins(List<Integer> ids) { + List<Department> list = userMapper.getDeptAdmins(ids); return TreeUtils.build(list); } diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml index bb6a0ff..a698ca9 100644 --- a/src/main/resources/mapper/DepartmentMapper.xml +++ b/src/main/resources/mapper/DepartmentMapper.xml @@ -27,9 +27,6 @@ <if test="name != null"> name = #{name,jdbcType=VARCHAR}, </if> - <if test="adminId != null"> - admin_id = #{adminId}, - </if> <if test="deleted != null"> deleted = #{deleted,jdbcType=VARCHAR}, </if> diff --git a/src/main/resources/mapper/UserDepartmentMapper.xml b/src/main/resources/mapper/UserDepartmentMapper.xml index 3fb4a0d..22a6e92 100644 --- a/src/main/resources/mapper/UserDepartmentMapper.xml +++ b/src/main/resources/mapper/UserDepartmentMapper.xml @@ -81,4 +81,8 @@ </where> </select> + <select id="selectDeptAdmin" resultType="java.lang.Integer"> + SELECT user_id FROM t_user_department WHERE dept_admin = 1 AND department_id = #{depId} + </select> + </mapper> diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 4797580..1a1de5d 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -523,18 +523,10 @@ </update> <update id="cancelUserDeptAdmin"> - update t_user set role = 1 where id in( - select user_id from t_user_department where department_id = #{id} and user_id not in - <foreach collection="adminIds" item="id" open="(" separator="," close=")"> - #{id} - </foreach> - and user_id not in - (select user_id from t_user_department where dept_admin = 1 and user_id in - (select user_id from t_user_department where department_id = #{id} and user_id not in - <foreach collection="adminIds" item="id" open="(" separator="," close=")"> - #{id} - </foreach> - ))) + update t_user set role = 1 where id in + <foreach collection="userIds" item="id" open="(" separator="," close=")"> + #{id} + </foreach> </update> <select id="getDeptAdminIds" resultType="java.lang.Integer" parameterType="java.lang.Integer"> @@ -551,10 +543,10 @@ dept_admin = 1 and user_id = #{userId} </select> - <select id="getDeptAdmins" resultType="com.mindskip.xzs.domain.Department" parameterType="java.lang.Integer"> - <if test="id != null"> + <select id="getDeptAdmins" resultType="com.mindskip.xzs.domain.Department"> + <if test="ids != null and ids.size() != 0"> WITH RECURSIVE temp_table AS ( - select a.id, a.name, a.parent_id from t_department a inner join t_user_department b on a.id = b.department_id where a.deleted = 0 and b.dept_admin = 1 and b.user_id = #{id} + select a.id, a.name, a.parent_id from t_department a WHERE id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> UNION ALL SELECT so.id, so.name, so.parent_id FROM t_department so INNER JOIN temp_table tb ON so.parent_id = tb.id @@ -564,7 +556,7 @@ FROM temp_table </if> - <if test="id == null"> + <if test="ids == null or ids.size() == 0"> select a.id, a.name, a.parent_id from t_department a where a.deleted = 0 order by a.id </if> </select> -- Gitblit v1.8.0