diff --git a/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectTemplateService.java b/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectTemplateService.java index e2b5f4e04e..99fb6ba2aa 100644 --- a/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectTemplateService.java +++ b/backend/services/project-management/src/main/java/io/metersphere/project/service/ProjectTemplateService.java @@ -312,6 +312,7 @@ public class ProjectTemplateService extends BaseTemplateService { Template originTemplate = super.getWithCheck(template.getId()); checkProjectTemplateEnable(originTemplate.getScopeId(), originTemplate.getScene()); template.setScopeId(originTemplate.getScopeId()); + template.setScene(originTemplate.getScene()); checkProjectResourceExist(originTemplate); return super.update(template, request.getCustomFields(), request.getSystemFields()); } diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseCustomFieldService.java b/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseCustomFieldService.java index 7ebaf2d5fb..242a1b4981 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseCustomFieldService.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseCustomFieldService.java @@ -189,6 +189,7 @@ public class BaseCustomFieldService { CustomFieldExample example = new CustomFieldExample(); example.createCriteria() .andScopeIdEqualTo(customField.getScopeId()) + .andSceneEqualTo(customField.getScene()) .andNameEqualTo(customField.getName()); if (CollectionUtils.isNotEmpty(customFieldMapper.selectByExample(example))) { throw new MSException(CUSTOM_FIELD_EXIST); diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseTemplateService.java b/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseTemplateService.java index c3230b3d82..ac6a0c0390 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseTemplateService.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/service/BaseTemplateService.java @@ -248,6 +248,7 @@ public class BaseTemplateService { TemplateExample example = new TemplateExample(); example.createCriteria() .andScopeIdEqualTo(template.getScopeId()) + .andSceneEqualTo(template.getScene()) .andNameEqualTo(template.getName()); if (CollectionUtils.isNotEmpty(templateMapper.selectByExample(example))) { throw new MSException(TEMPLATE_EXIST); @@ -262,6 +263,7 @@ public class BaseTemplateService { example.createCriteria() .andScopeIdEqualTo(template.getScopeId()) .andIdNotEqualTo(template.getId()) + .andSceneEqualTo(template.getScene()) .andNameEqualTo(template.getName()); if (CollectionUtils.isNotEmpty(templateMapper.selectByExample(example))) { throw new MSException(TEMPLATE_EXIST); diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/service/OrganizationTemplateService.java b/backend/services/system-setting/src/main/java/io/metersphere/system/service/OrganizationTemplateService.java index bc38939a7e..d4fe50eb82 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/service/OrganizationTemplateService.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/service/OrganizationTemplateService.java @@ -100,6 +100,7 @@ public class OrganizationTemplateService extends BaseTemplateService { Template originTemplate = super.getWithCheck(template.getId()); checkOrganizationTemplateEnable(originTemplate.getScopeId(), originTemplate.getScene()); template.setScopeId(originTemplate.getScopeId()); + template.setScene(originTemplate.getScene()); checkOrgResourceExist(originTemplate); updateRefProjectTemplate(template, request.getCustomFields(), request.getSystemFields()); template.setRefId(null); @@ -122,6 +123,7 @@ public class OrganizationTemplateService extends BaseTemplateService { template.setId(projectTemplate.getId()); template.setScopeId(projectTemplate.getScopeId()); template.setRefId(orgTemplate.getId()); + template.setScene(orgTemplate.getScene()); List refCustomFields = getRefTemplateCustomFieldRequest(projectTemplate.getScopeId(), customFields); super.update(template, refCustomFields, systemFields); }); diff --git a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationCustomFieldControllerTests.java b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationCustomFieldControllerTests.java index d4567a335a..14a03d69cc 100644 --- a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationCustomFieldControllerTests.java +++ b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationCustomFieldControllerTests.java @@ -117,8 +117,13 @@ public class OrganizationCustomFieldControllerTests extends BaseTest { } assertRefCustomField(customField); + // 不同scene,不校验重名 + request.setScene(TemplateScene.TEST_PLAN.name()); + this.requestPostWithOkAndReturn(DEFAULT_ADD, request); + // @校验是否开启组织模板 changeOrgTemplateEnable(false); + request.setScene(TemplateScene.FUNCTIONAL.name()); assertErrorCode(this.requestPost(DEFAULT_ADD, request), ORGANIZATION_TEMPLATE_PERMISSION); changeOrgTemplateEnable(true); diff --git a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationTemplateControllerTests.java b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationTemplateControllerTests.java index 034dc82bdc..8ae4e7bcae 100644 --- a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationTemplateControllerTests.java +++ b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/OrganizationTemplateControllerTests.java @@ -118,7 +118,12 @@ public class OrganizationTemplateControllerTests extends BaseTest { assertTemplateCustomFields(request, template); assertRefTemplate(template, request); + // 不同scene,不校验重名 + request.setScene(TemplateScene.TEST_PLAN.name()); + this.requestPostWithOkAndReturn(DEFAULT_ADD, request); + // @@重名校验异常 + request.setScene(scene); assertErrorCode(this.requestPost(DEFAULT_ADD, request), TEMPLATE_EXIST); // @校验是否开启组织模板