先说一下代码场景 admin(工作人员) role(角色) persimmon(权限)
关系图:
代码作用是:通过adminId去查询出他所有的权限路径url
代码实现:
@Autowired
private AdminPermissionMapper adminPermissionMapper;
@Override
public List<String> queryUrlByAdminId(Long adminId) {
ArrayList<String> strings = new ArrayList<>();
//1. 通过adminId根据admin_role中间表去查找出该工作人员所有的角色id
//中间表 admin_mid_role 查出role_id
String queryRoleId="select role_id from yqs.admin_mid_role where admin_id="+adminId;
//2.查出了所有的角色之后 通过角色id去用role_permission中间表查出所有权限id
//中间表 admin_role_mid_perm
String queryPermissionId="select permission_id from yqs.admin_role_mid_perm where role_id in ("+queryRoleId+")";
//3.用权限id去查询所有权限
QueryWrapper<AdminPermission> wrapper = new QueryWrapper<>();
wrapper.select("url")
.inSql("pk_id",queryPermissionId);
List<AdminPermission> list = adminPermissionMapper.selectList(wrapper);
list.stream()
.filter(Objects::nonNull)
.forEach(adminPermission -> strings.add(adminPermission.getUrl()));
return strings;
}