尚上优选 微服务项目-----权限管理模块,为角色分配权限
这个功能是借鉴之前为用户分配角色功能进行开发的,要注意的是这个功能的查看角色的权限列表的实现方式和为用户分配角色功能查看角色列表的实现方式大同小异,但是在返回的类型上是有区别的,这里使用的方式是遍历所有的权限列表,将角色拥有的权限的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);
}
720

被折叠的 条评论
为什么被折叠?



