首页>代码>ssm整合vue实现会员管理系统,含1w字论文,可做毕业设计参考实例>/会员管理系统/member/member-admin/src/main/java/co/yixiang/config/DataScope.java
/**
* Copyright (C) 2018-2022
* All rights reserved, Designed By www.member
* 注意:
* 本软件为www.member开发研制
*/
package co.yixiang.config;
import co.yixiang.modules.system.domain.Dept;
import co.yixiang.modules.system.service.DeptService;
import co.yixiang.modules.system.service.RoleService;
import co.yixiang.modules.system.service.UserService;
import co.yixiang.modules.system.service.dto.RoleSmallDto;
import co.yixiang.modules.system.service.dto.UserDto;
import co.yixiang.utils.SecurityUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 数据权限配置
* @author member
* @date 2019-4-1
*/
@Component
public class DataScope {
private final String[] scopeType = {"全部", "本级", "自定义"};
private final UserService userService;
private final RoleService roleService;
private final DeptService deptService;
public DataScope(UserService userService, RoleService roleService, DeptService deptService) {
this.userService = userService;
this.roleService = roleService;
this.deptService = deptService;
}
public Set<Long> getDeptIds() {
UserDto user = userService.findByName(SecurityUtils.getUsername());
// 用于存储部门id
Set<Long> deptIds = new HashSet<>();
// 查询用户角色
List<RoleSmallDto> roleSet = roleService.findByUsersId(user.getId());
for (RoleSmallDto role : roleSet) {
if (scopeType[0].equals(role.getDataScope())) {
return new HashSet<>();
}
// 存储本级的数据权限
if (scopeType[1].equals(role.getDataScope())) {
deptIds.add(user.getDept().getId());
}
// 存储自定义的数据权限
if (scopeType[2].equals(role.getDataScope())) {
Set<Dept> depts = deptService.findByRoleIds(role.getId());
for (Dept dept : depts) {
deptIds.add(dept.getId());
List<Dept> deptChildren = deptService.findByPid(dept.getId());
if (deptChildren != null && deptChildren.size() != 0) {
deptIds.addAll(getDeptChildren(deptChildren));
}
}
}
}
return deptIds;
}
public List<Long> getDeptChildren(List<Dept> deptList) {
List<Long> list = new ArrayList<>();
deptList.forEach(dept -> {
if (dept != null && dept.getEnabled()) {
List<Dept> depts = deptService.findByPid(dept.getId());
if (deptList.size() != 0) {
list.addAll(getDeptChildren(depts));
}
list.add(dept.getId());
}
}
);
return list;
}
}
最近下载更多
奋斗的小蚂蚁 LV15
10月22日
rowsy8888 LV6
7月12日
陈小灏 LV18
2月25日
java菜鸟1号 LV7
2024年12月4日
zolscy LV24
2024年11月27日
withyouatdusk LV2
2024年9月29日
wenjie_5419 LV13
2024年7月10日
15342201772 LV9
2024年6月25日
TY0165 LV20
2024年6月17日
bbczlitao LV9
2024年6月11日

最近浏览