数据权限集成

This commit is contained in:
cwchen 2025-04-22 10:17:38 +08:00
parent 5f31feb5c8
commit ca03e22d0f
9 changed files with 61 additions and 40 deletions

View File

@ -19,8 +19,8 @@ public class QueryParamDto {
private String keyWord; private String keyWord;
/**权限层级*/ /**权限层级*/
private String level = UserUtil.getAuthLevel(); private String level = UserUtil.getAuthLevel();
/**工程权限*/ /**项目部权限*/
private List<Long> proIds = UserUtil.getAuthProIds(); private List<Long> departs = UserUtil.getAuthDeparts();
private int pageNum = 1; private int pageNum = 1;
private int pageSize = 10; private int pageSize = 10;
} }

View File

@ -90,7 +90,9 @@ public class SysUser extends PageEntity {
/** /**
* 所属部门 * 所属部门
*/ */
private String dept; private Long dept;
private List<Long> departs;
/** /**
* 登录权限 * 登录权限
@ -162,9 +164,9 @@ public class SysUser extends PageEntity {
private String keyWord; private String keyWord;
/** /**
* 角色级别 * 项目部级别
*/ */
private String roleLevel; private String level;
/** /**
* 工程ID * 工程ID

View File

@ -200,4 +200,6 @@ public interface UserDao {
Integer saveUserProject(@Param("userId") Long id, @Param("proId")String proId); Integer saveUserProject(@Param("userId") Long id, @Param("proId")String proId);
List<SelectVo> getProjects(UserDto userDto); List<SelectVo> getProjects(UserDto userDto);
List<Long> getDataAuth(Long dept);
} }

View File

@ -170,4 +170,13 @@ public interface UserService {
List<SysUser> getPersonList(SysUser data); List<SysUser> getPersonList(SysUser data);
List<SelectVo> getProjects(UserDto userDto); List<SelectVo> getProjects(UserDto userDto);
/**
* 查询当前登录用户的所属部门及子部门
* @param dept
* @return List<Long>
* @author cwchen
* @date 2025/4/22 9:50
*/
List<Long> getDataAuth(Long dept);
} }

View File

@ -62,6 +62,9 @@ public class UserDetailsServiceImpl implements UserDetailsService {
BeanUtils.copyProperties(sysUser, loginUser); BeanUtils.copyProperties(sysUser, loginUser);
List<Permission> permissions = permissionDao.listByUserId(sysUser.getId()); List<Permission> permissions = permissionDao.listByUserId(sysUser.getId());
loginUser.setPermissions(permissions); loginUser.setPermissions(permissions);
// 查询当前登录用户数据权限
List<Long> departs = userService.getDataAuth(loginUser.getDept());
loginUser.setDeparts(departs);
return loginUser; return loginUser;
} }

View File

@ -1,7 +1,9 @@
package com.bonus.digitalSignage.system.service.impl; package com.bonus.digitalSignage.system.service.impl;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import com.bonus.digitalSignage.base.entity.DtreeVo; import com.bonus.digitalSignage.base.entity.DtreeVo;
import com.bonus.digitalSignage.model.Role; import com.bonus.digitalSignage.model.Role;
@ -326,4 +328,13 @@ public class UserServiceImpl implements UserService {
return userDto; return userDto;
} }
@Override
public List<Long> getDataAuth(Long dept) {
try {
return Optional.ofNullable(userDao.getDataAuth(dept)).orElseGet(ArrayList::new);
} catch (Exception e) {
log.error(e.toString(), e);
return new ArrayList<>();
}
}
} }

View File

@ -7,10 +7,7 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class UserUtil { public class UserUtil {
@ -37,39 +34,17 @@ public class UserUtil {
* @date 2025/4/21 18:02 * @date 2025/4/21 18:02
*/ */
public static String getAuthLevel() { public static String getAuthLevel() {
LoginUser loginUser = getLoginUser(); return Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getLevel).orElse("0");
if(loginUser == null){
return null;
}else {
String roleLevel = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getRoleLevel).orElse("0");
String proIds = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getProIds).orElse("-1");
if(Objects.equals(roleLevel, Constants.ROLE_LEVEL)){ // 非全部权限
List<Long> proList = Arrays.stream(proIds.split(",")).map(String::trim).filter(s -> !s.isEmpty()).map(Long::valueOf).collect(Collectors.toList());
return null;
}
}
return null;
} }
/** /**
* 获取所属工程权限 * 获取所属项目部权限
* @return List<Long> * @return List<Long>
* @author cwchen * @author cwchen
* @date 2025/4/21 18:02 * @date 2025/4/21 18:02
*/ */
public static List<Long> getAuthProIds() { public static List<Long> getAuthDeparts() {
LoginUser loginUser = getLoginUser(); return Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getDeparts).orElse(null);
if(loginUser == null){
return null;
}else {
String roleLevel = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getRoleLevel).orElse("0");
String proIds = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getProIds).orElse("-1");
if(Objects.equals(roleLevel, Constants.ROLE_LEVEL)){ // 非全部权限
List<Long> proList = Arrays.stream(proIds.split(",")).map(String::trim).filter(s -> !s.isEmpty()).map(Long::valueOf).collect(Collectors.toList());
return proList;
}
}
return null;
} }
} }

View File

@ -20,10 +20,10 @@
WHERE sd2.dict_code = 'voltage_level' AND sd.del_flag = 0 WHERE sd2.dict_code = 'voltage_level' AND sd.del_flag = 0
) A ON A.dict_value = tp.voltage_level ) A ON A.dict_value = tp.voltage_level
<where> <where>
<if test="level != '1' and proIds != null and proIds.size() > 0"> <if test="level != '1' and departs != null and departs.size() > 0">
AND tp.pro_id IN AND tp.depart_id IN
<foreach collection="proIds" item="proId" open="(" separator="," close=")"> <foreach collection="departs" item="departId" open="(" separator="," close=")">
#{proId} #{departId}
</foreach> </foreach>
</if> </if>
<if test="keyWord!=null and keyWord!=''"> <if test="keyWord!=null and keyWord!=''">

View File

@ -79,9 +79,10 @@
<select id="getUser" parameterType="String" resultType="com.bonus.digitalSignage.model.SysUser"> <select id="getUser" parameterType="String" resultType="com.bonus.digitalSignage.model.SysUser">
select t.id,t.user_name as username,t.login_name as loginName,t.org_id as orgId, select t.id,t.user_name as username,t.login_name as loginName,t.org_id as orgId,
t.password,t.state,t.role_id as roleId,t.login_type loginType,t.new_user newUser, t.password,t.state,t.role_id as roleId,t.login_type loginType,t.new_user newUser,
sr.role_code AS roleCode,sr.role_name AS roleName sr.role_code AS roleCode,sr.role_name AS roleName,t.dept,td.level
from sys_user t from sys_user t
LEFT JOIN sys_role sr ON t.role_id = sr.role_id AND sr.del_flag = 0 LEFT JOIN sys_role sr ON t.role_id = sr.role_id AND sr.del_flag = 0
LEFT JOIN tb_depart td ON t.dept = td.id
where t.login_name = #{username} where t.login_name = #{username}
and t.del_flag = 0 and t.del_flag = 0
</select> </select>
@ -272,6 +273,24 @@
left join tb_project p on t.pro_id = p.id left join tb_project p on t.pro_id = p.id
where t.user_id = #{id} where t.user_id = #{id}
</select> </select>
<select id="getDataAuth" resultType="java.lang.Long">
SELECT
id
FROM
(
SELECT
t1.id,
t1.parent_id,
IF
( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), - 1 ) AS ischild
FROM
( SELECT id, parent_id FROM tb_depart t ) t1,
( SELECT @pids := #{dept} ) t2
) t3
WHERE
ischild != - 1
OR id = #{dept}
</select>
<insert id="saveUserRoles"> <insert id="saveUserRoles">
insert into sys_role_user(roleId, userId) values insert into sys_role_user(roleId, userId) values