From baf498e45230dd80402f93efd945ed78f9f85299 Mon Sep 17 00:00:00 2001
From: wxg0103 <727495428@qq.com>
Date: Thu, 20 Jan 2022 14:51:52 +0800
Subject: [PATCH] =?UTF-8?q?feat(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):=20?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=94=A8=E4=BE=8B=E5=88=A0=E9=99=A4=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E5=88=A0=E9=99=A4=E5=BD=93=E5=89=8D=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=E5=92=8C=E5=85=A8=E9=83=A8=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../base/mapper/ext/ExtTestCaseMapper.xml | 11 ++-
.../track/controller/TestCaseController.java | 10 +--
.../track/service/TestCaseService.java | 11 +--
.../track/case/components/TestCaseList.vue | 67 ++++++++++++-------
4 files changed, 64 insertions(+), 35 deletions(-)
diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml
index 2465d59e21..4e54e75cba 100644
--- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml
+++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml
@@ -227,7 +227,7 @@
test_case.other_test_name, test_case.review_status, test_case.tags,
test_case.demand_id, test_case.demand_name, test_case.`status`,
test_case.custom_num, test_case.step_model, test_case.create_user,u.name as createName,
- test_case.custom_fields, project.name as projectName
+ test_case.custom_fields, project.name as projectName , test_case.ref_id
from test_case left join user u on test_case.create_user=u.id
left join user deleteUser on test_case.delete_user_id=deleteUser.id
@@ -870,7 +870,14 @@
update test_case
set case_public = false
- where ref_id = #{request.refId}
+
+
+ ref_id =#{request.refId}
+
+
+ and version_id =#{request.versionId}
+
+
diff --git a/backend/src/main/java/io/metersphere/track/controller/TestCaseController.java b/backend/src/main/java/io/metersphere/track/controller/TestCaseController.java
index ff068f90d1..6bddf4def7 100644
--- a/backend/src/main/java/io/metersphere/track/controller/TestCaseController.java
+++ b/backend/src/main/java/io/metersphere/track/controller/TestCaseController.java
@@ -256,12 +256,12 @@ public class TestCaseController {
return testCaseService.deleteTestCaseToGc(testCaseId);
}
- @PostMapping("/deletePublic/{refId}")
+ @GetMapping("/deletePublic/{versionId}/{refId}")
@MsAuditLog(module = "track_test_case", type = OperLogConstants.GC, beforeEvent = "#msClass.getLogDetails(#testCaseId)", msClass = TestCaseService.class)
@SendNotice(taskType = NoticeConstants.TaskType.TRACK_TEST_CASE_TASK, event = NoticeConstants.Event.DELETE, target = "#targetClass.getTestCase(#testCaseId)", targetClass = TestCaseService.class,
mailTemplate = "track/TestCaseDelete", subject = "测试用例通知")
- public int deletePublic(@PathVariable String refId) {
- return testCaseService.deleteTestCasePublic(refId);
+ public void deletePublic(@PathVariable String versionId, @PathVariable String refId) {
+ testCaseService.deleteTestCasePublic(versionId ,refId);
}
@@ -356,8 +356,8 @@ public class TestCaseController {
@MsAuditLog(module = "track_test_case", type = OperLogConstants.BATCH_DEL, beforeEvent = "#msClass.getLogDetails(#request.ids)", msClass = TestCaseService.class)
@SendNotice(taskType = NoticeConstants.TaskType.TRACK_TEST_CASE_TASK, target = "#targetClass.findByBatchRequest(#request)", targetClass = TestCaseService.class,
event = NoticeConstants.Event.DELETE, mailTemplate = "track/TestCaseDelete", subject = "测试用例通知")
- public void deleteToGcBatchPublic(@RequestBody TestCaseBatchRequest request) {
- testCaseService.deleteToGcBatchPublic(request.getIds());
+ public void deleteToGcBatchPublic(@RequestBody List ids) {
+ testCaseService.deleteToGcBatchPublic(ids);
}
@PostMapping("/reduction")
diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java
index d6d2a2e6a1..550d97518c 100644
--- a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java
+++ b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java
@@ -2144,9 +2144,9 @@ public class TestCaseService {
if (CollectionUtils.isNotEmpty(ids)) {
for (String id : ids) {
TestCase testCase = testCaseMapper.selectByPrimaryKey(id);
- if ((StringUtils.isNotEmpty(testCase.getMaintainer()) && testCase.getMaintainer() == SessionUtils.getUserId()) ||
- (StringUtils.isNotEmpty(testCase.getCreateUser()) && testCase.getCreateUser() == SessionUtils.getUserId())) {
- this.deleteTestCasePublic(testCase.getRefId());
+ if ((StringUtils.isNotEmpty(testCase.getMaintainer()) && testCase.getMaintainer().equals(SessionUtils.getUserId())) ||
+ (StringUtils.isNotEmpty(testCase.getCreateUser()) && testCase.getCreateUser().equals(SessionUtils.getUserId()))) {
+ this.deleteTestCasePublic(null , testCase.getRefId());
} else {
MSException.throwException(Translator.get("check_owner_case"));
}
@@ -2438,10 +2438,11 @@ public class TestCaseService {
}
}
- public int deleteTestCasePublic(String refId) {
+ public void deleteTestCasePublic(String versionId , String refId) {
TestCase testCase = new TestCase();
testCase.setRefId(refId);
- return extTestCaseMapper.deletePublic(testCase);
+ testCase.setVersionId(versionId);
+ extTestCaseMapper.deletePublic(testCase);
}
public Boolean hasOtherInfo(String caseId) {
diff --git a/frontend/src/business/components/track/case/components/TestCaseList.vue b/frontend/src/business/components/track/case/components/TestCaseList.vue
index 4c75c44fff..f88b70ca0b 100644
--- a/frontend/src/business/components/track/case/components/TestCaseList.vue
+++ b/frontend/src/business/components/track/case/components/TestCaseList.vue
@@ -226,6 +226,8 @@
+
+
@@ -276,7 +278,7 @@ import {editTestCaseOrder} from "@/network/testCase";
import {getGraphByCondition} from "@/network/graph";
import MsTableAdvSearchBar from "@/business/components/common/components/search/MsTableAdvSearchBar";
import {getUUID} from "@/common/js/utils";
-
+import ApiDeleteConfirm from "@/business/components/api/definition/components/list/ApiDeleteConfirm";
const requireComponent = require.context('@/business/components/xpack/', true, /\.vue$/);
const relationshipGraphDrawer = requireComponent.keys().length > 0 ? requireComponent("./graph/RelationshipGraphDrawer.vue") : {};
@@ -308,6 +310,7 @@ export default {
ReviewStatus,
MsTag, ApiStatus,
"relationshipGraphDrawer": relationshipGraphDrawer.default,
+ ApiDeleteConfirm
},
data() {
return {
@@ -891,18 +894,8 @@ export default {
});
},
handleDeleteToGc(testCase) {
- this.$alert(this.$t('test_track.case.delete_confirm') + '\'' + testCase.name + '\'' + "?", '', {
- confirmButtonText: this.$t('commons.confirm'),
- callback: (action) => {
- if (action === 'confirm') {
- if (this.publicEnable) {
- this._handleDeletePublic(testCase);
- } else {
- this._handleDeleteToGc(testCase);
- }
- }
- }
- });
+ // 删除提供列表删除和全部版本删除
+ this.$refs.apiDeleteConfirm.open(testCase, this.$t('test_track.case.delete_confirm'));
},
batchReduction() {
let param = buildBatchParam(this, this.$refs.table.selectIds);
@@ -964,14 +957,6 @@ export default {
this.$success(this.$t('commons.delete_success'));
});
},
- _handleDeletePublic(testCase) {
- let refId = testCase.refId;
- this.$post('/test/case/deletePublic/' + refId, {}, () => {
- this.$emit('refreshTable');
- this.initTableData();
- this.$success(this.$t('commons.delete_success'));
- });
- },
refresh() {
this.$refs.table.clear();
this.$emit('refresh');
@@ -1097,8 +1082,8 @@ export default {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {
- let param = buildBatchParam(this, this.$refs.table.selectIds);
- this.$post('/test/case/batch/movePublic/deleteToGc', param, () => {
+ let ids = this.$refs.table.selectIds;
+ this.$post('/test/case/batch/movePublic/deleteToGc', ids, () => {
this.$refs.table.clear();
this.$emit("refresh");
this.$success(this.$t('commons.delete_success'));
@@ -1115,6 +1100,42 @@ export default {
this.isMoveBatch = false;
this.$refs.testBatchMove.open(this.treeNodes, this.$refs.table.selectIds, this.moduleOptions);
},
+ _handleDeleteVersion(testCase, deleteCurrentVersion) {
+ // 删除指定版本
+ if (deleteCurrentVersion) {
+ if (this.publicEnable) {
+ this.$get('/test/case/deletePublic/' + testCase.versionId + '/' + testCase.refId, () => {
+ this.$success(this.$t('commons.delete_success'));
+ this.$refs.apiDeleteConfirm.close();
+ this.$emit("refreshTable");
+ });
+ }
+ else {
+ this.$get('/test/case/delete/' + testCase.versionId + '/' + testCase.refId, () => {
+ this.$success(this.$t('commons.delete_success'));
+ this.$refs.apiDeleteConfirm.close();
+ this.$emit("refreshTable");
+ });
+ }
+ }
+ // 删除全部版本
+ else {
+ if (this.publicEnable) {
+ let ids = [testCase.id];
+ this.$post('/test/case/batch/movePublic/deleteToGc', ids, () => {
+ this.$success(this.$t('commons.delete_success'));
+ // this.initTable();
+ this.$refs.apiDeleteConfirm.close();
+ this.$emit("refreshTable");
+
+ });
+ } else {
+ this._handleDeleteToGc(testCase);
+ this.$refs.apiDeleteConfirm.close();
+ }
+
+ }
+ },
getMaintainerOptions() {
this.$post('/user/project/member/tester/list', {projectId: getCurrentProjectID()}, response => {
this.valueArr.maintainer = response.data;