From 34c8bbf81d7a889d4ac0431a8a9237c5c20dc2f6 Mon Sep 17 00:00:00 2001 From: qiuyu <1163105536@qq.com> Date: Fri, 27 Dec 2024 17:15:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.31.0=20=E7=89=88=E6=9C=AC=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=EF=BC=9A=20=20=20=20=20=20=20=E3=80=90=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E3=80=91=E5=BA=94=E7=94=A8=E9=85=8D=E7=BD=AE->MeterSp?= =?UTF-8?q?here=E8=AE=BE=E7=BD=AE=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=89=8B=E5=8A=A8=E5=90=8C=E6=AD=A5=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=8C=89=E9=92=AE=E3=80=82=E4=BB=A5=E5=8F=8A=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=90=8E=EF=BC=8C=E6=8F=90=E7=A4=BA=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=90=8C=E6=AD=A5=E3=80=82=20=20=20=20=20=20?= =?UTF-8?q?=20=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91MeterSphere=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=9A=84=E5=B1=82=E7=BA=A7=E9=80=89=E6=8B=A9=E5=99=A8?= =?UTF-8?q?=E6=B7=B1=E5=BA=A6=E4=BC=98=E5=8C=96=E4=B8=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?:=20torna.metersphere.module.maxLevel,=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E5=B1=82=E7=BA=A7=E4=B8=BA2=E3=80=82=20=20?= =?UTF-8?q?=20=20=20=20=20=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=90=8C=E6=AD=A5MeterSphere=E6=93=8D=E4=BD=9C=EF=BC=8C?= =?UTF-8?q?=E4=BE=BF=E4=BA=8E=E5=90=8E=E7=BB=AD=E4=BB=A5=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E7=9A=84=E8=87=AA=E5=8A=A8=E5=8C=96=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E3=80=82=EF=BC=88=E6=94=AF=E6=8C=81MeterSphere=20V2?= =?UTF-8?q?=E3=80=81V3=EF=BC=89=20=20=20=20=20=20=20=E3=80=90=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E4=BC=98=E5=8C=96=E7=89=88=E6=9C=AC=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=E7=9A=84=E7=9B=B8=E5=85=B3=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E5=85=B3=E8=81=94=E6=96=87=E6=A1=A3=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=A2=9E=E5=8A=A0=E7=89=88=E6=9C=AC=E5=8F=B7=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/src/utils/i18n/languages/en-us.js | 4 +- front/src/utils/i18n/languages/zh-cn.js | 6 +- .../MeterSphereSetting/index.vue | 31 ++- .../views/project/ProjectRelease/index.vue | 185 +++++++++++++++++- .../main/resources/META-INF/torna.properties | 4 + .../common/bean/DingdingWebHookBody.java | 8 +- .../cn/torna/common/bean/EnvironmentKeys.java | 2 + .../cn/torna/dao/entity/MsModuleConfig.java | 11 +- .../java/cn/torna/service/ConvertService.java | 86 ++++++-- .../java/cn/torna/service/DocInfoService.java | 5 +- .../service/ProjectReleaseDocService.java | 24 +++ .../torna/service/ProjectReleaseService.java | 10 +- .../java/cn/torna/service/UpgradeService.java | 14 +- .../torna/service/UserSubscribeService.java | 3 +- .../torna/service/builder/MessageBuilder.java | 17 +- .../service/dto/ProjectReleaseBindDocDTO.java | 8 + .../metersphere/MeterSpherePushService.java | 111 ++++++++++- .../metersphere/MeterSphereService.java | 87 +++++++- .../metersphere/MsModuleConfigService.java | 4 + .../dto/MeterSphereModuleConfigSaveDTO.java | 3 + .../metersphere/dto/MeterSphereModuleDTO.java | 7 + .../third/MeterSphereController.java | 23 +++ .../param/MeterSphereModuleSaveParam.java | 3 + 23 files changed, 588 insertions(+), 68 deletions(-) create mode 100644 server/server-service/src/main/java/cn/torna/service/ProjectReleaseDocService.java diff --git a/front/src/utils/i18n/languages/en-us.js b/front/src/utils/i18n/languages/en-us.js index 309c1674..4d9ff570 100644 --- a/front/src/utils/i18n/languages/en-us.js +++ b/front/src/utils/i18n/languages/en-us.js @@ -491,7 +491,9 @@ export default { }, SwaggerSetting: { 'syncConfirm': 'Save success, synchronize documents now?', - 'synchronizing': 'Synchronizing' + 'synchronizing': 'Synchronizing', + 'synchronization': 'synchronization', + 'checkSynchronized': 'Please check whether it is synchronized' }, EditDocCustom: { 'inputDocContent': 'Input document content' diff --git a/front/src/utils/i18n/languages/zh-cn.js b/front/src/utils/i18n/languages/zh-cn.js index cd15ef29..2ad0514a 100644 --- a/front/src/utils/i18n/languages/zh-cn.js +++ b/front/src/utils/i18n/languages/zh-cn.js @@ -399,7 +399,7 @@ export default { 'nickEmail': '昵称/邮箱', 'releaseNo': '版本号', 'releaseDesc': '版本描述', - 'viewAssociatedDocuments': '查看关联版本', + 'viewAssociatedDocuments': '查看关联文档', 'associatedDocument': '关联文档', 'visitStyle': '访问方式', 'updateName': '修改名称', @@ -492,7 +492,9 @@ export default { }, SwaggerSetting: { 'syncConfirm': '保存成功,是否立即同步文档?', - 'synchronizing': '同步中...' + 'synchronizing': '同步中...', + 'synchronization': '同步', + 'checkSynchronized': '请确认是否同步?' }, EditDocCustom: { 'inputDocContent': '输入文档内容' diff --git a/front/src/views/project/ModuleSetting/MeterSphereSetting/index.vue b/front/src/views/project/ModuleSetting/MeterSphereSetting/index.vue index 56630d8a..240670e5 100644 --- a/front/src/views/project/ModuleSetting/MeterSphereSetting/index.vue +++ b/front/src/views/project/ModuleSetting/MeterSphereSetting/index.vue @@ -9,10 +9,11 @@ {{ currentName }} - + {{ $t('save') }} + {{ $t('SwaggerSetting.synchronization') }} @@ -46,6 +47,7 @@ export default { props: { value: 'id', label: 'name', + checkStrictly: true, lazy: true, lazyLoad(node, resolve) { const { level } = node @@ -56,9 +58,9 @@ export default { const msProjectId = node.value that.get('third/metersphere/module/list', { projectId: that.projectId, msProjectId: msProjectId }, resp => { const data = resp.data - for (const el of data) { - el.leaf = true - } + // for (const el of data) { + // el.leaf = true + // } resolve(data) }) } @@ -93,19 +95,34 @@ export default { const leaf = checkedNodes[0] const pathNodes = leaf.pathNodes const msProject = pathNodes[0] - const msModule = pathNodes[1] + const msModule = pathNodes[pathNodes.length - 1] + const label = pathNodes.slice(1).map(node => node.label).join('/') const data = { msProjectId: msProject.value, msProjectName: msProject.label, msModuleId: msModule.value, - msModuleName: msModule.label, + msModuleName: label, moduleId: this.moduleId } this.post('third/metersphere/module/save', data, resp => { - this.tipSuccess($t('saveSuccess')) + if (resp.code === '0') { + this.confirm(this.$t('SwaggerSetting.syncConfirm'), () => { + this.syncMeterSphere() + }) + } }) } }) + }, + syncMeterSphere() { + const data = { + moduleId: this.moduleId + } + this.confirm(this.$t('SwaggerSetting.checkSynchronized'), () => { + this.post('third/metersphere/module/sync', data, resp => { + this.tipSuccess($t('syncSuccess')) + }) + }) } } } diff --git a/front/src/views/project/ProjectRelease/index.vue b/front/src/views/project/ProjectRelease/index.vue index a78611de..4ba6a042 100644 --- a/front/src/views/project/ProjectRelease/index.vue +++ b/front/src/views/project/ProjectRelease/index.vue @@ -81,12 +81,26 @@ {{ $t('viewAssociatedDocuments') }} {{ $t('update') }} - - {{ $t('remove') }} - + + + + + + + + + {{ $t('remove') }} + + + + + 同步MeterSphere + + + @@ -143,23 +157,76 @@ > - {{ node.label }} + {{ node.label }} + + + {{ data.url }} + + {{ data.version }} + + + + + + + + + 当前版本绑定MeterSphere模块 + + + + {{ currentMsModuleName }} + + + + + + {{ $t('save') }} + {{ $t('SwaggerSetting.synchronization') }} + + + + + + 空间未配置MeterSphere参数 前往配置 + + + + +