IndexPatternService 通过应用,系统名索引名模糊查询索引 queryindicesBySystemAndApplication分析

好的,根据您提供的文档内容,我提取了 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 列表。

方法步骤

  1. 创建响应对象

    QueryIndicesBySystemAndApplicationResponse response = new QueryIndicesBySystemAndApplicationResponse();
    
  2. 获取用户名

    String userName = request.getUserName();
    
  3. 参数校验

    if (StringUtils.isEmpty(userName)) {
        log.error("查询用户关联索引请求参数为空");
        throw new TitanException("所传参数为空!");
    }
    
    • 检查 userName 是否为空,如果为空则抛出异常并记录日志。
  4. 查询用户配置

    UserConfig user = userService.queryByUserName(userName);
    if (user == null) {
        RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);
        return response;
    }
    
    • 调用 userService.queryByUserName 方法查询用户配置。
    • 如果用户不存在,设置响应对象的错误信息并返回。
  5. 查询用户信息

    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并查询部门信息。
  6. 判断是否全局查询

    int isGlobal = 0;
    if (user.getGlobalQuery() || (department != null && department.getGlobalQuery())) {
        isGlobal = 1;
    }
    
    • 根据用户配置和部门配置判断是否允许全局查询。
  7. 设置分页参数并执行查询

    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 方法执行查询,并获取分页结果。
  8. 转换查询结果

    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 中。
  9. 设置响应结果

    response.setIndicesList(indexPatternItemList);
    response.setTotal(pageInfo.getTotal());
    response.setSuccess();
    
    • 将查询结果列表和总记录数设置到响应对象中。
    • 设置响应对象的成功状态。
  10. 返回响应对象

    return response;
    

总结

queryIndicesBySystemAndApplication 方法的主要功能是根据用户名和相关参数查询索引模式,并将结果以分页形式返回。具体步骤包括:

  1. 参数校验:确保传入的用户名不为空。
  2. 查询用户配置:根据用户名查询用户配置。
  3. 查询用户信息:查询用户的详细信息,包括所属部门。
  4. 判断是否全局查询:根据用户和部门配置判断是否允许全局查询。
  5. 设置分页参数并执行查询:使用 PageHelper 设置分页参数,并调用 Mapper 方法执行查询。
  6. 转换查询结果:将查询结果转换为 IndexPatternItem 列表。
  7. 设置响应结果:将查询结果和分页信息设置到响应对象中,并设置成功状态。
  8. 返回响应对象:返回包含查询结果的响应对象。
posted @ 2024-11-21 00:24  一曲微茫  阅读(6)  评论(0编辑  收藏  举报