删除项目提示并删除测试跟踪资源
This commit is contained in:
parent
afcd60c6f7
commit
b7b33ad2bb
|
@ -8,4 +8,6 @@ import java.util.List;
|
|||
|
||||
public interface ExtApiTestMapper {
|
||||
List<APITestResult> list(@Param("request") QueryAPITestRequest request);
|
||||
|
||||
Long countByProjectId(String projectId);
|
||||
}
|
||||
|
|
|
@ -29,5 +29,9 @@
|
|||
</where>
|
||||
order by api_test.update_time desc
|
||||
</select>
|
||||
<select id="countByProjectId" resultType="java.lang.Long">
|
||||
select count(id) from api_test
|
||||
where project_id = #{projectId};
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -8,4 +8,6 @@ import java.util.List;
|
|||
|
||||
public interface ExtLoadTestMapper {
|
||||
List<LoadTestDTO> list(@Param("request") QueryTestPlanRequest params);
|
||||
|
||||
Long countByProjectId(String projectId);
|
||||
}
|
||||
|
|
|
@ -27,5 +27,9 @@
|
|||
</where>
|
||||
order by load_test.update_time desc
|
||||
</select>
|
||||
<select id="countByProjectId" resultType="java.lang.Long">
|
||||
select count(id) from load_test
|
||||
where project_id = #{projectId};
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -12,4 +12,6 @@ public interface ExtTestCaseMapper {
|
|||
List<TestCase> getTestCaseNames(@Param("request") QueryTestCaseRequest request);
|
||||
|
||||
List<TestCaseDTO> list(@Param("request") QueryTestCaseRequest request);
|
||||
|
||||
Long countByProjectId(String projectId);
|
||||
}
|
||||
|
|
|
@ -53,4 +53,8 @@
|
|||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
<select id="countByProjectId" resultType="java.lang.Long">
|
||||
select count(id) from test_case
|
||||
where project_id = #{projectId}
|
||||
</select>
|
||||
</mapper>
|
|
@ -11,4 +11,6 @@ public interface ExtTestPlanMapper {
|
|||
List<TestPlanDTO> list(@Param("request") QueryTestPlanRequest params);
|
||||
|
||||
List<TestPlanDTOWithMetric> listRelate(@Param("request") QueryTestPlanRequest params);
|
||||
|
||||
Long countByProjectId(String projectId);
|
||||
}
|
||||
|
|
|
@ -45,5 +45,9 @@
|
|||
)
|
||||
order by test_plan.update_time desc
|
||||
</select>
|
||||
<select id="countByProjectId" resultType="java.lang.Long">
|
||||
select count(id) from test_plan
|
||||
where project_id = #{projectId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -9,6 +9,7 @@ import io.metersphere.commons.utils.Pager;
|
|||
import io.metersphere.commons.utils.SessionUtils;
|
||||
import io.metersphere.controller.request.ProjectRequest;
|
||||
import io.metersphere.dto.ProjectDTO;
|
||||
import io.metersphere.dto.ProjectRelatedResourceDTO;
|
||||
import io.metersphere.service.ProjectService;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresRoles;
|
||||
|
@ -71,4 +72,10 @@ public class ProjectController {
|
|||
public void updateProject(@RequestBody Project Project) {
|
||||
projectService.updateProject(Project);
|
||||
}
|
||||
|
||||
@GetMapping("/related/resource/{projectId}")
|
||||
@RequiresRoles(value = {RoleConstants.TEST_MANAGER, RoleConstants.TEST_USER}, logical = Logical.OR)
|
||||
public ProjectRelatedResourceDTO getRelatedResource(@PathVariable String projectId) {
|
||||
return projectService.getRelatedResource(projectId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package io.metersphere.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ProjectRelatedResourceDTO {
|
||||
Long testCaseCount;
|
||||
Long testPlanCount;
|
||||
Long loadTestCount;
|
||||
Long apiTestCount;
|
||||
}
|
|
@ -70,6 +70,8 @@ public class PerformanceTestService {
|
|||
LoadTestReportExample loadTestReportExample = new LoadTestReportExample();
|
||||
loadTestReportExample.createCriteria().andTestIdEqualTo(testId);
|
||||
List<LoadTestReport> loadTestReports = loadTestReportMapper.selectByExample(loadTestReportExample);
|
||||
|
||||
if (!loadTestReports.isEmpty()) {
|
||||
List<String> reportIdList = loadTestReports.stream().map(LoadTestReport::getId).collect(Collectors.toList());
|
||||
|
||||
// delete load_test_report_result
|
||||
|
@ -84,6 +86,7 @@ public class PerformanceTestService {
|
|||
loadTestReportDetailMapper.deleteByExample(example);
|
||||
reportService.deleteReport(reportId);
|
||||
});
|
||||
}
|
||||
|
||||
// delete load_test
|
||||
loadTestMapper.deleteByPrimaryKey(request.getId());
|
||||
|
|
|
@ -6,19 +6,26 @@ import io.metersphere.base.domain.Project;
|
|||
import io.metersphere.base.domain.ProjectExample;
|
||||
import io.metersphere.base.mapper.LoadTestMapper;
|
||||
import io.metersphere.base.mapper.ProjectMapper;
|
||||
import io.metersphere.base.mapper.ext.ExtProjectMapper;
|
||||
import io.metersphere.base.mapper.ext.*;
|
||||
import io.metersphere.commons.exception.MSException;
|
||||
import io.metersphere.commons.utils.SessionUtils;
|
||||
import io.metersphere.controller.request.ProjectRequest;
|
||||
import io.metersphere.dto.ProjectDTO;
|
||||
import io.metersphere.dto.ProjectRelatedResourceDTO;
|
||||
import io.metersphere.i18n.Translator;
|
||||
import io.metersphere.performance.service.PerformanceTestService;
|
||||
import io.metersphere.track.dto.TestPlanDTO;
|
||||
import io.metersphere.track.request.testcase.QueryTestCaseRequest;
|
||||
import io.metersphere.track.request.testcase.QueryTestPlanRequest;
|
||||
import io.metersphere.track.request.testplan.DeleteTestPlanRequest;
|
||||
import io.metersphere.track.service.TestCaseService;
|
||||
import io.metersphere.track.service.TestPlanService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -34,6 +41,18 @@ public class ProjectService {
|
|||
private PerformanceTestService performanceTestService;
|
||||
@Resource
|
||||
private LoadTestMapper loadTestMapper;
|
||||
@Resource
|
||||
private ExtTestCaseMapper extTestCaseMapper;
|
||||
@Resource
|
||||
private ExtTestPlanMapper extTestPlanMapper;
|
||||
@Resource
|
||||
private ExtLoadTestMapper extLoadTestMapperMapper;
|
||||
@Resource
|
||||
private ExtApiTestMapper extApiTestMapper;
|
||||
@Resource
|
||||
private TestPlanService testPlanService;
|
||||
@Resource
|
||||
private TestCaseService testCaseService;
|
||||
|
||||
public Project addProject(Project project) {
|
||||
if (StringUtils.isBlank(project.getName())) {
|
||||
|
@ -76,6 +95,7 @@ public class ProjectService {
|
|||
});
|
||||
|
||||
// TODO 删除项目下 测试跟踪 相关
|
||||
deleteTrackResourceByProjectId(projectId);
|
||||
|
||||
// TODO 删除项目下 接口测试 相关
|
||||
|
||||
|
@ -83,6 +103,15 @@ public class ProjectService {
|
|||
projectMapper.deleteByPrimaryKey(projectId);
|
||||
}
|
||||
|
||||
private void deleteTrackResourceByProjectId(String projectId) {
|
||||
QueryTestPlanRequest request = new QueryTestPlanRequest();
|
||||
request.setProjectId(projectId);
|
||||
testPlanService.listTestPlan(request).forEach(testPlan -> {
|
||||
testPlanService.deleteTestPlan(testPlan.getId());
|
||||
});
|
||||
testCaseService.deleteTestCaseByProjectId(projectId);
|
||||
}
|
||||
|
||||
public void updateProject(Project project) {
|
||||
project.setCreateTime(null);
|
||||
project.setUpdateTime(System.currentTimeMillis());
|
||||
|
@ -107,4 +136,13 @@ public class ProjectService {
|
|||
public Project getProjectById(String id) {
|
||||
return projectMapper.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
public ProjectRelatedResourceDTO getRelatedResource(String projectId) {
|
||||
ProjectRelatedResourceDTO projectRelatedResource = new ProjectRelatedResourceDTO();
|
||||
projectRelatedResource.setTestCaseCount(extTestCaseMapper.countByProjectId(projectId));
|
||||
projectRelatedResource.setTestPlanCount(extTestPlanMapper.countByProjectId(projectId));
|
||||
projectRelatedResource.setLoadTestCount(extLoadTestMapperMapper.countByProjectId(projectId));
|
||||
projectRelatedResource.setApiTestCount(extApiTestMapper.countByProjectId(projectId));
|
||||
return projectRelatedResource;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -286,4 +286,10 @@ public class TestCaseService {
|
|||
example.createCriteria().andIdIn(request.getIds());
|
||||
testCaseMapper.deleteByExample(example);
|
||||
}
|
||||
|
||||
public void deleteTestCaseByProjectId(String projectId) {
|
||||
TestCaseExample example = new TestCaseExample();
|
||||
example.createCriteria().andProjectIdEqualTo(projectId);
|
||||
testCaseMapper.deleteByExample(example);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -142,7 +142,8 @@
|
|||
});
|
||||
},
|
||||
del(row) {
|
||||
this.$confirm(this.$t('project.delete_confirm'), this.$t('commons.prompt'), {
|
||||
this.getRelatedResource(row.id).then(tip => {
|
||||
this.$confirm(tip + this.$t('project.delete_confirm'), this.$t('commons.prompt'), {
|
||||
confirmButtonText: this.$t('commons.confirm'),
|
||||
cancelButtonText: this.$t('commons.cancel'),
|
||||
type: 'warning'
|
||||
|
@ -153,6 +154,7 @@
|
|||
});
|
||||
}).catch(() => {
|
||||
});
|
||||
});
|
||||
},
|
||||
search() {
|
||||
this.list();
|
||||
|
@ -165,6 +167,29 @@
|
|||
this.total = data.itemCount;
|
||||
})
|
||||
},
|
||||
getRelatedResource(projectId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$get('/project/related/resource/' + projectId, response => {
|
||||
let data = response.data;
|
||||
let result = '';
|
||||
result = this.appendDeleteTip(result, data.testCaseCount, this.$t('test_track.case.test_case'));
|
||||
result = this.appendDeleteTip(result, data.testPlanCount, this.$t('test_track.plan.test_plan') );
|
||||
result = this.appendDeleteTip(result, data.loadTestCount, this.$t('commons.performance'));
|
||||
result = this.appendDeleteTip(result, data.apiTestCount, this.$t('commons.api'));
|
||||
if (result != '') {
|
||||
result = this.$t('project.delete_tip') + result;
|
||||
}
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
},
|
||||
appendDeleteTip(result, count, tip) {
|
||||
if (count > 0) {
|
||||
return result + count + "个" + tip + ',';
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -121,6 +121,7 @@ export default {
|
|||
'create': 'Create Project',
|
||||
'edit': 'Edit Project',
|
||||
'delete_confirm': 'Are you sure you want to delete this project?',
|
||||
'delete_tip': 'These resources will be deleted:',
|
||||
'search_by_name': 'Search by name',
|
||||
'input_name': 'Please enter a workspace name',
|
||||
'owning_workspace': 'Owning Workspace',
|
||||
|
|
|
@ -118,7 +118,8 @@ export default {
|
|||
'recent': '最近的项目',
|
||||
'create': '创建项目',
|
||||
'edit': '编辑项目',
|
||||
'delete_confirm': '这个项目确定要删除吗?',
|
||||
'delete_confirm': '确定要删除这个项目吗?',
|
||||
'delete_tip': '删除该项目,会删除以下资源:',
|
||||
'search_by_name': '根据名称搜索',
|
||||
'input_name': '请输入项目名称',
|
||||
'owning_workspace': '所属工作空间',
|
||||
|
|
|
@ -110,7 +110,8 @@ export default {
|
|||
'recent': '最近的項目',
|
||||
'create': '創建項目',
|
||||
'edit': '編輯項目',
|
||||
'delete_confirm': '這個項目確定要刪除嗎?',
|
||||
'delete_confirm': '確定要刪除這個項目嗎?',
|
||||
'delete_tip': '刪除該項目,會刪除以下資源:',
|
||||
'search_by_name': '根據名稱搜索',
|
||||
'input_name': '請輸入項目名稱',
|
||||
'owning_workspace': '所屬工作空間',
|
||||
|
|
Loading…
Reference in New Issue