From a25422c724aac64c8ac957ff08bc5b6f2d25e4ab Mon Sep 17 00:00:00 2001 From: songcc Date: Sat, 11 Jun 2022 14:48:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):=20?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=8B=E6=A8=A1=E5=9D=97=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=88=9B=E5=BB=BA=E9=87=8D=E5=A4=8D=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1013696 --user=宋昌昌 【测试跟踪】github#14110 升级导致模块未规划用例重复问题 https://www.tapd.cn/55049933/s/1179384 --- .../api/service/ApiModuleService.java | 2 - .../api/service/ApiScenarioModuleService.java | 3 -- .../metersphere/base/domain/ModuleNode.java | 1 + .../ProjectModuleDefaultNodeEnum.java | 41 +++++++++++++++++++ .../metersphere/service/ProjectService.java | 41 +++++++++++++++++-- .../track/service/TestCaseNodeService.java | 2 - 6 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 backend/src/main/java/io/metersphere/commons/constants/ProjectModuleDefaultNodeEnum.java diff --git a/backend/src/main/java/io/metersphere/api/service/ApiModuleService.java b/backend/src/main/java/io/metersphere/api/service/ApiModuleService.java index f216abef60..fa22a7b340 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiModuleService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiModuleService.java @@ -73,8 +73,6 @@ public class ApiModuleService extends NodeTreeService { } public List getNodeTreeByProjectId(String projectId, String protocol, String versionId) { - // 判断当前项目下是否有默认模块,没有添加默认模块 - this.getDefaultNode(projectId, protocol); List apiModules = extApiModuleMapper.getNodeTreeByProjectId(projectId, protocol); ApiDefinitionRequest request = new ApiDefinitionRequest(); request.setProjectId(projectId); diff --git a/backend/src/main/java/io/metersphere/api/service/ApiScenarioModuleService.java b/backend/src/main/java/io/metersphere/api/service/ApiScenarioModuleService.java index a5fe23651f..facd30b01c 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiScenarioModuleService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiScenarioModuleService.java @@ -62,9 +62,6 @@ public class ApiScenarioModuleService extends NodeTreeService getNodeTreeByProjectId(String projectId) { - // 判断当前项目下是否有默认模块,没有添加默认模块 - this.getDefaultNode(projectId); - List nodes = extApiScenarioModuleMapper.getNodeTreeByProjectId(projectId); ApiScenarioRequest request = new ApiScenarioRequest(); request.setProjectId(projectId); diff --git a/backend/src/main/java/io/metersphere/base/domain/ModuleNode.java b/backend/src/main/java/io/metersphere/base/domain/ModuleNode.java index 1f2954e1a4..6fa4cf18a6 100644 --- a/backend/src/main/java/io/metersphere/base/domain/ModuleNode.java +++ b/backend/src/main/java/io/metersphere/base/domain/ModuleNode.java @@ -8,4 +8,5 @@ import lombok.Data; @Data public class ModuleNode extends TestCaseNode { private Integer caseNum; + private String protocol; } diff --git a/backend/src/main/java/io/metersphere/commons/constants/ProjectModuleDefaultNodeEnum.java b/backend/src/main/java/io/metersphere/commons/constants/ProjectModuleDefaultNodeEnum.java new file mode 100644 index 0000000000..fc23e57739 --- /dev/null +++ b/backend/src/main/java/io/metersphere/commons/constants/ProjectModuleDefaultNodeEnum.java @@ -0,0 +1,41 @@ +package io.metersphere.commons.constants; + +/** + * 项目模块默认节点 + * @author song-cc + */ +public enum ProjectModuleDefaultNodeEnum { + + /** + * 测试用例默认节点 + */ + TEST_CASE_DEFAULT_NODE("未规划用例", "test_case_node"), + /** + * 接口默认节点 + */ + API_MODULE_DEFAULT_NODE("未规划接口", "api_module"), + /** + * 接口场景默认节点 + */ + API_SCENARIO_DEFAULT_NODE("未规划场景", "api_scenario_module"), + /** + * 接口场景默认节点 + */ + UI_SCENARIO_DEFAULT_NODE("未规划场景", "ui_scenario_module"); + + private String nodeName; + private String tableName; + + ProjectModuleDefaultNodeEnum(String nodeName, String tableName) { + this.nodeName = nodeName; + this.tableName = tableName; + } + + public String getNodeName() { + return nodeName; + } + + public String getTableName() { + return tableName; + } +} diff --git a/backend/src/main/java/io/metersphere/service/ProjectService.java b/backend/src/main/java/io/metersphere/service/ProjectService.java index 4913283129..2637a1aed6 100644 --- a/backend/src/main/java/io/metersphere/service/ProjectService.java +++ b/backend/src/main/java/io/metersphere/service/ProjectService.java @@ -9,10 +9,7 @@ import io.metersphere.api.service.ApiTestDelService; import io.metersphere.api.tcp.TCPPool; import io.metersphere.base.domain.*; import io.metersphere.base.mapper.*; -import io.metersphere.base.mapper.ext.ExtProjectMapper; -import io.metersphere.base.mapper.ext.ExtProjectVersionMapper; -import io.metersphere.base.mapper.ext.ExtUserGroupMapper; -import io.metersphere.base.mapper.ext.ExtUserMapper; +import io.metersphere.base.mapper.ext.*; import io.metersphere.commons.constants.*; import io.metersphere.commons.exception.MSException; import io.metersphere.commons.utils.*; @@ -114,6 +111,10 @@ public class ProjectService { private ProjectApplicationService projectApplicationService; @Resource private ProjectVersionMapper projectVersionMapper; + @Resource + ExtModuleNodeMapper extModuleNodeMapper; + @Resource + ApiModuleMapper apiModuleMapper; public Project addProject(AddProjectRequest project) { if (StringUtils.isBlank(project.getName())) { @@ -176,6 +177,8 @@ public class ProjectService { addProjectVersion(project); // 初始化项目应用管理 initProjectApplication(project.getId()); + // 初始化项目默认节点 + initProjectDefaultNode(project.getId()); return project; } @@ -220,6 +223,36 @@ public class ProjectService { projectApplicationMapper.insert(projectApplication); } + private void initProjectDefaultNode(String projectId) { + ModuleNode record = new ModuleNode(); + record.setId(UUID.randomUUID().toString()); + record.setCreateUser(SessionUtils.getUserId()); + record.setPos(1.0); + record.setLevel(1); + record.setCreateTime(System.currentTimeMillis()); + record.setUpdateTime(System.currentTimeMillis()); + record.setProjectId(projectId); + //每个新项目的默认测试用例节点, 接口场景节点, UI自动化场景, 接口节点{HTTP, DUBBO, SQL, TCP} + record.setName(ProjectModuleDefaultNodeEnum.TEST_CASE_DEFAULT_NODE.getNodeName()); + extModuleNodeMapper.insert(ProjectModuleDefaultNodeEnum.TEST_CASE_DEFAULT_NODE.getTableName(), record); + record.setId(UUID.randomUUID().toString()); + record.setName(ProjectModuleDefaultNodeEnum.API_SCENARIO_DEFAULT_NODE.getNodeName()); + extModuleNodeMapper.insert(ProjectModuleDefaultNodeEnum.API_SCENARIO_DEFAULT_NODE.getTableName(), record); + record.setId(UUID.randomUUID().toString()); + record.setName(ProjectModuleDefaultNodeEnum.UI_SCENARIO_DEFAULT_NODE.getNodeName()); + extModuleNodeMapper.insert(ProjectModuleDefaultNodeEnum.UI_SCENARIO_DEFAULT_NODE.getTableName(), record); + + ApiModule apiRecord = new ApiModule(); + BeanUtils.copyBean(apiRecord, record); + apiRecord.setName(ProjectModuleDefaultNodeEnum.API_MODULE_DEFAULT_NODE.getNodeName()); + String[] protocols = {"HTTP", "DUBBO", "SQL", "TCP"}; + for (String protocol : protocols) { + apiRecord.setProtocol(protocol); + apiRecord.setId(UUID.randomUUID().toString()); + apiModuleMapper.insert(apiRecord); + } + } + public void checkThirdProjectExist(Project project) { IssuesRequest issuesRequest = new IssuesRequest(); if (StringUtils.isBlank(project.getId())) { diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseNodeService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseNodeService.java index a5c34990fd..ce8f615edb 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestCaseNodeService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestCaseNodeService.java @@ -148,8 +148,6 @@ public class TestCaseNodeService extends NodeTreeService { } public List getNodeTreeByProjectId(String projectId, QueryTestCaseRequest request) { - // 判断当前项目下是否有默认模块,没有添加默认模块 - this.getDefaultNode(projectId); List testCaseNodes = extTestCaseNodeMapper.getNodeTreeByProjectId(projectId); request.setUserId(SessionUtils.getUserId()); request.setProjectId(projectId);