fix(项目管理): 删除自定义字段时,没有删除字段和模板的中间表
This commit is contained in:
parent
589415ac05
commit
fc87410095
|
@ -1,19 +1,17 @@
|
||||||
package io.metersphere.project.controller;
|
package io.metersphere.project.controller;
|
||||||
|
|
||||||
import io.metersphere.sdk.constants.*;
|
import io.metersphere.sdk.constants.*;
|
||||||
|
import io.metersphere.system.domain.*;
|
||||||
import io.metersphere.system.dto.sdk.CustomFieldDTO;
|
import io.metersphere.system.dto.sdk.CustomFieldDTO;
|
||||||
import io.metersphere.system.dto.sdk.request.CustomFieldOptionRequest;
|
import io.metersphere.system.dto.sdk.request.CustomFieldOptionRequest;
|
||||||
import io.metersphere.system.dto.sdk.request.CustomFieldUpdateRequest;
|
import io.metersphere.system.dto.sdk.request.CustomFieldUpdateRequest;
|
||||||
import io.metersphere.sdk.util.BeanUtils;
|
import io.metersphere.sdk.util.BeanUtils;
|
||||||
import io.metersphere.system.base.BaseTest;
|
import io.metersphere.system.base.BaseTest;
|
||||||
import io.metersphere.system.controller.param.CustomFieldUpdateRequestDefinition;
|
import io.metersphere.system.controller.param.CustomFieldUpdateRequestDefinition;
|
||||||
import io.metersphere.system.domain.CustomField;
|
|
||||||
import io.metersphere.system.domain.CustomFieldExample;
|
|
||||||
import io.metersphere.system.domain.CustomFieldOption;
|
|
||||||
import io.metersphere.system.domain.OrganizationParameter;
|
|
||||||
import io.metersphere.system.log.constants.OperationLogType;
|
import io.metersphere.system.log.constants.OperationLogType;
|
||||||
import io.metersphere.system.mapper.CustomFieldMapper;
|
import io.metersphere.system.mapper.CustomFieldMapper;
|
||||||
import io.metersphere.system.mapper.OrganizationParameterMapper;
|
import io.metersphere.system.mapper.OrganizationParameterMapper;
|
||||||
|
import io.metersphere.system.mapper.TemplateCustomFieldMapper;
|
||||||
import io.metersphere.system.service.BaseCustomFieldOptionService;
|
import io.metersphere.system.service.BaseCustomFieldOptionService;
|
||||||
import io.metersphere.system.service.BaseCustomFieldService;
|
import io.metersphere.system.service.BaseCustomFieldService;
|
||||||
import io.metersphere.system.service.UserLoginService;
|
import io.metersphere.system.service.UserLoginService;
|
||||||
|
@ -57,6 +55,8 @@ public class ProjectCustomFieldControllerTests extends BaseTest {
|
||||||
private UserLoginService userLoginService;
|
private UserLoginService userLoginService;
|
||||||
@Resource
|
@Resource
|
||||||
private OrganizationParameterMapper organizationParameterMapper;
|
private OrganizationParameterMapper organizationParameterMapper;
|
||||||
|
@Resource
|
||||||
|
private TemplateCustomFieldMapper templateCustomFieldMapper;
|
||||||
private static CustomField addCustomField;
|
private static CustomField addCustomField;
|
||||||
private static CustomField anotherAddCustomField;
|
private static CustomField anotherAddCustomField;
|
||||||
|
|
||||||
|
@ -266,6 +266,7 @@ public class ProjectCustomFieldControllerTests extends BaseTest {
|
||||||
this.requestGetWithOk(DEFAULT_DELETE, addCustomField.getId());
|
this.requestGetWithOk(DEFAULT_DELETE, addCustomField.getId());
|
||||||
Assertions.assertNull(customFieldMapper.selectByPrimaryKey(addCustomField.getId()));
|
Assertions.assertNull(customFieldMapper.selectByPrimaryKey(addCustomField.getId()));
|
||||||
Assertions.assertTrue(CollectionUtils.isEmpty(baseCustomFieldOptionService.getByFieldId(addCustomField.getId())));
|
Assertions.assertTrue(CollectionUtils.isEmpty(baseCustomFieldOptionService.getByFieldId(addCustomField.getId())));
|
||||||
|
Assertions.assertTrue(CollectionUtils.isEmpty(getTemplateCustomField(addCustomField.getId())));
|
||||||
|
|
||||||
// @@校验内置字段删除异常
|
// @@校验内置字段删除异常
|
||||||
CustomFieldExample example = new CustomFieldExample();
|
CustomFieldExample example = new CustomFieldExample();
|
||||||
|
@ -297,4 +298,11 @@ public class ProjectCustomFieldControllerTests extends BaseTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<TemplateCustomField> getTemplateCustomField(String id) {
|
||||||
|
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
||||||
|
example.createCriteria()
|
||||||
|
.andFieldIdEqualTo(id);
|
||||||
|
return templateCustomFieldMapper.selectByExample(example);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,18 +1,20 @@
|
||||||
package io.metersphere.system.service;
|
package io.metersphere.system.service;
|
||||||
|
|
||||||
import io.metersphere.sdk.constants.CustomFieldType;
|
import io.metersphere.sdk.constants.CustomFieldType;
|
||||||
import io.metersphere.system.dto.request.DefaultFunctionalCustomField;
|
|
||||||
import io.metersphere.sdk.constants.TemplateScene;
|
import io.metersphere.sdk.constants.TemplateScene;
|
||||||
import io.metersphere.sdk.constants.TemplateScopeType;
|
import io.metersphere.sdk.constants.TemplateScopeType;
|
||||||
import io.metersphere.system.dto.sdk.CustomFieldDTO;
|
|
||||||
import io.metersphere.system.dto.sdk.request.CustomFieldOptionRequest;
|
|
||||||
import io.metersphere.sdk.exception.MSException;
|
import io.metersphere.sdk.exception.MSException;
|
||||||
import io.metersphere.sdk.util.BeanUtils;
|
import io.metersphere.sdk.util.BeanUtils;
|
||||||
import io.metersphere.sdk.util.Translator;
|
import io.metersphere.sdk.util.Translator;
|
||||||
import io.metersphere.system.domain.CustomField;
|
import io.metersphere.system.domain.CustomField;
|
||||||
import io.metersphere.system.domain.CustomFieldExample;
|
import io.metersphere.system.domain.CustomFieldExample;
|
||||||
import io.metersphere.system.domain.CustomFieldOption;
|
import io.metersphere.system.domain.CustomFieldOption;
|
||||||
|
import io.metersphere.system.domain.TemplateCustomFieldExample;
|
||||||
|
import io.metersphere.system.dto.request.DefaultFunctionalCustomField;
|
||||||
|
import io.metersphere.system.dto.sdk.CustomFieldDTO;
|
||||||
|
import io.metersphere.system.dto.sdk.request.CustomFieldOptionRequest;
|
||||||
import io.metersphere.system.mapper.CustomFieldMapper;
|
import io.metersphere.system.mapper.CustomFieldMapper;
|
||||||
|
import io.metersphere.system.mapper.TemplateCustomFieldMapper;
|
||||||
import io.metersphere.system.uid.IDGenerator;
|
import io.metersphere.system.uid.IDGenerator;
|
||||||
import io.metersphere.system.utils.ServiceUtils;
|
import io.metersphere.system.utils.ServiceUtils;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
@ -45,6 +47,8 @@ public class BaseCustomFieldService {
|
||||||
protected BaseCustomFieldOptionService baseCustomFieldOptionService;
|
protected BaseCustomFieldOptionService baseCustomFieldOptionService;
|
||||||
@Resource
|
@Resource
|
||||||
protected BaseOrganizationParameterService baseOrganizationParameterService;
|
protected BaseOrganizationParameterService baseOrganizationParameterService;
|
||||||
|
@Resource
|
||||||
|
protected TemplateCustomFieldMapper templateCustomFieldMapper;
|
||||||
|
|
||||||
public List<CustomFieldDTO> list(String scopeId, String scene) {
|
public List<CustomFieldDTO> list(String scopeId, String scene) {
|
||||||
checkScene(scene);
|
checkScene(scene);
|
||||||
|
@ -165,6 +169,13 @@ public class BaseCustomFieldService {
|
||||||
public void delete(String id) {
|
public void delete(String id) {
|
||||||
customFieldMapper.deleteByPrimaryKey(id);
|
customFieldMapper.deleteByPrimaryKey(id);
|
||||||
baseCustomFieldOptionService.deleteByFieldId(id);
|
baseCustomFieldOptionService.deleteByFieldId(id);
|
||||||
|
deleteTemplateCustomField(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteTemplateCustomField(String id) {
|
||||||
|
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
||||||
|
example.createCriteria().andFieldIdEqualTo(id);
|
||||||
|
templateCustomFieldMapper.deleteByExample(example);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void checkInternal(CustomField customField) {
|
protected void checkInternal(CustomField customField) {
|
||||||
|
|
|
@ -4,19 +4,17 @@ import io.metersphere.project.domain.Project;
|
||||||
import io.metersphere.project.domain.ProjectExample;
|
import io.metersphere.project.domain.ProjectExample;
|
||||||
import io.metersphere.project.mapper.ProjectMapper;
|
import io.metersphere.project.mapper.ProjectMapper;
|
||||||
import io.metersphere.sdk.constants.*;
|
import io.metersphere.sdk.constants.*;
|
||||||
|
import io.metersphere.system.domain.*;
|
||||||
import io.metersphere.system.dto.sdk.CustomFieldDTO;
|
import io.metersphere.system.dto.sdk.CustomFieldDTO;
|
||||||
import io.metersphere.system.dto.sdk.request.CustomFieldOptionRequest;
|
import io.metersphere.system.dto.sdk.request.CustomFieldOptionRequest;
|
||||||
import io.metersphere.system.dto.sdk.request.CustomFieldUpdateRequest;
|
import io.metersphere.system.dto.sdk.request.CustomFieldUpdateRequest;
|
||||||
import io.metersphere.sdk.util.BeanUtils;
|
import io.metersphere.sdk.util.BeanUtils;
|
||||||
import io.metersphere.system.base.BaseTest;
|
import io.metersphere.system.base.BaseTest;
|
||||||
import io.metersphere.system.controller.param.CustomFieldUpdateRequestDefinition;
|
import io.metersphere.system.controller.param.CustomFieldUpdateRequestDefinition;
|
||||||
import io.metersphere.system.domain.CustomField;
|
|
||||||
import io.metersphere.system.domain.CustomFieldExample;
|
|
||||||
import io.metersphere.system.domain.CustomFieldOption;
|
|
||||||
import io.metersphere.system.domain.OrganizationParameter;
|
|
||||||
import io.metersphere.system.log.constants.OperationLogType;
|
import io.metersphere.system.log.constants.OperationLogType;
|
||||||
import io.metersphere.system.mapper.CustomFieldMapper;
|
import io.metersphere.system.mapper.CustomFieldMapper;
|
||||||
import io.metersphere.system.mapper.OrganizationParameterMapper;
|
import io.metersphere.system.mapper.OrganizationParameterMapper;
|
||||||
|
import io.metersphere.system.mapper.TemplateCustomFieldMapper;
|
||||||
import io.metersphere.system.service.BaseCustomFieldOptionService;
|
import io.metersphere.system.service.BaseCustomFieldOptionService;
|
||||||
import io.metersphere.system.service.BaseCustomFieldService;
|
import io.metersphere.system.service.BaseCustomFieldService;
|
||||||
import io.metersphere.system.service.OrganizationCustomFieldService;
|
import io.metersphere.system.service.OrganizationCustomFieldService;
|
||||||
|
@ -29,10 +27,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.test.web.servlet.MvcResult;
|
import org.springframework.test.web.servlet.MvcResult;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static io.metersphere.sdk.constants.InternalUserRole.ADMIN;
|
import static io.metersphere.sdk.constants.InternalUserRole.ADMIN;
|
||||||
import static io.metersphere.system.controller.handler.result.CommonResultCode.*;
|
import static io.metersphere.system.controller.handler.result.CommonResultCode.*;
|
||||||
|
@ -65,6 +60,8 @@ public class OrganizationCustomFieldControllerTests extends BaseTest {
|
||||||
private ProjectMapper projectMapper;
|
private ProjectMapper projectMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private OrganizationCustomFieldService organizationCustomFieldService;
|
private OrganizationCustomFieldService organizationCustomFieldService;
|
||||||
|
@Resource
|
||||||
|
private TemplateCustomFieldMapper templateCustomFieldMapper;
|
||||||
private static CustomField addCustomField;
|
private static CustomField addCustomField;
|
||||||
private static CustomField anotherAddCustomField;
|
private static CustomField anotherAddCustomField;
|
||||||
|
|
||||||
|
@ -274,6 +271,7 @@ public class OrganizationCustomFieldControllerTests extends BaseTest {
|
||||||
this.requestGetWithOk(DEFAULT_DELETE, addCustomField.getId());
|
this.requestGetWithOk(DEFAULT_DELETE, addCustomField.getId());
|
||||||
Assertions.assertNull(customFieldMapper.selectByPrimaryKey(addCustomField.getId()));
|
Assertions.assertNull(customFieldMapper.selectByPrimaryKey(addCustomField.getId()));
|
||||||
Assertions.assertTrue(CollectionUtils.isEmpty(baseCustomFieldOptionService.getByFieldId(addCustomField.getId())));
|
Assertions.assertTrue(CollectionUtils.isEmpty(baseCustomFieldOptionService.getByFieldId(addCustomField.getId())));
|
||||||
|
Assertions.assertTrue(CollectionUtils.isEmpty(getTemplateCustomField(addCustomField.getId())));
|
||||||
|
|
||||||
// @@校验内置字段删除异常
|
// @@校验内置字段删除异常
|
||||||
CustomFieldExample example = new CustomFieldExample();
|
CustomFieldExample example = new CustomFieldExample();
|
||||||
|
@ -291,6 +289,13 @@ public class OrganizationCustomFieldControllerTests extends BaseTest {
|
||||||
requestGetPermissionTest(PermissionConstants.ORGANIZATION_TEMPLATE_DELETE, DEFAULT_DELETE, addCustomField.getId());
|
requestGetPermissionTest(PermissionConstants.ORGANIZATION_TEMPLATE_DELETE, DEFAULT_DELETE, addCustomField.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<TemplateCustomField> getTemplateCustomField(String id) {
|
||||||
|
TemplateCustomFieldExample example = new TemplateCustomFieldExample();
|
||||||
|
example.createCriteria()
|
||||||
|
.andFieldIdEqualTo(id);
|
||||||
|
return templateCustomFieldMapper.selectByExample(example);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验变更组织字段时,有没有同步变更项目字段
|
* 校验变更组织字段时,有没有同步变更项目字段
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue