diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/parse/SwaggerAbstractParser.java b/backend/src/main/java/io/metersphere/api/dto/definition/parse/SwaggerAbstractParser.java index 1628c96045..825459f9c8 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/parse/SwaggerAbstractParser.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/parse/SwaggerAbstractParser.java @@ -19,15 +19,32 @@ public abstract class SwaggerAbstractParser extends ApiImportAbstractParser { - ApiModule module = ApiDefinitionImportUtil.buildModule(parentModule, tag, this.projectId); - apiDefinition.setModuleId(module.getId()); - if (StringUtils.isNotBlank(selectModulePath)) { - apiDefinition.setModulePath(selectModulePath + "/" + tag); + // 涉及到多级目录的结构,如: 一级目录/二级目录 + if (tag.contains("/")) { + String[] tagTree = tag.split("/"); + ApiModule pModule = parentModule; + String prefix = selectModulePath; + for (String item : tagTree) { + pModule = buildModule(pModule, apiDefinition, item, prefix); + prefix += "/" + item; + } } else { - apiDefinition.setModulePath("/" + tag); + buildModule(parentModule, apiDefinition, tag, selectModulePath); } }); } } + private ApiModule buildModule(ApiModule parentModule, ApiDefinitionWithBLOBs apiDefinition, + String tag, String selectModulePath) { + ApiModule module = ApiDefinitionImportUtil.buildModule(parentModule, tag, this.projectId); + apiDefinition.setModuleId(module.getId()); + if (StringUtils.isNotBlank(selectModulePath)) { + apiDefinition.setModulePath(selectModulePath + "/" + tag); + } else { + apiDefinition.setModulePath("/" + tag); + } + return module; + } + }