permission业务

190 阅读1分钟

一、permission业务概括

  1. 查询权限列表:查询出全部的权限,然后要根据level递归构建权限结构
  2. 查询权限:通过仓库获取permission对象
  3. 新增权限:验证参数是否符合要求,验证角色名称、编码是否存在,存储role,保存role与permission关系(对于role对象的获取通过工厂或仓库)
  4. 修改权限:验证参数是否符合要求,验证角色名称、编码是否存在、判断当前修改者与创建者是否一致,根据id列表删除角色与菜单关系,再存储角色与菜单新关系
  5. 删除权限:判断当前删除者与创建者是否一致,删除角色、角色与菜单的关联、角色与用户的关系

二、查询全部菜单

接口层

/**
 * 所有权限列表
 */
@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);
}