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

相关推荐
薛定谔的悦2 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
新时代牛马6 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
Julien20046 小时前
控制 SELinux 文件上下文
linux·运维·服务器
EXI-小洲6 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
sulikey6 小时前
Linux Core Dump 完全指南:从原理到实战的崩溃调试手册。什么是core dump?程序报错core dumped怎么办?
linux·服务器·操作系统·调试·coredump
Lifangyun_WD6 小时前
第一次租 GPU 服务器怎么开始?镜像、SSH、数据存储和停机前要做什么
服务器·云计算·gpu算力·gpu算力租赁
2601_961901707 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
DevLoom_7 小时前
SD卡插电脑提示:驱动器中的磁盘未被格式化?恢复数据正确处理步骤
运维·服务器·电脑
何以解忧,唯有..8 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290968 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端