fix (接口测试): 删除项目级联删除接口测试相关资源

This commit is contained in:
fit2-zhao 2021-10-20 14:12:24 +08:00 committed by fit2-zhao
parent 60f41171b2
commit 03d3dceb32
2 changed files with 65 additions and 1 deletions

View File

@ -0,0 +1,61 @@
package io.metersphere.api.service;
import io.metersphere.base.domain.*;
import io.metersphere.base.mapper.ApiDefinitionMapper;
import io.metersphere.base.mapper.ApiModuleMapper;
import io.metersphere.base.mapper.ApiScenarioMapper;
import io.metersphere.base.mapper.ApiScenarioModuleMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Transactional
/**
* 接口测试所有级联删除资源
*/
public class ApiTestDelService {
@Resource
private ApiDefinitionService apiDefinitionService;
@Resource
private ApiAutomationService apiAutomationService;
@Resource
private ApiScenarioMapper apiScenarioMapper;
@Resource
private ApiDefinitionMapper apiDefinitionMapper;
@Resource
private ApiModuleMapper apiModuleMapper;
@Resource
private ApiScenarioModuleMapper apiScenarioModuleMapper;
public void delete(String projectId) {
ApiDefinitionExample example = new ApiDefinitionExample();
example.createCriteria().andProjectIdEqualTo(projectId);
// api and case
List<String> apiIds = apiDefinitionMapper.selectByExample(example).stream().map(ApiDefinition::getId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(apiIds)) {
apiDefinitionService.deleteBatch(apiIds);
}
// scenario
ApiScenarioExample scenarioExample = new ApiScenarioExample();
scenarioExample.createCriteria().andProjectIdEqualTo(projectId);
List<String> scenarios = apiScenarioMapper.selectByExample(scenarioExample).stream().map(ApiScenario::getId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(scenarios)) {
apiAutomationService.deleteBatch(scenarios);
}
// api module
ApiModuleExample moduleExample = new ApiModuleExample();
moduleExample.createCriteria().andProjectIdEqualTo(projectId);
apiModuleMapper.deleteByExample(moduleExample);
// scenario module
ApiScenarioModuleExample scenarioModuleExample = new ApiScenarioModuleExample();
scenarioModuleExample.createCriteria().andProjectIdEqualTo(projectId);
apiScenarioModuleMapper.deleteByExample(scenarioModuleExample);
}
}

View File

@ -5,6 +5,7 @@ import io.metersphere.api.dto.DeleteAPITestRequest;
import io.metersphere.api.dto.QueryAPITestRequest;
import io.metersphere.api.service.APITestService;
import io.metersphere.api.service.ApiAutomationService;
import io.metersphere.api.service.ApiTestDelService;
import io.metersphere.api.service.ApiTestEnvironmentService;
import io.metersphere.api.tcp.TCPPool;
import io.metersphere.base.domain.*;
@ -89,7 +90,8 @@ public class ProjectService {
private ExtUserMapper extUserMapper;
@Resource
private ScheduleService scheduleService;
@Resource
private ApiTestDelService apiTestDelService;
@Value("${tcp.mock.port}")
private String tcpMockPorts;
@ -189,6 +191,7 @@ public class ProjectService {
// 删除项目下 接口测试 相关
deleteAPIResourceByProjectId(projectId);
apiTestDelService.delete(projectId);
// User Group
deleteProjectUserGroup(projectId);