diff --git a/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectApplicationService.java b/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectApplicationService.java index 6e226a2a36..00df46f8f6 100644 --- a/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectApplicationService.java +++ b/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectApplicationService.java @@ -16,10 +16,7 @@ import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.CommonBeanFactory; import io.metersphere.sdk.util.JSON; import io.metersphere.sdk.util.Translator; -import io.metersphere.system.domain.Plugin; -import io.metersphere.system.domain.ServiceIntegration; -import io.metersphere.system.domain.TestResourcePoolExample; -import io.metersphere.system.domain.User; +import io.metersphere.system.domain.*; import io.metersphere.system.dto.sdk.OptionDTO; import io.metersphere.system.log.constants.OperationLogModule; import io.metersphere.system.log.constants.OperationLogType; @@ -143,27 +140,44 @@ public class ProjectApplicationService { poolType = ProjectApplicationType.API.API_RESOURCE_POOL_ID.name(); moduleType = "api_test"; } + Project project = projectMapper.selectByPrimaryKey(projectId); if (StringUtils.isNotBlank(poolType) && StringUtils.isNotBlank(moduleType)) { if (configMap.containsKey(poolType)) { //如果是适用于所有的组织 int count = 0; TestResourcePoolExample example = new TestResourcePoolExample(); - example.createCriteria().andIdEqualTo(configMap.get(poolType).toString()).andAllOrgEqualTo(true); - if (testResourcePoolMapper.countByExample(example) > 0) { - count = extProjectMapper.resourcePoolIsExist(configMap.get(poolType).toString(), projectId); - } else { - //指定组织 则需要关联组织-资源池的关系表 看看是否再全部存在 - count = extProjectMapper.resourcePoolIsExistByOrg(configMap.get(poolType).toString(), projectId); + if (project.getAllResourcePool()) { + example.createCriteria().andIdEqualTo(configMap.get(poolType).toString()).andEnableEqualTo(true).andDeletedEqualTo(false); + count = (int) testResourcePoolMapper.countByExample(example); + }else { + example.createCriteria().andIdEqualTo(configMap.get(poolType).toString()).andAllOrgEqualTo(true); + if (testResourcePoolMapper.countByExample(example) > 0) { + count = extProjectMapper.resourcePoolIsExist(configMap.get(poolType).toString(), projectId); + } else { + //指定组织 则需要关联组织-资源池的关系表 看看是否再全部存在 + count = extProjectMapper.resourcePoolIsExistByOrg(configMap.get(poolType).toString(), projectId); + } } if (count == 0) { configMap.remove(poolType); } } if (!configMap.containsKey(poolType)) { - List projectTestResourcePools = extProjectMapper.getResourcePool(projectId); - if (CollectionUtils.isNotEmpty(projectTestResourcePools)) { - projectTestResourcePools.sort(Comparator.comparing(ProjectTestResourcePool::getTestResourcePoolId)); - configMap.put(poolType, projectTestResourcePools.getFirst().getTestResourcePoolId()); + if (project.getAllResourcePool()){ + TestResourcePoolExample example = new TestResourcePoolExample(); + example.createCriteria().andEnableEqualTo(true).andDeletedEqualTo(false); + List testResourcePools = testResourcePoolMapper.selectByExample(example); + if (CollectionUtils.isNotEmpty(testResourcePools)) { + testResourcePools.sort(Comparator.comparing(TestResourcePool::getId)); + configMap.put(poolType, testResourcePools.getFirst().getId()); + } + + } else { + List projectTestResourcePools = extProjectMapper.getResourcePool(projectId); + if (CollectionUtils.isNotEmpty(projectTestResourcePools)) { + projectTestResourcePools.sort(Comparator.comparing(ProjectTestResourcePool::getTestResourcePoolId)); + configMap.put(poolType, projectTestResourcePools.getFirst().getTestResourcePoolId()); + } } } } diff --git a/backend/services/project-management/src/test/java/io/metersphere/project/controller/ProjectApplicationControllerTests.java b/backend/services/project-management/src/test/java/io/metersphere/project/controller/ProjectApplicationControllerTests.java index 9b92f8a07a..ca45155681 100644 --- a/backend/services/project-management/src/test/java/io/metersphere/project/controller/ProjectApplicationControllerTests.java +++ b/backend/services/project-management/src/test/java/io/metersphere/project/controller/ProjectApplicationControllerTests.java @@ -2,10 +2,11 @@ package io.metersphere.project.controller; import io.metersphere.project.controller.param.ProjectApplicationDefinition; import io.metersphere.project.controller.param.ProjectApplicationRequestDefinition; +import io.metersphere.project.domain.Project; import io.metersphere.project.domain.ProjectApplication; import io.metersphere.project.domain.ProjectApplicationExample; import io.metersphere.project.mapper.ProjectApplicationMapper; -import io.metersphere.project.mapper.ProjectTestResourcePoolMapper; +import io.metersphere.project.mapper.ProjectMapper; import io.metersphere.project.request.ProjectApplicationRequest; import io.metersphere.project.service.ProjectApplicationService; import io.metersphere.sdk.constants.ProjectApplicationType; @@ -18,7 +19,6 @@ import io.metersphere.system.domain.*; import io.metersphere.system.dto.request.ServiceIntegrationUpdateRequest; import io.metersphere.system.mapper.ServiceIntegrationMapper; import io.metersphere.system.mapper.TestResourcePoolMapper; -import io.metersphere.system.mapper.TestResourcePoolOrganizationMapper; import jakarta.annotation.Resource; import lombok.Getter; import lombok.Setter; @@ -59,9 +59,7 @@ public class ProjectApplicationControllerTests extends BaseTest { @Resource private TestResourcePoolMapper testResourcePoolMapper; @Resource - private ProjectTestResourcePoolMapper projectTestResourcePoolMapper; - @Resource - private TestResourcePoolOrganizationMapper testResourcePoolOrganizationMapper; + private ProjectMapper projectMapper; public static final String PROJECT_ID = "project_application_test_id"; public static final String TIME_TYPE_VALUE = "3M"; @@ -208,6 +206,22 @@ public class ProjectApplicationControllerTests extends BaseTest { public void testGetApi() throws Exception { ProjectApplicationRequest request = this.getRequest("API"); this.requestPostWithOkAndReturn(GET_API_URL, request); + Project initProject = new Project(); + initProject.setId("GYQALL"); + initProject.setNum(null); + initProject.setOrganizationId(DEFAULT_ORGANIZATION_ID); + initProject.setName("测试项目版本"); + initProject.setDescription("测试项目版本"); + initProject.setCreateUser("admin"); + initProject.setUpdateUser("admin"); + initProject.setCreateTime(System.currentTimeMillis()); + initProject.setUpdateTime(System.currentTimeMillis()); + initProject.setEnable(true); + initProject.setModuleSetting("[\"apiTest\",\"uiTest\"]"); + initProject.setAllResourcePool(true); + projectMapper.insertSelective(initProject); + request.setProjectId("GYQALL"); + this.requestPostWithOkAndReturn(GET_API_URL, request); } //接口测试 - 获取项目成员 diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanCollectionMinderService.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanCollectionMinderService.java index dacfc7e8d5..9aa7eef04a 100644 --- a/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanCollectionMinderService.java +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanCollectionMinderService.java @@ -6,7 +6,9 @@ import io.metersphere.plan.dto.*; import io.metersphere.plan.dto.request.BaseCollectionAssociateRequest; import io.metersphere.plan.dto.request.TestPlanCollectionMinderEditRequest; import io.metersphere.plan.mapper.*; +import io.metersphere.project.domain.Project; import io.metersphere.project.mapper.ExtProjectMapper; +import io.metersphere.project.mapper.ProjectMapper; import io.metersphere.sdk.constants.ApiBatchRunMode; import io.metersphere.sdk.constants.CaseType; import io.metersphere.sdk.constants.CommonConstants; @@ -15,7 +17,9 @@ import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.Translator; import io.metersphere.system.domain.TestResourcePool; +import io.metersphere.system.domain.TestResourcePoolExample; import io.metersphere.system.dto.sdk.SessionUser; +import io.metersphere.system.mapper.TestResourcePoolMapper; import io.metersphere.system.uid.IDGenerator; import jakarta.annotation.Resource; import org.apache.commons.collections.CollectionUtils; @@ -67,6 +71,12 @@ public class TestPlanCollectionMinderService { @Resource private ExtProjectMapper extProjectMapper; + @Resource + private ProjectMapper projectMapper; + + @Resource + private TestResourcePoolMapper testResourcePoolMapper; + @Resource private TestPlanMapper testPlanMapper; @@ -79,7 +89,15 @@ public class TestPlanCollectionMinderService { List list = new ArrayList<>(); List testPlanCollections = extTestPlanCollectionMapper.getList(planId); TestPlan testPlan = testPlanMapper.selectByPrimaryKey(planId); - List apiTest = extProjectMapper.getResourcePoolOption(testPlan.getProjectId(), "api_test"); + Project project = projectMapper.selectByPrimaryKey(testPlan.getProjectId()); + List apiTest; + if (project.getAllResourcePool()) { + TestResourcePoolExample example = new TestResourcePoolExample(); + example.createCriteria().andEnableEqualTo(true).andDeletedEqualTo(false); + apiTest= testResourcePoolMapper.selectByExample(example); + } else { + apiTest = extProjectMapper.getResourcePoolOption(testPlan.getProjectId(), "api_test"); + } Map resourcePoolMap = apiTest.stream().collect(Collectors.toMap(TestResourcePool::getId, TestResourcePool::getName)); testPlanCollections.forEach(t->{ if (StringUtils.isBlank(resourcePoolMap.get(t.getTestResourcePoolId()))) { diff --git a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanCollectionMinderControllerTests.java b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanCollectionMinderControllerTests.java index e6b6e64e18..026ec9f539 100644 --- a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanCollectionMinderControllerTests.java +++ b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanCollectionMinderControllerTests.java @@ -1,16 +1,20 @@ package io.metersphere.plan.controller; +import io.metersphere.plan.domain.TestPlan; import io.metersphere.plan.domain.TestPlanCollection; import io.metersphere.plan.domain.TestPlanCollectionExample; -import io.metersphere.system.dto.ModuleSelectDTO; import io.metersphere.plan.dto.TestPlanCollectionAssociateDTO; import io.metersphere.plan.dto.TestPlanCollectionMinderEditDTO; import io.metersphere.plan.dto.TestPlanCollectionMinderTreeDTO; import io.metersphere.plan.dto.request.TestPlanCollectionMinderEditRequest; import io.metersphere.plan.mapper.TestPlanCollectionMapper; +import io.metersphere.plan.mapper.TestPlanMapper; +import io.metersphere.project.domain.Project; +import io.metersphere.project.mapper.ProjectMapper; import io.metersphere.sdk.util.JSON; import io.metersphere.system.base.BaseTest; import io.metersphere.system.controller.handler.ResultHolder; +import io.metersphere.system.dto.ModuleSelectDTO; import jakarta.annotation.Resource; import org.apache.commons.collections.CollectionUtils; import org.junit.jupiter.api.*; @@ -40,11 +44,34 @@ public class TestPlanCollectionMinderControllerTests extends BaseTest { @Resource private TestPlanCollectionMapper testPlanCollectionMapper; + @Resource + private ProjectMapper projectMapper; + @Resource + private TestPlanMapper testPlanMapper; @Test @Order(1) @Sql(scripts = {"/dml/init_test_plan_mind.sql"}, config = @SqlConfig(encoding = "utf-8", transactionMode = SqlConfig.TransactionMode.ISOLATED)) void tesPagePlanReportSuccess() throws Exception { + Project initProject = new Project(); + initProject.setId("GYQALLPOOL"); + initProject.setNum(null); + initProject.setOrganizationId(DEFAULT_ORGANIZATION_ID); + initProject.setName("测试项目版本"); + initProject.setDescription("测试项目版本"); + initProject.setCreateUser("admin"); + initProject.setUpdateUser("admin"); + initProject.setCreateTime(System.currentTimeMillis()); + initProject.setUpdateTime(System.currentTimeMillis()); + initProject.setEnable(true); + initProject.setModuleSetting("[\"apiTest\",\"uiTest\"]"); + initProject.setAllResourcePool(true); + projectMapper.insertSelective(initProject); + + TestPlan testPlan = new TestPlan(); + testPlan.setId("gyq_plan_1"); + testPlan.setProjectId("GYQALLPOOL"); + testPlanMapper.updateByPrimaryKeySelective(testPlan); MvcResult mvcResult = this.requestGetWithOkAndReturn(PLAN_MIND + "gyq_plan_1"); // 获取返回值 @@ -55,6 +82,20 @@ public class TestPlanCollectionMinderControllerTests extends BaseTest { List testPlanCollectionMinderTreeDTOS = JSON.parseArray(JSON.toJSONString(resultHolder.getData()), TestPlanCollectionMinderTreeDTO.class); // 返回值不为空 Assertions.assertNotNull(testPlanCollectionMinderTreeDTOS); + + testPlan.setId("gyq_plan_1"); + testPlan.setProjectId("gyq_plan_project"); + testPlanMapper.updateByPrimaryKeySelective(testPlan); + + mvcResult = this.requestGetWithOkAndReturn(PLAN_MIND + "gyq_plan_1"); + // 获取返回值 + returnData = mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8); + resultHolder = JSON.parseObject(returnData, ResultHolder.class); + // 返回请求正常 + Assertions.assertNotNull(resultHolder); + testPlanCollectionMinderTreeDTOS = JSON.parseArray(JSON.toJSONString(resultHolder.getData()), TestPlanCollectionMinderTreeDTO.class); + // 返回值不为空 + Assertions.assertNotNull(testPlanCollectionMinderTreeDTOS); } @Test diff --git a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanTests.java b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanTests.java index b070a233b2..8645cda783 100644 --- a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanTests.java +++ b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanTests.java @@ -19,6 +19,7 @@ import io.metersphere.plan.utils.TestPlanTestUtils; import io.metersphere.project.domain.Project; import io.metersphere.project.dto.filemanagement.request.FileModuleCreateRequest; import io.metersphere.project.dto.filemanagement.request.FileModuleUpdateRequest; +import io.metersphere.project.mapper.ProjectMapper; import io.metersphere.sdk.constants.*; import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.CommonBeanFactory; @@ -93,6 +94,8 @@ public class TestPlanTests extends BaseTest { private CommonProjectService commonProjectService; @Resource private TestPlanTestService testPlanTestService; + @Resource + private ProjectMapper projectMapper; private static final List LOG_CHECK_LIST = new ArrayList<>(); @@ -2452,6 +2455,24 @@ public class TestPlanTests extends BaseTest { @Test @Order(308) void testInitDefaultCollection() { + TestPlan testPlan = testPlanMapper.selectByPrimaryKey("init_plan_id"); + Project project1 = projectMapper.selectByPrimaryKey(testPlan.getProjectId()); + if (project1 == null) { + Project initProject = new Project(); + initProject.setId(testPlan.getProjectId()); + initProject.setNum(null); + initProject.setOrganizationId(DEFAULT_ORGANIZATION_ID); + initProject.setName("测试项目版本"); + initProject.setDescription("测试项目版本"); + initProject.setCreateUser("admin"); + initProject.setUpdateUser("admin"); + initProject.setCreateTime(System.currentTimeMillis()); + initProject.setUpdateTime(System.currentTimeMillis()); + initProject.setEnable(true); + initProject.setModuleSetting("[\"apiTest\",\"uiTest\"]"); + initProject.setAllResourcePool(true); + projectMapper.insertSelective(initProject); + } testPlanService.initDefaultPlanCollection("init_plan_id", "admin"); }