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

相关推荐
2401_8920709818 小时前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
云烟成雨TD18 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
lwx91485218 小时前
Linux-Shell算术运算
linux·运维·服务器
于慨18 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132118 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
somi718 小时前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
gelald18 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川18 小时前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月18 小时前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得
chenjingming66618 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter