From 4d7cdf223d676b7b587ed55d3969eed60f2df980 Mon Sep 17 00:00:00 2001 From: lannoy0523 <46735290+lannoy0523@users.noreply.github.com> Date: Mon, 29 Jan 2024 09:59:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=8A=82=E7=82=B9=E6=B8=85=E7=90=86?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=B8=85=E7=90=86=E8=AF=A6=E6=83=85=20#1499?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat:节点清理显示清理详情 #1499 * feat:清理支持dryRun模式 #1550 * feat:清理支持dryRun模式 #1550 * feat:清理支持dryRun模式(页面调整) #1550 * feat:清理支持dryRun模式(页面调整) #1550 --- .../controller/user/UserNodeController.kt | 11 ++++ .../service/node/NodeStatsOperation.kt | 7 ++- .../service/node/impl/NodeServiceImpl.kt | 4 +- .../service/node/impl/NodeStatsSupport.kt | 7 ++- .../node/impl/edge/EdgeNodeServiceImpl.kt | 4 +- .../src/components/Loading/loading.vue | 14 ++++- .../src/store/actions/repoGeneric.js | 11 ++++ .../views/repoGeneric/genericCleanDialog.vue | 59 +++++++++++++++++-- src/frontend/locale/repository/en-US.json | 7 ++- src/frontend/locale/repository/zh-CN.json | 5 +- 10 files changed, 111 insertions(+), 18 deletions(-) diff --git a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/controller/user/UserNodeController.kt b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/controller/user/UserNodeController.kt index 36084cc800..8d54e34f42 100644 --- a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/controller/user/UserNodeController.kt +++ b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/controller/user/UserNodeController.kt @@ -338,6 +338,17 @@ class UserNodeController( return ResponseBuilder.success(nodeSizeInfo) } + @ApiOperation("查询时间早于{date}的节点大小信息") + @Permission(type = ResourceType.NODE, action = PermissionAction.READ) + @GetMapping("/calculate/$DEFAULT_MAPPING_URI") + fun computeSizeBefore( + @ArtifactPathVariable artifactInfo: ArtifactInfo, + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) date: LocalDateTime + ): Response { + val nodeSizeInfo = nodeService.computeSize(artifactInfo,false, date) + return ResponseBuilder.success(nodeSizeInfo) + } + @ApiOperation("分页查询节点") @Permission(type = ResourceType.NODE, action = PermissionAction.READ) @GetMapping("/page/$DEFAULT_MAPPING_URI") diff --git a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/NodeStatsOperation.kt b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/NodeStatsOperation.kt index 587c19d8b3..e93ae4ee6c 100644 --- a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/NodeStatsOperation.kt +++ b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/NodeStatsOperation.kt @@ -34,6 +34,7 @@ package com.tencent.bkrepo.repository.service.node import com.tencent.bkrepo.common.artifact.api.ArtifactInfo import com.tencent.bkrepo.repository.pojo.node.NodeSizeInfo import org.springframework.data.mongodb.core.query.Criteria +import java.time.LocalDateTime /** * 节点重命名接口 @@ -43,7 +44,10 @@ interface NodeStatsOperation { /** * 计算文件或者文件夹大小 */ - fun computeSize(artifact: ArtifactInfo, estimated: Boolean = false): NodeSizeInfo + fun computeSize(artifact: ArtifactInfo, + estimated: Boolean = false, + before: LocalDateTime = LocalDateTime.now() + ): NodeSizeInfo /** * 查询文件节点数量 @@ -54,4 +58,5 @@ interface NodeStatsOperation { * 聚合查询节点大小 */ fun aggregateComputeSize(criteria: Criteria): Long + } diff --git a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeServiceImpl.kt b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeServiceImpl.kt index a021c371c3..8256e48774 100644 --- a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeServiceImpl.kt +++ b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeServiceImpl.kt @@ -81,8 +81,8 @@ class NodeServiceImpl( servicePermissionClient, ) { - override fun computeSize(artifact: ArtifactInfo, estimated: Boolean): NodeSizeInfo { - return NodeStatsSupport(this).computeSize(artifact, estimated) + override fun computeSize(artifact: ArtifactInfo, estimated: Boolean, before: LocalDateTime): NodeSizeInfo { + return NodeStatsSupport(this).computeSize(artifact, estimated, before) } override fun aggregateComputeSize(criteria: Criteria): Long { diff --git a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeStatsSupport.kt b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeStatsSupport.kt index 7fd52a4db1..958c2ae787 100644 --- a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeStatsSupport.kt +++ b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/NodeStatsSupport.kt @@ -46,6 +46,8 @@ import org.springframework.data.mongodb.core.aggregation.Aggregation.match import org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation import org.springframework.data.mongodb.core.query.Criteria import org.springframework.data.mongodb.core.query.Query +import org.springframework.data.mongodb.core.query.and +import java.time.LocalDateTime /** * 节点统计接口 @@ -56,7 +58,7 @@ open class NodeStatsSupport( private val nodeDao: NodeDao = nodeBaseService.nodeDao - override fun computeSize(artifact: ArtifactInfo, estimated: Boolean): NodeSizeInfo { + override fun computeSize(artifact: ArtifactInfo, estimated: Boolean, before: LocalDateTime): NodeSizeInfo { val projectId = artifact.projectId val repoName = artifact.repoName val fullPath = artifact.getArtifactFullPath() @@ -71,11 +73,12 @@ open class NodeStatsSupport( } val listOption = NodeListOption(includeFolder = true, deep = true) val criteria = NodeQueryHelper.nodeListCriteria(projectId, repoName, node.fullPath, listOption) + .and(TNode::lastModifiedDate).lt(before) val count = nodeDao.count(Query(criteria)) val listOptionWithOutFolder = NodeListOption(includeFolder = false, deep = true) val criteriaWithOutFolder = NodeQueryHelper.nodeListCriteria( projectId, repoName, node.fullPath, listOptionWithOutFolder - ) + ).and(TNode::lastModifiedDate).lt(before) val countWithOutFolder = nodeDao.count(Query(criteriaWithOutFolder)) val size = aggregateComputeSize(criteriaWithOutFolder) nodeDao.setSizeAndNodeNumOfFolder( diff --git a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/edge/EdgeNodeServiceImpl.kt b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/edge/EdgeNodeServiceImpl.kt index c4f48614b9..845cd1f256 100644 --- a/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/edge/EdgeNodeServiceImpl.kt +++ b/src/backend/repository/biz-repository/src/main/kotlin/com/tencent/bkrepo/repository/service/node/impl/edge/EdgeNodeServiceImpl.kt @@ -91,8 +91,8 @@ class EdgeNodeServiceImpl( servicePermissionClient, clusterProperties, ) { - override fun computeSize(artifact: ArtifactInfo, estimated: Boolean): NodeSizeInfo { - return NodeStatsSupport(this).computeSize(artifact, estimated) + override fun computeSize(artifact: ArtifactInfo, estimated: Boolean, before: LocalDateTime): NodeSizeInfo { + return NodeStatsSupport(this).computeSize(artifact, estimated, before) } override fun aggregateComputeSize(criteria: Criteria): Long { diff --git a/src/frontend/devops-repository/src/components/Loading/loading.vue b/src/frontend/devops-repository/src/components/Loading/loading.vue index c475a3e0c0..cd23bc10c8 100644 --- a/src/frontend/devops-repository/src/components/Loading/loading.vue +++ b/src/frontend/devops-repository/src/components/Loading/loading.vue @@ -8,7 +8,7 @@ v-model="isShow">
-
+
@@ -17,7 +17,7 @@ {{ subMessage }}
-
+
@@ -98,6 +98,11 @@ body .bk-dialog-wrapper .bk-dialog-body { .svg-complete { margin-right: 10px; } + .iconBody{ + display: flex; + align-items: center; + justify-content: center; + } .mainMessage{ font-size: 16px; } @@ -128,6 +133,11 @@ body .bk-dialog-wrapper .bk-dialog-body { .svg-complete { margin-right: 10px; } + .iconBackUpBody{ + display: flex; + align-items: center; + justify-content: center; + } .mainMessage{ font-size: 16px; font-weight: bold; diff --git a/src/frontend/devops-repository/src/store/actions/repoGeneric.js b/src/frontend/devops-repository/src/store/actions/repoGeneric.js index 060d217d7a..4e43dc5382 100644 --- a/src/frontend/devops-repository/src/store/actions/repoGeneric.js +++ b/src/frontend/devops-repository/src/store/actions/repoGeneric.js @@ -380,5 +380,16 @@ export default { ) } return request + }, + // 统计时间早于{date}的文件节点信息 + getFolderSizeBefore (_, { path, date }) { + return Vue.prototype.$ajax.get( + `${prefix}/node/calculate/${path}`, + { + params: { + date: date + } + } + ) } } diff --git a/src/frontend/devops-repository/src/views/repoGeneric/genericCleanDialog.vue b/src/frontend/devops-repository/src/views/repoGeneric/genericCleanDialog.vue index f462972234..5c3f7680b0 100644 --- a/src/frontend/devops-repository/src/views/repoGeneric/genericCleanDialog.vue +++ b/src/frontend/devops-repository/src/views/repoGeneric/genericCleanDialog.vue @@ -9,25 +9,30 @@
- + + +
{{ item.tip }}
- + + +
{{ item.tip }}
- +
{{$t('cleanFolderTip')}}
@@ -35,6 +40,7 @@