UserService 添加用户关联索引 addUserPermission 分析

好的,根据您提供的 userService.docx 文档内容,我提取了 addUserPermission 方法,并对其进行详细分析。以下是提取的方法及其相关部分:

提取的 addUserPermission 方法

@Override
@Transactional(rollbackFor = Exception.class)
public AddUserPermissionResponse addUserPermission(AddUserPermissionRequest request) {
    String userName = request.getUserName();
    AddUserPermissionResponse response = new AddUserPermissionResponse();
    if (StringUtils.isEmpty(userName) || CollectionUtils.isEmpty(request.getUserPermissionDTOList())) {
        log.error("新增用户关联索引请求参数为空");
        throw new TitanException("所传参数为空!");
    }
    UserConfig user = queryByUserName(userName);
    if (user == null) {
        UserConfig userNew = new UserConfig();
        userNew.setUserName(userName);
        userNew.setCreateTime(new Date());
        userNew.setGlobalQuery(false);
        // 新增设置默认管理员权限为 false
        userNew.setAdministratorFlag(false);
        // 新增结束
        userConfigMapper.insert(userNew);
    } else if (isGlobalQuery(new QueryUserGlobalQueryRequest(request.getUserName())).getGlobalQueryFlag()) {
        RespUtils.setError(ErrorCodeEnum.USER_ALREADY_GLOBAL_QUERY, response);
        return response;
    }
    // 获取索引模式ID列表
    List<Long> indexIdList = indexPatternService.getIndexPatternIdByNameList(request.getIndexPatternNameList());
    userPermissionService.addPermissionForUser(request.getUserName(), request.getUserPermissionDTOList());
    RespUtils.setSuccess(response);
    return response;
}

方法分析

输入参数

  • AddUserPermissionRequest request:包含请求参数,主要包括 userName(用户名)和 userPermissionDTOList(用户权限DTO列表)。

输出参数

  • AddUserPermissionResponse response:包含操作结果的响应对象。

方法步骤

  1. 创建响应对象

    AddUserPermissionResponse response = new AddUserPermissionResponse();
    
  2. 参数校验

    if (StringUtils.isEmpty(userName) || CollectionUtils.isEmpty(request.getUserPermissionDTOList())) {
        log.error("新增用户关联索引请求参数为空");
        throw new TitanException("所传参数为空!");
    }
    
    • 检查 userName 是否为空字符串。
    • 检查 userPermissionDTOList 是否为空或为空列表,如果为空则抛出异常。
  3. 查询用户配置

    UserConfig user = queryByUserName(userName);
    
    • 调用 queryByUserName 方法查询用户配置信息。
  4. 处理新用户

    if (user == null) {
        UserConfig userNew = new UserConfig();
        userNew.setUserName(userName);
        userNew.setCreateTime(new Date());
        userNew.setGlobalQuery(false);
        // 新增设置默认管理员权限为 false
        userNew.setAdministratorFlag(false);
        // 新增结束
        userConfigMapper.insert(userNew);
    }
    
    • 如果用户不存在,创建一个新的 UserConfig 对象 userNew,设置用户名、创建时间和默认权限(全局查询权限为 false,管理员权限为 false)。
    • 将新用户信息插入数据库。
  5. 检查全局查询权限

    else if (isGlobalQuery(new QueryUserGlobalQueryRequest(request.getUserName())).getGlobalQueryFlag()) {
        RespUtils.setError(ErrorCodeEnum.USER_ALREADY_GLOBAL_QUERY, response);
        return response;
    }
    
    • 如果用户已存在,调用 isGlobalQuery 方法检查用户是否有全局查询权限。
    • 如果用户已有全局查询权限,设置响应对象的错误信息并返回。
  6. 获取索引模式ID列表

    List<Long> indexIdList = indexPatternService.getIndexPatternIdByNameList(request.getIndexPatternNameList());
    
    • 调用 indexPatternService.getIndexPatternIdByNameList 方法获取索引模式ID列表。
  7. 添加用户权限

    userPermissionService.addPermissionForUser(request.getUserName(), request.getUserPermissionDTOList());
    
    • 调用 userPermissionService.addPermissionForUser 方法为用户添加权限。
  8. 设置响应对象

    RespUtils.setSuccess(response);
    
    • 设置响应对象的操作成功标志。
  9. 返回响应对象

    return response;
    

详细分析

1. 参数校验

  • 用户名校验:确保 userName 不为空字符串。
  • 权限列表校验:确保 userPermissionDTOList 不为空且不为空列表。

2. 查询用户配置

  • 查询用户:调用 queryByUserName 方法查询用户配置信息。

3. 处理新用户

  • 创建新用户:如果用户不存在,创建一个新的 UserConfig 对象并设置默认属性。
  • 插入数据库:将新用户信息插入数据库。

4. 检查全局查询权限

  • 全局查询权限检查:调用 isGlobalQuery 方法检查用户是否有全局查询权限。
  • 设置错误信息:如果用户已有全局查询权限,设置响应对象的错误信息并返回。

5. 获取索引模式ID列表

  • 调用服务方法:调用 indexPatternService.getIndexPatternIdByNameList 方法获取索引模式ID列表。

6. 添加用户权限

  • 调用服务方法:调用 userPermissionService.addPermissionForUser 方法为用户添加权限。

7. 设置响应对象

  • 设置成功标志:设置响应对象的操作成功标志。

8. 返回响应对象

  • 返回结果:返回包含操作结果的响应对象。

总结

addUserPermission 方法的主要功能是为用户添加权限。具体步骤包括:

  1. 参数校验:确保请求参数不为空。
  2. 查询用户配置:查询用户配置信息。
  3. 处理新用户:如果用户不存在,创建新用户并插入数据库。
  4. 检查全局查询权限:如果用户已有全局查询权限,设置错误信息并返回。
  5. 获取索引模式ID列表:获取索引模式ID列表。
  6. 添加用户权限:调用服务方法为用户添加权限。
  7. 设置响应对象:设置响应对象的操作成功标志。
  8. 返回响应对象:返回包含操作结果的响应对象。

通过这个方法,可以有效地管理用户的权限,确保用户能够正确地访问所需的索引和资源。

posted @ 2024-11-21 00:48  一曲微茫  阅读(7)  评论(0编辑  收藏  举报