refactor(接口测试): 接口导出只导出关联的模块信息
--bug=1014652 --user=陈建星 【接口测试】接口定义-选中一个接口导出MS文件-查看该文件中包含该项目的所有模块列表 {#_orginal_url#}
This commit is contained in:
parent
befa6abd2e
commit
0629e803ac
|
@ -1907,34 +1907,32 @@ public class ApiDefinitionService {
|
|||
}
|
||||
|
||||
public ApiExportResult export(ApiBatchRequest request, String type) {
|
||||
ApiExportResult apiExportResult;
|
||||
ServiceUtils.getSelectAllIds(request, request.getCondition(),
|
||||
(query) -> extApiDefinitionMapper.selectIds(query));
|
||||
ApiDefinitionExample example = new ApiDefinitionExample();
|
||||
example.createCriteria().andIdIn(request.getIds());
|
||||
|
||||
List<ApiDefinitionWithBLOBs> apiDefinitions = getByIds(request.getIds());
|
||||
|
||||
if (StringUtils.equals(type, "MS")) { // 导出为 Metersphere 格式
|
||||
MockConfigService mockConfigService = CommonBeanFactory.getBean(MockConfigService.class);
|
||||
apiExportResult = new MsApiExportResult();
|
||||
((MsApiExportResult) apiExportResult).setData(apiDefinitionMapper.selectByExampleWithBLOBs(example));
|
||||
((MsApiExportResult) apiExportResult).setCases(apiTestCaseService.selectCasesBydApiIds(request.getIds()));
|
||||
((MsApiExportResult) apiExportResult).setMocks(mockConfigService.selectMockExpectConfigByApiIdIn(request.getIds()));
|
||||
((MsApiExportResult) apiExportResult).setProjectName(request.getProjectId());
|
||||
((MsApiExportResult) apiExportResult).setProtocol(request.getProtocol());
|
||||
((MsApiExportResult) apiExportResult).setProjectId(request.getProjectId());
|
||||
((MsApiExportResult) apiExportResult).setVersion(System.getenv("MS_VERSION"));
|
||||
if (CollectionUtils.isNotEmpty(((MsApiExportResult) apiExportResult).getData())) {
|
||||
List<String> names = ((MsApiExportResult) apiExportResult).getData().stream().map(ApiDefinitionWithBLOBs::getName).collect(Collectors.toList());
|
||||
MsApiExportResult msApiExportResult = new MsApiExportResult();
|
||||
msApiExportResult.setData(apiDefinitions);
|
||||
msApiExportResult.setCases(apiTestCaseService.selectCasesBydApiIds(request.getIds()));
|
||||
msApiExportResult.setMocks(mockConfigService.selectMockExpectConfigByApiIdIn(request.getIds()));
|
||||
msApiExportResult.setProjectName(request.getProjectId());
|
||||
msApiExportResult.setProtocol(request.getProtocol());
|
||||
msApiExportResult.setProjectId(request.getProjectId());
|
||||
msApiExportResult.setVersion(System.getenv("MS_VERSION"));
|
||||
if (CollectionUtils.isNotEmpty((msApiExportResult).getData())) {
|
||||
List<String> names = (msApiExportResult).getData().stream().map(ApiDefinitionWithBLOBs::getName).collect(Collectors.toList());
|
||||
request.setName(String.join(",", names));
|
||||
List<String> ids = ((MsApiExportResult) apiExportResult).getData().stream().map(ApiDefinitionWithBLOBs::getId).collect(Collectors.toList());
|
||||
List<String> ids = msApiExportResult.getData().stream().map(ApiDefinitionWithBLOBs::getId).collect(Collectors.toList());
|
||||
request.setId(JSON.toJSONString(ids));
|
||||
}
|
||||
return msApiExportResult;
|
||||
} else { // 导出为 Swagger 格式
|
||||
Swagger3Parser swagger3Parser = new Swagger3Parser();
|
||||
apiExportResult = swagger3Parser.swagger3Export(apiDefinitionMapper.selectByExampleWithBLOBs(example));
|
||||
return swagger3Parser.swagger3Export(apiDefinitions);
|
||||
}
|
||||
|
||||
return apiExportResult;
|
||||
}
|
||||
|
||||
public List<ApiDefinition> selectEffectiveIdByProjectId(String projectId) {
|
||||
|
|
|
@ -243,7 +243,7 @@ import {API_DEFINITION_CONFIGS} from "@/business/components/common/components/se
|
|||
import MsTipButton from "@/business/components/common/components/MsTipButton";
|
||||
import CaseBatchMove from "@/business/components/api/definition/components/basis/BatchMove";
|
||||
import {
|
||||
buildBatchParam,
|
||||
buildBatchParam, deepClone,
|
||||
getCustomTableHeader,
|
||||
getCustomTableWidth,
|
||||
getLastTableSortField,
|
||||
|
@ -952,13 +952,44 @@ export default {
|
|||
let obj = response.data;
|
||||
if (type == 'MS') {
|
||||
obj.protocol = this.currentProtocol;
|
||||
obj.nodeTree = nodeTree;
|
||||
obj.nodeTree = this.getExportNodeTree(nodeTree, obj.data);
|
||||
downloadFile("Metersphere_Api_" + this.projectName + ".json", JSON.stringify(obj));
|
||||
} else {
|
||||
downloadFile("Swagger_Api_" + this.projectName + ".json", JSON.stringify(obj));
|
||||
}
|
||||
});
|
||||
},
|
||||
getExportNodeTree(nodeTree, apis) {
|
||||
let idSet = new Set();
|
||||
apis.forEach((item) => {
|
||||
idSet.add(item.moduleId);
|
||||
});
|
||||
let exportTree = deepClone(nodeTree);
|
||||
for (let i = exportTree.length - 1; i >= 0; i--) {
|
||||
if (!this.cutDownTree(exportTree[i], idSet)) {
|
||||
exportTree.splice(i, 1);
|
||||
}
|
||||
}
|
||||
return exportTree;
|
||||
},
|
||||
// 去掉没有数据的模块再导出
|
||||
cutDownTree(nodeTree, nodeIdSet) {
|
||||
let hasData = false;
|
||||
if (nodeIdSet.has(nodeTree.id)) {
|
||||
hasData = true;
|
||||
}
|
||||
let children = nodeTree.children;
|
||||
if (children) {
|
||||
for (let i = children.length - 1; i >= 0; i--) {
|
||||
if (!this.cutDownTree(children[i], nodeIdSet)) {
|
||||
children.splice(i, 1);
|
||||
} else {
|
||||
hasData = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return hasData;
|
||||
},
|
||||
headerDragend(newWidth, oldWidth, column, event) {
|
||||
let finalWidth = newWidth;
|
||||
if (column.minWidth > finalWidth) {
|
||||
|
|
Loading…
Reference in New Issue