修改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请求示例(每个项目默认会有一个未规划接口)

相关推荐
CHrisFC1 小时前
环境第三方检测机构LIMS系统选型:从合规基础到效率制胜
java·大数据·人工智能
么么...1 小时前
布隆过滤器详解:原理、实现与应用
java·数据结构·哈希算法·散列表
☀Mark_LY2 小时前
java读取excel文件返回JSON
java·json·excel
猫猫的小茶馆2 小时前
【Linux 驱动开发】嵌入式 Linux 开发概念
linux·服务器·arm开发·stm32·单片机·嵌入式硬件·mcu
还不秃顶的计科生2 小时前
查看linux服务器中某文件夹占用空间大小
服务器·python
ITUnicorn2 小时前
【Vue2+SpringBoot在线商城】13-本项目运用到的技术
java·spring boot·redis·后端
“αβ”2 小时前
UDP与TCP的区别
linux·运维·服务器·网络·网络协议·tcp/ip·udp
天上飞的粉红小猪2 小时前
应用层自定义协议与序列化
运维·服务器·网络
仰泳之鹅2 小时前
【杂谈】C语言中的链接属性、声明周期以及static关键字
java·c语言·前端