修改MS源码—开发新接口:查询所有项目下面的模块

一、功能需求

MS平台目前只提供通过项目和协议来获取模块。每次服务重启服务时,端口随机产生,不能通过MS平台配置定时任务触发更新swagger接口,需要开发一个新接口满足第三方平台调用MS获取所有项目模块

复制代码
    @GetMapping("/list/{projectId}/{protocol}")
    public List<ApiModuleDTO> getNodeByProjectId(@PathVariable String projectId, @PathVariable String protocol) {
        String userId = SessionUtils.getUserId();
        ApiDefinitionDefaultApiTypeUtil.addUserSelectApiType(userId, protocol);
        return apiModuleService.getNodeTreeByProjectId(projectId, protocol, null);
    }

二、代码处理

复制代码
List<ApiModuleDTO> getNodeTreeByProtocol(@Param("protocol") String protocol);

    public List<ApiModuleDTO> getApiModulesByProtocol(String protocol) {
        return extApiModuleMapper.getNodeTreeByProtocol(protocol);
    }

    /**
     * 获取所有项目下的模块树
     * @param protocol 协议类型
     * @return 所有项目的模块列表
     */
    public List<ApiModuleDTO> getAllNodeTreeByProtocol(String protocol) {
        List<ApiModuleDTO> apiModules = getApiModulesByProtocol(protocol);
        // 按项目ID分组,每个项目单独构建树形结构
        Map<String, List<ApiModuleDTO>> projectModuleMap = apiModules.stream()
                .collect(Collectors.groupingBy(ApiModuleDTO::getProjectId));
        List<ApiModuleDTO> result = new ArrayList<>();
        projectModuleMap.forEach((projectId, modules) -> {
            result.addAll(getNodeTrees(modules));
        });
        return result;
    }

 @GetMapping("/list/all/{protocol}")
    public List<ApiModuleDTO> getAllNodeByProtocol(@PathVariable String protocol) {
        String userId = SessionUtils.getUserId();
        ApiDefinitionDefaultApiTypeUtil.addUserSelectApiType(userId, protocol);
        return apiModuleService.getAllNodeTreeByProtocol(protocol);
    }

三、PostMan请求示例(每个项目默认会有一个未规划接口)

相关推荐
invicinble6 小时前
对linux形成认识
linux·运维·服务器
小Pawn爷6 小时前
14.VMmare安装ubuntu
linux·运维·ubuntu
技术路上的探险家6 小时前
8 卡 V100 服务器:基于 vLLM 的 Qwen 大模型高效部署实战
运维·服务器·语言模型
半桔6 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
绵绵细雨中的乡音6 小时前
深入理解 ET 与 LT 模式及其在 Reactor 模型中的应用
服务器·网络·php
JH30737 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
HABuo7 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
Howrun7777 小时前
关于Linux服务器的协作问题
linux·运维·服务器
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
小白同学_C8 小时前
Lab3-page tables && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os