好的,根据您提供的文档内容,我提取了 queryIndicesBySystemAndApplication
方法,并对其进行详细分析。以下是提取的方法及其相关部分:
提取的 queryIndicesBySystemAndApplication
方法
@Override
public QueryIndicesBySystemAndApplicationResponse queryIndicesBySystemAndApplication(QueryIndicesBySystemAndApplicationRequest request) {QueryIndicesBySystemAndApplicationResponse response = new QueryIndicesBySystemAndApplicationResponse();String userName = request.getUserName();if (StringUtils.isEmpty(userName)) {log.error("查询用户关联索引请求参数为空");throw new TitanException("所传参数为空!");}UserConfig user = userService.queryByUserName(userName);if (user == null) {RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);return response;}QueryFinTechUserRequest userRequest = new QueryFinTechUserRequest();List<String> userNameList = new ArrayList<>();userNameList.add(userName);userRequest.setUserNameList(userNameList);UserInfoResponse userInfoResponse = finTechDataProviderService.queryFinTechUserInfo(userRequest);String departmentId = userInfoResponse.getUserList().get(0).getOrgId();Department department = departmentService.getDepartmentById(departmentId);int isGlobal = 0;if (user.getGlobalQuery() || (department != null && department.getGlobalQuery())) {isGlobal = 1;}PageHelper.startPage(request.getPageIndex(), request.getPageLimit());PageInfo<IndexPattern> pageInfo = new PageInfo<>(indexPatternMapper.selectIndexByApplicationAndSystemId(request.getIndexName(),request.getApplicationName(),request.getSystemIdList(),isGlobal,userName,departmentId));List<IndexPatternItem> indexPatternItemList = new ArrayList<>();pageInfo.getList().forEach(userIndex -> {IndexPatternItem item = new IndexPatternItem();item.setSystemId(userIndex.getSystemId());item.setApplicationName(userIndex.getApplicationName());item.setIndexPatternName(userIndex.getIndexPatternName());item.setId(userIndex.getId());indexPatternItemList.add(item);});response.setIndicesList(indexPatternItemList);response.setTotal(pageInfo.getTotal());response.setSuccess();return response;
}
方法分析
输入参数
QueryIndicesBySystemAndApplicationRequest request
:包含请求参数,主要包括userName
(用户名)、pageIndex
(当前页码)、pageLimit
(每页显示的记录数)、indexName
(索引名称)、applicationName
(应用名称)和systemIdList
(系统ID列表)。
输出参数
QueryIndicesBySystemAndApplicationResponse response
:包含查询结果的响应对象,包括分页信息和查询到的IndexPatternItem
列表。
方法步骤
-
创建响应对象:
QueryIndicesBySystemAndApplicationResponse response = new QueryIndicesBySystemAndApplicationResponse();
-
获取用户名:
String userName = request.getUserName();
-
参数校验:
if (StringUtils.isEmpty(userName)) {log.error("查询用户关联索引请求参数为空");throw new TitanException("所传参数为空!"); }
- 检查
userName
是否为空,如果为空则抛出异常并记录日志。
- 检查
-
查询用户配置:
UserConfig user = userService.queryByUserName(userName); if (user == null) {RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);return response; }
- 调用
userService.queryByUserName
方法查询用户配置。 - 如果用户不存在,设置响应对象的错误信息并返回。
- 调用
-
查询用户信息:
QueryFinTechUserRequest userRequest = new QueryFinTechUserRequest(); List<String> userNameList = new ArrayList<>(); userNameList.add(userName); userRequest.setUserNameList(userNameList);UserInfoResponse userInfoResponse = finTechDataProviderService.queryFinTechUserInfo(userRequest); String departmentId = userInfoResponse.getUserList().get(0).getOrgId(); Department department = departmentService.getDepartmentById(departmentId);
- 创建
QueryFinTechUserRequest
对象并设置用户名列表。 - 调用
finTechDataProviderService.queryFinTechUserInfo
方法查询用户信息。 - 获取用户的部门ID并查询部门信息。
- 创建
-
判断是否全局查询:
int isGlobal = 0; if (user.getGlobalQuery() || (department != null && department.getGlobalQuery())) {isGlobal = 1; }
- 根据用户配置和部门配置判断是否允许全局查询。
-
设置分页参数并执行查询:
PageHelper.startPage(request.getPageIndex(), request.getPageLimit()); PageInfo<IndexPattern> pageInfo = new PageInfo<>(indexPatternMapper.selectIndexByApplicationAndSystemId(request.getIndexName(),request.getApplicationName(),request.getSystemIdList(),isGlobal,userName,departmentId ));
- 使用
PageHelper
设置分页参数。 - 调用
indexPatternMapper.selectIndexByApplicationAndSystemId
方法执行查询,并获取分页结果。
- 使用
-
转换查询结果:
List<IndexPatternItem> indexPatternItemList = new ArrayList<>(); pageInfo.getList().forEach(userIndex -> {IndexPatternItem item = new IndexPatternItem();item.setSystemId(userIndex.getSystemId());item.setApplicationName(userIndex.getApplicationName());item.setIndexPatternName(userIndex.getIndexPatternName());item.setId(userIndex.getId());indexPatternItemList.add(item); });
- 创建一个新的
List<IndexPatternItem>
对象。 - 遍历查询结果,将每个
IndexPattern
对象转换为IndexPatternItem
对象,并添加到indexPatternItemList
中。
- 创建一个新的
-
设置响应结果:
response.setIndicesList(indexPatternItemList); response.setTotal(pageInfo.getTotal()); response.setSuccess();
- 将查询结果列表和总记录数设置到响应对象中。
- 设置响应对象的成功状态。
-
返回响应对象:
return response;
总结
queryIndicesBySystemAndApplication
方法的主要功能是根据用户名和相关参数查询索引模式,并将结果以分页形式返回。具体步骤包括:
- 参数校验:确保传入的用户名不为空。
- 查询用户配置:根据用户名查询用户配置。
- 查询用户信息:查询用户的详细信息,包括所属部门。
- 判断是否全局查询:根据用户和部门配置判断是否允许全局查询。
- 设置分页参数并执行查询:使用
PageHelper
设置分页参数,并调用 Mapper 方法执行查询。 - 转换查询结果:将查询结果转换为
IndexPatternItem
列表。 - 设置响应结果:将查询结果和分页信息设置到响应对象中,并设置成功状态。
- 返回响应对象:返回包含查询结果的响应对象。