使用递归的方式删除菜单

简介: 使用递归的方式删除菜单
//递归删除菜单
@Override
public void removeChildByIdGuli(String id) {
    //创建list集合,用于封装所有删除菜单的id值
    List<String> idList = new ArrayList<>();
    //向idList集合设置删除菜单id
    this.selectPermissionChildById(id,idList);
    //把当前id封装到id里面
    idList.add(id);
    baseMapper.deleteBatchIds(idList);
}
//根据当前菜单id,查询菜单里面子菜单id,封装到list集合中
private void selectPermissionChildById(String id,List<String> idList) {
    //查询菜单里的子id
    QueryWrapper<Permission> wrapper = new QueryWrapper<>();
    wrapper.eq("pid",id);
    wrapper.select("id");
    List<Permission> childIdList = baseMapper.selectList(wrapper);
    //childIdList里面菜单id值获取出来,封装到idList里面,并且要做递归的操作
    childIdList.stream().forEach(item -> {
         //封装idList里面去
        idList.add(item.getId());
        //递归查询
        this.selectPermissionChildById(item.getId(), idList);
    });
}

给角色分配权限

//给角色分配菜单(权限)
    @Override
    public void saveRolePermissionRealtionShipGuli(String roleId, String[] permissionId) {
        //创建一个list集合用于最后封装添加数据
        List<RolePermission> rolePermissionList = new ArrayList<>();
        //遍历所有的菜单数组
        for (String perId : permissionId) {
            RolePermission rolePermission = new RolePermission();
            rolePermission.setRoleId(roleId);
            rolePermission.setPermissionId(perId);
            //封装到list集合
            rolePermissionList.add(rolePermission);
        }
        //添加到角色菜单关系表
        rolePermissionService.saveBatch(rolePermissionList);
    }
相关文章
|
4月前
|
前端开发 数据库
Tree树形控件--删除分级菜单中的某一个、删除后的树形结构仍然是对应目录下的展开效果、二次删除确认、删除成功提示
这篇文章提供了一种删除Tree树形控件中分级菜单项的方法,包括实现流程、代码示例和操作效果展示,涉及二次确认和删除成功提示。
|
7月前
|
微服务
【若依】 若依框架 删除左侧无用菜单报错 ‘菜单已分配,不允许删除’
【若依】 若依框架 删除左侧无用菜单报错 ‘菜单已分配,不允许删除’
1361 2
scrollIntoView()定位元素显示导致页面上移解决方法?
scrollIntoView()定位元素显示导致页面上移解决方法?
598 0
|
JSON JavaScript 数据格式
Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
80 1
|
小程序 JavaScript
小程序循环列表删除当前选中列表的方法
小程序循环列表删除当前选中列表的方法
114 0
|
前端开发
后台添加菜单信息如何在前端循环遍历?
后台添加菜单信息如何在前端循环遍历?
46 0
|
存储
图解LeetCode——1233. 删除子文件夹
图解LeetCode——1233. 删除子文件夹
88 0
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
2248 0
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
|
数据安全/隐私保护 开发者 微服务
权限管理-查询所有菜单(递归) | 学习笔记
快速学习 权限管理-查询所有菜单(递归)