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
(永久有效期标志)。
方法步骤
-
创建响应对象:
QueryUserGlobalQueryResponse response = new QueryUserGlobalQueryResponse();
-
参数校验:
if (StringUtils.isEmpty(userName)) { log.error("查询用户全局查询权限请求参数为空"); throw new TitanException("所传参数为空!"); }
- 检查
userName
是否为空字符串,如果为空则抛出异常。
- 检查
-
查询用户配置:
UserConfig user = queryByUserName(userName);
- 调用
queryByUserName
方法查询用户配置信息。
- 调用
-
处理用户不存在的情况:
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; } }
- 如果用户有全局查询权限且有效期和永久有效期标志不为空:
- 检查有效期是否已过期,如果已过期则将全局查询标志设置为
false
。
- 检查有效期是否已过期,如果已过期则将全局查询标志设置为
- 如果用户有全局查询权限且有效期和永久有效期标志不为空:
-
设置响应对象:
response.setGlobalQueryFlag(globalQueryFlag); response.setEffectiveDate(user.getQueryEffectiveDate()); response.setPermanentFlag(user.getQueryPermanentFlag()); RespUtils.setSuccess(response);
- 设置响应对象的全局查询标志、有效期和永久有效期标志。
- 设置响应对象的操作成功标志。
-
返回响应对象:
return response;
详细分析
1. 参数校验
- 用户名校验:确保
userName
不为空字符串。
2. 查询用户配置
- 查询用户:调用
queryByUserName
方法查询用户配置信息。
3. 处理用户不存在的情况
- 设置错误信息:如果用户不存在,设置响应对象的错误信息并返回。
4. 获取全局查询标志
- 获取标志:获取用户的全局查询标志。
5. 检查有效期
- 有效期检查:如果用户有全局查询权限且有效期和永久有效期标志不为空,检查有效期是否已过期,如果已过期则将全局查询标志设置为
false
。
6. 设置响应对象
- 设置标志:设置响应对象的全局查询标志、有效期和永久有效期标志。
- 设置成功标志:设置响应对象的操作成功标志。
7. 返回响应对象
- 返回结果:返回包含查询结果的响应对象。
总结
isGlobalQuery
方法的主要功能是查询用户的全局查询权限状态。具体步骤包括:
- 参数校验:确保请求参数不为空。
- 查询用户配置:查询用户配置信息。
- 处理用户不存在的情况:如果用户不存在,设置错误信息并返回。
- 获取全局查询标志:获取用户的全局查询标志。
- 检查有效期:检查有效期是否已过期,如果已过期则更新全局查询标志。
- 设置响应对象:设置响应对象的查询结果和成功标志。
- 返回响应对象:返回包含查询结果的响应对象。
通过这个方法,可以有效地查询用户的全局查询权限状态,确保系统能够正确地管理和验证用户的权限。