一、permission业务概括
- 查询权限列表:查询出全部的权限,然后要根据level递归构建权限结构
- 查询权限:通过仓库获取permission对象
- 新增权限:验证参数是否符合要求,验证角色名称、编码是否存在,存储role,保存role与permission关系(对于role对象的获取通过工厂或仓库)
- 修改权限:验证参数是否符合要求,验证角色名称、编码是否存在、判断当前修改者与创建者是否一致,根据id列表删除角色与菜单关系,再存储角色与菜单新关系
- 删除权限:判断当前删除者与创建者是否一致,删除角色、角色与菜单的关联、角色与用户的关系
二、查询全部菜单
接口层
/**
* 所有权限列表
*/
@ApiOperation("所有权限列表")
@GetMapping("/list")
public Result list() {
List<PermissionDTO> permissionList = permissionQueryService.listAllPermission();
return Result.ok().put("permissionList", permissionList);
}
应用层服务
@Override
public List<PermissionDTO> listAllPermission() {
List<Permission> permissionList;
HashMap<String,Object> params = new HashMap<String,Object>();
permissionList = permissionRepository.queryList(params);
List<Permission> PermissionList = new ArrayList<Permission>();
for(Permission permission : permissionList){
if(permission.getPermissionLevel().equals(0)){
permission.selectChildren(permissionList);
PermissionList.add(permission);
}
}
return PermissionDTOAssembler.getPermissionList(permissionList);
}
领域层聚合
public List<Permission> selectChildren(List<Permission> permissionList){
List<Permission> PermissionList = new ArrayList<Permission>();
for(Permission permission : permissionList){
if(permission.parent.equals(this.permissionLevel)){
permission.permissionLevel = this.getPermissionLevel().getValue() + 1;
permission.selectChildren(permissionList);
PermissionList.add(permission);
}
}
return PermissionList;
}
三、查询权限
接口层
/**
* 权限信息
*/
@ApiOperation("权限信息")
@GetMapping("/info/{id}")
@PreAuthorize("hasAuthority('sys:permission:info')")
public Result info(@PathVariable("id") String id) {
PermissionDTO permission = permissionQueryService.getById(id);
return Result.ok().put("permission", permission);
}
应用层服务
@Override
public PermissionDTO getById(String id) {
Permission permission = permissionRepository.find(new PermissionId(id));
return PermissionDTOAssembler.fromPermission(permission);
}