尚上优选SpringBoot微服务项目-----权限管理模块,为角色分配权限

尚上优选 微服务项目-----权限管理模块,为角色分配权限

这个功能是借鉴之前为用户分配角色功能进行开发的,要注意的是这个功能的查看角色的权限列表的实现方式和为用户分配角色功能查看角色列表的实现方式大同小异,但是在返回的类型上是有区别的,这里使用的方式是遍历所有的权限列表,将角色拥有的权限的select属性置为true并且使用PermissionHelper类进行封装成树状结构返回List类型数据。
这里给大家提供一个思路,希望能帮助到大家!求赞!

废话不多说,直接上代码!

  • Service层
    /**
     * 根据角色id查询菜单数据
     * @param roleId
     * @return
     */

    List<Permission> getRolePermission(Long roleId);

    /**
     * 为角色分配权限
     * @param roleId
     * @param permissionId
     */

    void saveRolePermission(Long roleId, Long[] permissionId);
  • ServiceImpl
/**
     * 根据角色id查询菜单数据
     *
     * @param roleId
     * @return
     */
    @Override
    public List<Permission> getRolePermission(Long roleId) {
        //查询所有菜单数据
        List<Permission> allPermissions = permissionMapper.selectList(null);
        //查询角色已经拥有的菜单数据
        LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(RolePermission::getRoleId,roleId);
        List<RolePermission> exitPermission = rolePermissionService.list(queryWrapper);
        List<Long> list = exitPermission.stream().map(item -> item.getPermissionId()).collect(Collectors.toList());

        //遍历所有角色列表,将已经有的权限再角色列表中select属性置为true
        for (Permission permission : allPermissions){
            if (list.contains(permission.getId())){
                permission.setSelect(true);
            }
        }
        List<Permission> bulidList = PermissionHelper.bulid(allPermissions);
        return bulidList;
    }

    @Override
    public void saveRolePermission(Long roleId, Long[] permissionIds) {
        //删除原来的权限数据
        LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(RolePermission::getRoleId,roleId);
        rolePermissionService.remove(queryWrapper);
        List<RolePermission> permissionList = new ArrayList<>();
        for (Long permissionId : permissionIds){
            if (StringUtils.isEmpty(permissionId)){
                continue;
            }
            RolePermission rolePermission = new RolePermission();
            rolePermission.setRoleId(roleId);
            rolePermission.setPermissionId(permissionId);
            permissionList.add(rolePermission);
        }
        rolePermissionService.saveBatch(permissionList);

    }
  • Controller层
@ApiOperation("查看角色拥有的权限")
    @GetMapping("/toAssign/{roleId}")
    public Result getAssign(@PathVariable Long roleId){
        List<Permission> rolePermission = permissionService.getRolePermission(roleId);
        return Result.success(rolePermission);
    }

    @ApiOperation("为角色分配权限")
    @PostMapping("/doAssign")
    public Result doAssignRoles(@RequestParam Long roleId,@RequestParam Long[] permissionId){
        permissionService.saveRolePermission(roleId,permissionId);
        return Result.success(null);
    }
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值