UserService 查询用户查询权限 isGlobalQuery分析

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

提取的 isGlobalQuery 方法

@Override
public QueryUserGlobalQueryResponse isGlobalQuery(QueryUserGlobalQueryRequest request) {
    String userName = request.getUserName();
    QueryUserGlobalQueryResponse response = new QueryUserGlobalQueryResponse();
    if (StringUtils.isEmpty(userName)) {
        log.error("查询用户全局查询权限请求参数为空");
        throw new TitanException("所传参数为空!");
    }
    UserConfig user = queryByUserName(userName);
    if (user == null) {
        RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);
        return response;
    }
    Boolean globalQueryFlag = user.getGlobalQuery();
    if (globalQueryFlag && user.getQueryPermanentFlag() != null && user.getQueryEffectiveDate() != null) {
        if (!user.getQueryPermanentFlag() && user.getQueryEffectiveDate().before(new Date())) {
            globalQueryFlag = false;
        }
    }
    response.setGlobalQueryFlag(globalQueryFlag);
    response.setEffectiveDate(user.getQueryEffectiveDate());
    response.setPermanentFlag(user.getQueryPermanentFlag());
    RespUtils.setSuccess(response);
    return response;
}

方法分析

输入参数

  • QueryUserGlobalQueryRequest request:包含请求参数,主要包括 userName(用户名)。

输出参数

  • QueryUserGlobalQueryResponse response:包含查询结果的响应对象,主要字段有 globalQueryFlag(全局查询标志)、effectiveDate(有效期)和 permanentFlag(永久有效期标志)。

方法步骤

  1. 创建响应对象

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

    if (StringUtils.isEmpty(userName)) {
        log.error("查询用户全局查询权限请求参数为空");
        throw new TitanException("所传参数为空!");
    }
    
    • 检查 userName 是否为空字符串,如果为空则抛出异常。
  3. 查询用户配置

    UserConfig user = queryByUserName(userName);
    
    • 调用 queryByUserName 方法查询用户配置信息。
  4. 处理用户不存在的情况

    if (user == null) {
        RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);
        return response;
    }
    
    • 如果用户不存在,设置响应对象的错误信息并返回。
  5. 获取全局查询标志

    Boolean globalQueryFlag = user.getGlobalQuery();
    
    • 获取用户的全局查询标志。
  6. 检查有效期

    if (globalQueryFlag && user.getQueryPermanentFlag() != null && user.getQueryEffectiveDate() != null) {
        if (!user.getQueryPermanentFlag() && user.getQueryEffectiveDate().before(new Date())) {
            globalQueryFlag = false;
        }
    }
    
    • 如果用户有全局查询权限且有效期和永久有效期标志不为空:
      • 检查有效期是否已过期,如果已过期则将全局查询标志设置为 false
  7. 设置响应对象

    response.setGlobalQueryFlag(globalQueryFlag);
    response.setEffectiveDate(user.getQueryEffectiveDate());
    response.setPermanentFlag(user.getQueryPermanentFlag());
    RespUtils.setSuccess(response);
    
    • 设置响应对象的全局查询标志、有效期和永久有效期标志。
    • 设置响应对象的操作成功标志。
  8. 返回响应对象

    return response;
    

详细分析

1. 参数校验

  • 用户名校验:确保 userName 不为空字符串。

2. 查询用户配置

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

3. 处理用户不存在的情况

  • 设置错误信息:如果用户不存在,设置响应对象的错误信息并返回。

4. 获取全局查询标志

  • 获取标志:获取用户的全局查询标志。

5. 检查有效期

  • 有效期检查:如果用户有全局查询权限且有效期和永久有效期标志不为空,检查有效期是否已过期,如果已过期则将全局查询标志设置为 false

6. 设置响应对象

  • 设置标志:设置响应对象的全局查询标志、有效期和永久有效期标志。
  • 设置成功标志:设置响应对象的操作成功标志。

7. 返回响应对象

  • 返回结果:返回包含查询结果的响应对象。

总结

isGlobalQuery 方法的主要功能是查询用户的全局查询权限状态。具体步骤包括:

  1. 参数校验:确保请求参数不为空。
  2. 查询用户配置:查询用户配置信息。
  3. 处理用户不存在的情况:如果用户不存在,设置错误信息并返回。
  4. 获取全局查询标志:获取用户的全局查询标志。
  5. 检查有效期:检查有效期是否已过期,如果已过期则更新全局查询标志。
  6. 设置响应对象:设置响应对象的查询结果和成功标志。
  7. 返回响应对象:返回包含查询结果的响应对象。

通过这个方法,可以有效地查询用户的全局查询权限状态,确保系统能够正确地管理和验证用户的权限。

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