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 b70b556b54..a4233b645c 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 @@ -587,14 +587,13 @@ public class ProjectApplicationService { * @return 项目所属平台 */ public String getPlatformName(String projectId) { - ProjectApplicationExample example = new ProjectApplicationExample(); - example.createCriteria().andProjectIdEqualTo(projectId).andTypeEqualTo(ProjectApplicationType.BUG.BUG_SYNC.name() + "_PLATFORM_KEY"); - List list = projectApplicationMapper.selectByExample(example); - if (CollectionUtils.isNotEmpty(list)) { - return getPluginName(list.get(0).getTypeValue()); - } else { + ProjectApplication platformEnableConfig = getByType(projectId, ProjectApplicationType.BUG.BUG_SYNC.name() + "_" + ProjectApplicationType.BUG_SYNC_CONFIG.SYNC_ENABLE.name()); + ProjectApplication platformKeyConfig = getByType(projectId, ProjectApplicationType.BUG.BUG_SYNC.name() + "_PLATFORM_KEY"); + boolean isEnable = platformEnableConfig != null && Boolean.parseBoolean(platformEnableConfig.getTypeValue()) && platformKeyConfig != null; + if (!isEnable) { return "Local"; } + return getPluginName(platformKeyConfig.getTypeValue()); } /** 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 05c1c127c9..d06bc203f9 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 @@ -3,6 +3,8 @@ package io.metersphere.project.controller; import io.metersphere.project.controller.param.ProjectApplicationDefinition; import io.metersphere.project.controller.param.ProjectApplicationRequestDefinition; import io.metersphere.project.domain.ProjectApplication; +import io.metersphere.project.domain.ProjectApplicationExample; +import io.metersphere.project.mapper.ProjectApplicationMapper; import io.metersphere.project.request.ProjectApplicationRequest; import io.metersphere.project.service.ProjectApplicationService; import io.metersphere.sdk.constants.ProjectApplicationType; @@ -15,7 +17,6 @@ import io.metersphere.system.domain.Plugin; import io.metersphere.system.domain.ServiceIntegration; import io.metersphere.system.dto.request.ServiceIntegrationUpdateRequest; import io.metersphere.system.mapper.ServiceIntegrationMapper; -import io.metersphere.system.service.PluginService; import jakarta.annotation.Resource; import lombok.Getter; import lombok.Setter; @@ -47,14 +48,13 @@ public class ProjectApplicationControllerTests extends BaseTest { private static Plugin plugin; @Resource - private PluginService pluginService; - @Resource private BasePluginTestService basePluginTestService; - @Resource private ServiceIntegrationMapper serviceIntegrationMapper; @Resource private ProjectApplicationService projectApplicationService; + @Resource + private ProjectApplicationMapper projectApplicationMapper; public static final String PROJECT_ID = "project_application_test_id"; public static final String TIME_TYPE_VALUE = "3M"; @@ -685,12 +685,43 @@ public class ProjectApplicationControllerTests extends BaseTest { @Test - @Order(40) - public void testGetProjectDemandThirdPartConfig() throws Exception { + @Order(41) + public void testGetProjectDemandThirdPartConfig() { projectApplicationService.getProjectDemandThirdPartConfig(DEFAULT_PROJECT_ID); projectApplicationService.getProjectDemandThirdPartConfig(PROJECT_ID); projectApplicationService.getPlatformName(DEFAULT_PROJECT_ID); projectApplicationService.getPlatformName(PROJECT_ID); + ProjectApplicationExample example = new ProjectApplicationExample(); + example.createCriteria().andProjectIdEqualTo("default-project-for-application").andTypeEqualTo("BUG_SYNC_SYNC_ENABLE"); + ProjectApplication record = new ProjectApplication(); + record.setProjectId("default-project-for-application-tmp"); + projectApplicationMapper.updateByExampleSelective(record, example); + projectApplicationService.getPlatformName("default-project-for-application"); + projectApplicationService.getPlatformServiceIntegrationWithSyncOrDemand("default-project-for-application", true); + ProjectApplicationExample example1 = new ProjectApplicationExample(); + example1.createCriteria().andProjectIdEqualTo("default-project-for-application-tmp").andTypeEqualTo("BUG_SYNC_SYNC_ENABLE"); + record.setProjectId("default-project-for-application"); + record.setTypeValue("false"); + projectApplicationMapper.updateByExampleSelective(record, example1); + projectApplicationService.getPlatformName("default-project-for-application"); + projectApplicationService.getPlatformServiceIntegrationWithSyncOrDemand("default-project-for-application", true); + ProjectApplicationExample example2 = new ProjectApplicationExample(); + example2.createCriteria().andProjectIdEqualTo("default-project-for-application").andTypeEqualTo("BUG_SYNC_SYNC_ENABLE"); + record.setTypeValue("true"); + projectApplicationMapper.updateByExampleSelective(record, example2); + projectApplicationService.getPlatformName("default-project-for-application"); + projectApplicationService.getPlatformServiceIntegrationWithSyncOrDemand("default-project-for-application", true); + ProjectApplicationExample example3 = new ProjectApplicationExample(); + example3.createCriteria().andProjectIdEqualTo("default-project-for-application").andTypeEqualTo("BUG_SYNC_PLATFORM_KEY"); + record.setProjectId("default-project-for-application-tmp"); + projectApplicationMapper.updateByExampleSelective(record, example3); + projectApplicationService.getPlatformName("default-project-for-application"); + projectApplicationService.getPlatformServiceIntegrationWithSyncOrDemand("default-project-for-application", true); + ProjectApplicationExample example4 = new ProjectApplicationExample(); + example4.createCriteria().andProjectIdEqualTo("default-project-for-application-tmp").andTypeEqualTo("BUG_SYNC_PLATFORM_KEY"); + record.setProjectId("default-project-for-application"); + record.setTypeValue("jira"); + projectApplicationMapper.updateByExampleSelective(record, example4); } diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/service/ServiceIntegrationService.java b/backend/services/system-setting/src/main/java/io/metersphere/system/service/ServiceIntegrationService.java index 565856db49..20e53620b6 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/service/ServiceIntegrationService.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/service/ServiceIntegrationService.java @@ -3,16 +3,16 @@ package io.metersphere.system.service; import io.metersphere.plugin.platform.spi.AbstractPlatformPlugin; import io.metersphere.plugin.platform.spi.Platform; import io.metersphere.sdk.exception.MSException; -import io.metersphere.system.uid.IDGenerator; import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.JSON; -import io.metersphere.system.utils.ServiceUtils; import io.metersphere.system.domain.Plugin; import io.metersphere.system.domain.ServiceIntegration; import io.metersphere.system.domain.ServiceIntegrationExample; import io.metersphere.system.dto.ServiceIntegrationDTO; -import io.metersphere.system.mapper.ServiceIntegrationMapper; import io.metersphere.system.dto.request.ServiceIntegrationUpdateRequest; +import io.metersphere.system.mapper.ServiceIntegrationMapper; +import io.metersphere.system.uid.IDGenerator; +import io.metersphere.system.utils.ServiceUtils; import jakarta.annotation.Resource; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -92,8 +92,9 @@ public class ServiceIntegrationService { } public ServiceIntegration update(ServiceIntegrationUpdateRequest request) { - basePluginService.checkPluginEnableAndPermission(request.getPluginId(), request.getOrganizationId()); checkResourceExist(request.getId()); + ServiceIntegration originServiceIntegration = serviceIntegrationMapper.selectByPrimaryKey(request.getId()); + basePluginService.checkPluginEnableAndPermission(originServiceIntegration.getPluginId(), originServiceIntegration.getOrganizationId()); ServiceIntegration serviceIntegration = new ServiceIntegration(); // 组织不能修改 serviceIntegration.setOrganizationId(null);