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
:包含操作结果的响应对象。
方法步骤
-
创建响应对象:
AddUserPermissionResponse response = new AddUserPermissionResponse();
-
参数校验:
if (StringUtils.isEmpty(userName) || CollectionUtils.isEmpty(request.getUserPermissionDTOList())) { log.error("新增用户关联索引请求参数为空"); throw new TitanException("所传参数为空!"); }
- 检查
userName
是否为空字符串。 - 检查
userPermissionDTOList
是否为空或为空列表,如果为空则抛出异常。
- 检查
-
查询用户配置:
UserConfig user = queryByUserName(userName);
- 调用
queryByUserName
方法查询用户配置信息。
- 调用
-
处理新用户:
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
)。 - 将新用户信息插入数据库。
- 如果用户不存在,创建一个新的
-
检查全局查询权限:
else if (isGlobalQuery(new QueryUserGlobalQueryRequest(request.getUserName())).getGlobalQueryFlag()) { RespUtils.setError(ErrorCodeEnum.USER_ALREADY_GLOBAL_QUERY, response); return response; }
- 如果用户已存在,调用
isGlobalQuery
方法检查用户是否有全局查询权限。 - 如果用户已有全局查询权限,设置响应对象的错误信息并返回。
- 如果用户已存在,调用
-
获取索引模式ID列表:
List<Long> indexIdList = indexPatternService.getIndexPatternIdByNameList(request.getIndexPatternNameList());
- 调用
indexPatternService.getIndexPatternIdByNameList
方法获取索引模式ID列表。
- 调用
-
添加用户权限:
userPermissionService.addPermissionForUser(request.getUserName(), request.getUserPermissionDTOList());
- 调用
userPermissionService.addPermissionForUser
方法为用户添加权限。
- 调用
-
设置响应对象:
RespUtils.setSuccess(response);
- 设置响应对象的操作成功标志。
-
返回响应对象:
return response;
详细分析
1. 参数校验
- 用户名校验:确保
userName
不为空字符串。 - 权限列表校验:确保
userPermissionDTOList
不为空且不为空列表。
2. 查询用户配置
- 查询用户:调用
queryByUserName
方法查询用户配置信息。
3. 处理新用户
- 创建新用户:如果用户不存在,创建一个新的
UserConfig
对象并设置默认属性。 - 插入数据库:将新用户信息插入数据库。
4. 检查全局查询权限
- 全局查询权限检查:调用
isGlobalQuery
方法检查用户是否有全局查询权限。 - 设置错误信息:如果用户已有全局查询权限,设置响应对象的错误信息并返回。
5. 获取索引模式ID列表
- 调用服务方法:调用
indexPatternService.getIndexPatternIdByNameList
方法获取索引模式ID列表。
6. 添加用户权限
- 调用服务方法:调用
userPermissionService.addPermissionForUser
方法为用户添加权限。
7. 设置响应对象
- 设置成功标志:设置响应对象的操作成功标志。
8. 返回响应对象
- 返回结果:返回包含操作结果的响应对象。
总结
addUserPermission
方法的主要功能是为用户添加权限。具体步骤包括:
- 参数校验:确保请求参数不为空。
- 查询用户配置:查询用户配置信息。
- 处理新用户:如果用户不存在,创建新用户并插入数据库。
- 检查全局查询权限:如果用户已有全局查询权限,设置错误信息并返回。
- 获取索引模式ID列表:获取索引模式ID列表。
- 添加用户权限:调用服务方法为用户添加权限。
- 设置响应对象:设置响应对象的操作成功标志。
- 返回响应对象:返回包含操作结果的响应对象。
通过这个方法,可以有效地管理用户的权限,确保用户能够正确地访问所需的索引和资源。