From 3984187468d7af3b24dbc0edbeb893abf186b1ad Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 12 七月 2024 18:52:37 +0800
Subject: [PATCH] 登录判断是否能管理三级单位
---
src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java | 9 +++-
src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java | 24 ++++++++---
src/main/resources/mapper/DepartmentMapper.xml | 4 ++
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java | 8 ++++
src/main/java/com/mindskip/xzs/repository/UserMapper.java | 10 ++++
src/main/java/com/mindskip/xzs/service/UserService.java | 4 +
src/main/resources/mapper/UserMapper.xml | 12 +++++
7 files changed, 59 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
index 5104811..b9d6e21 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
@@ -2,9 +2,11 @@
import com.mindskip.xzs.context.WebContext;
+import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.enums.DeptAdminEnum;
import com.mindskip.xzs.domain.enums.RoleEnum;
import com.mindskip.xzs.domain.enums.UserStatusEnum;
+import com.mindskip.xzs.domain.vo.CascaderDataVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.service.AuthenticationService;
import com.mindskip.xzs.service.UserService;
@@ -23,6 +25,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
/**
@@ -66,16 +69,23 @@
grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.DEPT_ADMIN.getRoleName()));
}
grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.fromCode(user.getRole()).getRoleName()));
- // 鑾峰彇璇ョ敤鎴风鐞嗛儴闂ㄥ強鍏朵笅绾�
- List<Integer> deptAdminIds = userService.getDeptAdminIds(user.getId());
- if (! CollectionUtils.isEmpty(deptAdminIds)) {
- deptAdminIds = departmentMapper.getChilds(deptAdminIds); // 鏌ヨ瀛愰儴闂�
+ // 鑾峰彇璇ョ敤鎴风鐞嗛儴闂ㄥ強鍏朵笅绾eptAdminIds
+ List<Department> deptList = userService.getDeptAdminIdAndInfo(user.getId());
+ List<Integer> deptIds = deptList.stream().map(dept -> dept.getId()).collect(Collectors.toList());
+ if (! CollectionUtils.isEmpty(deptIds)) {
+ deptIds = departmentMapper.getChilds(deptIds); // 鏌ヨ瀛愰儴闂�
+ // 濡傛灉璇ラ儴闂ㄨ繕琚祴浜堜簡绠$悊涓夌骇鍗曚綅鐨勭殑鏉冮檺锛屽垯鏌ュ嚭鏉�
+ if (deptList.stream().anyMatch(Department::getSpecial)) {
+ List<CascaderDataVO> levelDeptList = departmentMapper.getLevelDeptList(3);
+ List<Integer> level3DeptIds = levelDeptList.stream().map(CascaderDataVO::getValue).collect(Collectors.toList());
+ deptIds.addAll(level3DeptIds);
+ }
}
- if (CollectionUtils.isEmpty(deptAdminIds)) {
+ else if (CollectionUtils.isEmpty(deptIds)) {
// 濡傛灉鏄櫘閫氬鍛橈紝鏌ュ嚭鎵�鍦ㄩ儴闂�
- deptAdminIds = userService.getDeptIds(user.getId());
+ deptIds = userService.getDeptIds(user.getId());
}
- MyUser authUser = new MyUser(user.getUserName(), user.getPassword(), grantedAuthorities, user.getRole(), deptAdminIds);
+ MyUser authUser = new MyUser(user.getUserName(), user.getPassword(), grantedAuthorities, user.getRole(), deptIds);
return new UsernamePasswordAuthenticationToken(authUser, authUser.getPassword(), authUser.getAuthorities());
}
diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
index 5722d19..ead08a8 100644
--- a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -55,4 +55,12 @@
* @return
*/
List<Integer> getFather(@Param("deptId") Integer deptId);
+
+ /**
+ * 鑾峰彇鍑犵骇鍗曚綅
+ *
+ * @param level
+ * @return
+ */
+ List<CascaderDataVO> getLevelDeptList(@Param("level") Integer level);
}
diff --git a/src/main/java/com/mindskip/xzs/repository/UserMapper.java b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
index 4354f1e..2d55a02 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
@@ -167,7 +167,7 @@
void cancelUserDeptAdmin(UpdateDeptAdminVO form);
- List<Integer> getDeptAdminIds(Integer id);
+ List<Integer> getDeptAdminIds(@Param("userId") Integer userId);
List<Department> getDeptAdmins(Integer id);
@@ -178,4 +178,12 @@
List<User> getFailExamUser(Integer examPaperId);
List<User> getFailTemplateUser(Integer templateId);
+
+ /**
+ * 鑾峰彇鐢ㄦ埛绠$悊鐨勯儴闂ㄤ俊鎭�
+ *
+ * @param userId
+ * @return
+ */
+ List<Department> getDeptAdminIdAndInfo(@Param("userId") Integer userId);
}
diff --git a/src/main/java/com/mindskip/xzs/service/UserService.java b/src/main/java/com/mindskip/xzs/service/UserService.java
index 0b5753f..a604df6 100644
--- a/src/main/java/com/mindskip/xzs/service/UserService.java
+++ b/src/main/java/com/mindskip/xzs/service/UserService.java
@@ -139,7 +139,9 @@
User getUserByExam(ExamPaper examPaper);
- List<Integer> getDeptAdminIds(Integer id);
+ List<Integer> getDeptAdminIds(Integer userId);
+
+ List<Department> getDeptAdminIdAndInfo(Integer userId);
List<Department> getDeptAdmins(Integer id);
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 a894226..52814e7 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
@@ -187,8 +187,13 @@
}
@Override
- public List<Integer> getDeptAdminIds(Integer id) {
- return userMapper.getDeptAdminIds(id);
+ public List<Integer> getDeptAdminIds(Integer userId) {
+ return userMapper.getDeptAdminIds(userId);
+ }
+
+ @Override
+ public List<Department> getDeptAdminIdAndInfo(Integer userId) {
+ return userMapper.getDeptAdminIdAndInfo(userId);
}
@Override
diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml
index 598c2a5..bb6a0ff 100644
--- a/src/main/resources/mapper/DepartmentMapper.xml
+++ b/src/main/resources/mapper/DepartmentMapper.xml
@@ -173,4 +173,8 @@
temp_table
</select>
+ <select id="getLevelDeptList" resultType="com.mindskip.xzs.domain.vo.CascaderDataVO">
+ SELECT id as value, name as label, parent_id, special, level FROM t_department WHERE level = #{level}
+ </select>
+
</mapper>
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index 099b1d3..406aea9 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -538,7 +538,17 @@
</update>
<select id="getDeptAdminIds" resultType="java.lang.Integer" parameterType="java.lang.Integer">
- select department_id from t_user_department where dept_admin = 1 and user_id = #{id}
+ select department_id from t_user_department where dept_admin = 1 and user_id = #{userId}
+ </select>
+
+ <select id="getDeptAdminIdAndInfo" resultType="com.mindskip.xzs.domain.Department">
+ select
+ d.id, d.name, d.special
+ from
+ t_user_department ud
+ INNER JOIN t_department d ON ud.department_id = d.id
+ WHERE
+ dept_admin = 1 and user_id = #{userId}
</select>
<select id="getDeptAdmins" resultType="com.mindskip.xzs.domain.Department" parameterType="java.lang.Integer">
--
Gitblit v1.8.0