权限管理

简介: 权限管理

使用递归的方式查询菜单

效果

image.png

开始实现

service

@Override
    public List<Permission> queryAllMenuGuli() {
        //查询菜单表中所有数据
        QueryWrapper<Permission> permissionQueryWrapper = new QueryWrapper<>();
        permissionQueryWrapper.orderByDesc("id");
        List<Permission> permissionList = baseMapper.selectList(permissionQueryWrapper);
        //把查询到的所有菜单list集合按照要求进行封装
        List<Permission> resultList = buildPermission(permissionList);
        return resultList;
    }
    //把返回所有菜单list集合进行封装的方法
    public static List<Permission> buildPermission(List<Permission> permissionList) {
        //创建一个list集合,用于数据的封装
        List<Permission> finalNode = new ArrayList<>();
        //把所有菜单的list集合遍历,得到顶层菜单 pid= 0的菜单,设置level是1
        for (Permission permissionNode : permissionList) {
            if ("0".equals(permissionNode.getPid())){
                permissionNode.setLevel(1);
                //根据顶层菜单,向里面继续查询子菜单,封装到finalNode中
                finalNode.add(selectChilren(permissionNode,permissionList));
            }
        }
        return finalNode;
    }
    private static Permission selectChilren(Permission permissionNode, List<Permission> permissionList) {
        //因为向一级菜单放入二级菜单,二级菜单放三级菜单,因此初始化一个list数组
        permissionNode.setChildren(new ArrayList<Permission>());
        //遍历所有菜单的list集合进行判断id和pid的值是否相同
        for (Permission it : permissionList) {
            //判断一级菜单的id和二级菜单的pid是否相同
            if (permissionNode.getId().equals(it.getPid())){
                //把夫菜单的level值+1
                int level = permissionNode.getLevel() +1 ;
                it.setLevel(level);
                //把查询出的子菜单放到夫菜单中
                permissionNode.getChildren().add(selectChilren(it,permissionList));
            }
        }
        return permissionNode;
    }

 

相关文章
|
1月前
|
安全 数据安全/隐私保护
什么是权限管理
什么是权限管理
38 0
什么是权限管理
|
1月前
|
安全 Java 应用服务中间件
实现权限管理的技术
实现权限管理的技术
29 0
|
5月前
|
Kubernetes 安全 数据安全/隐私保护
k8s-权限管理
k8s-权限管理
44 1
|
数据安全/隐私保护
权限管理详解
权限管理详解
119 1
|
SQL 安全 关系型数据库
第03章 用户与权限管理
第03章 用户与权限管理
109 0
|
存储 安全 Java
权限管理介绍|学习笔记
快速学习权限管理介绍
权限管理介绍|学习笔记
|
Linux Shell Go
权限管理 | 学习笔记
快速学习权限管理。
 权限管理 | 学习笔记
|
SQL Java 数据库
权限管理系统(四)
前面我们做的小项目都是一个表的,业务代码也相对简单。现在我们来做一个权限管理系统,体验一下多表的业务逻辑,顺便巩固一下过滤器的知识。!
513 2
权限管理系统(四)
|
关系型数据库 MySQL 数据安全/隐私保护
开发指南—权限管理—角色权限管理
本文介绍角色权限管理相关语法级示例。 PolarDB-X兼容原生MySQL 8.0基于橘色的权限控制,请参见基于角色的权限控制。
139 0
|
存储 关系型数据库 MySQL
权限管理
用户权限分为非常多种,包括全局权限、库权限、表权限、列权限等。
154 0