From cce511c4b498f907be4f40c665adcb98cd4da4b0 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Tue, 21 May 2024 13:15:25 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20cron=20=E7=94=9F=E6=88=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/about/change-log.md | 4 +- docs/about/roadmap.md | 2 - ...on-vue-views-components-form-drawer.vue.vm | 2 +- .../core/session/WebSocketSyncSession.java | 6 ++- .../websocket/core/utils/WebSockets.java | 11 ++++- .../host/exec/log/tracker/ExecLogTracker.java | 8 ---- orion-visor-ui/src/assets/style/layout.less | 5 +++ .../cron/generator-input}/const.types.ts | 0 .../cron/generator-input}/form/day-form.vue | 0 .../cron/generator-input}/form/hour-form.vue | 0 .../generator-input}/form/minute-form.vue | 0 .../cron/generator-input}/form/month-form.vue | 0 .../generator-input}/form/second-form.vue | 0 .../cron/generator-input}/form/use-mixin.ts | 0 .../cron/generator-input}/form/week-form.vue | 0 .../cron/generator-input}/form/year-form.vue | 0 .../cron/generator-input}/index.vue | 4 +- .../cron/generator-model}/index.vue | 8 ++-- .../next-modal}/index.vue | 2 +- .../{data => meta}/cron/validator.ts | 0 .../user/user/update-password-modal/index.vue | 2 +- .../components/connect-log-clear-modal.vue | 2 +- .../components/host-identity-form-modal.vue | 5 ++- .../components/host-key-form-drawer.vue | 2 +- .../host-list/components/host-form-modal.vue | 2 +- .../exec-command-log-clear-modal.vue | 2 +- .../components/exec-template-exec-drawer.vue | 2 +- .../components/exec-template-form-drawer.vue | 2 +- .../components/upload-task-clear-modal.vue | 2 +- .../components/sftp/sftp-chmod-modal.vue | 2 +- .../components/sftp/sftp-create-modal.vue | 2 +- .../components/sftp/sftp-move-modal.vue | 2 +- .../src/views/host/terminal/index.vue | 4 +- .../components/exec-job-log-clear-modal.vue | 2 +- .../components/exec-job-form-drawer.vue | 40 +++++++++++++++++-- .../src/views/job/exec-job/index.vue | 17 ++++++-- .../components/dict-key-form-modal.vue | 2 +- .../components/dict-value-form-modal.vue | 2 +- .../menu/components/menu-form-modal.vue | 2 +- .../components/operator-log-clear-modal.vue | 2 +- .../user/role/components/role-form-modal.vue | 2 +- .../role/components/role-menu-grant-modal.vue | 4 +- .../user/user/components/user-form-modal.vue | 2 +- .../user-grant-roles-form-modal.vue | 2 +- .../user-reset-password-form-modal.vue | 2 +- 45 files changed, 105 insertions(+), 57 deletions(-) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/const.types.ts (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/day-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/hour-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/minute-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/month-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/second-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/use-mixin.ts (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/week-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/form/year-form.vue (100%) rename orion-visor-ui/src/components/{data/cron/input => meta/cron/generator-input}/index.vue (99%) rename orion-visor-ui/src/components/{data/cron/model => meta/cron/generator-model}/index.vue (89%) rename orion-visor-ui/src/components/meta/{expression/next-cron-modal => cron/next-modal}/index.vue (98%) rename orion-visor-ui/src/components/{data => meta}/cron/validator.ts (100%) diff --git a/docs/about/change-log.md b/docs/about/change-log.md index 24e64007..6c28ee86 100644 --- a/docs/about/change-log.md +++ b/docs/about/change-log.md @@ -16,9 +16,9 @@ ### v2.0.1 -`2024-05-2` `release` +`2024-05-21` `release` -* 🩰 修改 logo +* ⭐ 添加 cron 组件 * 🐞 修复 批量执行后日志偶尔不展示的问题 * 🐞 修复 批量上传进度条显示异常的问题 diff --git a/docs/about/roadmap.md b/docs/about/roadmap.md index f6f04cce..2a512dcd 100644 --- a/docs/about/roadmap.md +++ b/docs/about/roadmap.md @@ -2,12 +2,10 @@ * 终端背景图片 * 资产授权 UI 改版 -* RDP 远程桌面 * 接入 config 后端动态配置 * 文档中巡检模板 * 导入快捷命令 * 导入命令模板 -* 使用 vite press 开发文档 ## 已知问题 diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm b/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm index e4c51c42..ae6691cc 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm +++ b/orion-visor-framework/orion-visor-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm @@ -8,7 +8,7 @@ :cancel-button-props="{ disabled: loading }" :on-before-ok="handlerOk" @cancel="handleClose"> - + message) throws IOException { - this.delegate.sendMessage(message); + public void sendMessage(WebSocketMessage message) throws IOException { + synchronized (this.delegate) { + this.delegate.sendMessage(message); + } } @Override diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-websocket/src/main/java/com/orion/visor/framework/websocket/core/utils/WebSockets.java b/orion-visor-framework/orion-visor-spring-boot-starter-websocket/src/main/java/com/orion/visor/framework/websocket/core/utils/WebSockets.java index 9177734b..86c41490 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-websocket/src/main/java/com/orion/visor/framework/websocket/core/utils/WebSockets.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-websocket/src/main/java/com/orion/visor/framework/websocket/core/utils/WebSockets.java @@ -70,8 +70,15 @@ public class WebSockets { return; } try { - // 发送消息 - session.sendMessage(new TextMessage(message)); + if (session instanceof WebSocketSyncSession) { + // 发送消息 + session.sendMessage(new TextMessage(message)); + } else { + synchronized (session) { + // 发送消息 + session.sendMessage(new TextMessage(message)); + } + } } catch (IllegalStateException e) { // 并发异常 log.error("发送消息失败, 准备进行重试 {}", Exceptions.getDigest(e)); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/log/tracker/ExecLogTracker.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/log/tracker/ExecLogTracker.java index 9d41baf0..edafff01 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/log/tracker/ExecLogTracker.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/log/tracker/ExecLogTracker.java @@ -5,7 +5,6 @@ import com.orion.ext.tail.delay.DelayTrackerListener; import com.orion.ext.tail.mode.FileNotFoundMode; import com.orion.ext.tail.mode.FileOffsetMode; import com.orion.spring.SpringHolder; -import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.websocket.core.utils.WebSockets; import com.orion.visor.module.asset.define.config.AppTrackerConfig; import com.orion.visor.module.asset.entity.dto.ExecHostLogTailDTO; @@ -84,16 +83,9 @@ public class ExecLogTracker implements IExecLogTracker { String message = config.getId() + LogConst.SEPARATOR + new String(bytes, 0, len); try { WebSockets.sendText(session, message); - return; } catch (Exception e) { log.error("ExecLogTracker.send error", e); } - // 重试 - try { - WebSockets.retrySendText(session, message, Const.MS_100); - } catch (Exception e) { - log.error("ExecLogTracker.resend error fk", e); - } } @Override diff --git a/orion-visor-ui/src/assets/style/layout.less b/orion-visor-ui/src/assets/style/layout.less index 65373737..b6d8bb62 100644 --- a/orion-visor-ui/src/assets/style/layout.less +++ b/orion-visor-ui/src/assets/style/layout.less @@ -66,6 +66,11 @@ } } +// -- drawer +.drawer-form-small{ + padding: 20px 20px 2px 20px; +} + // -- modal .modal-form-small { .arco-modal-header { diff --git a/orion-visor-ui/src/components/data/cron/input/const.types.ts b/orion-visor-ui/src/components/meta/cron/generator-input/const.types.ts similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/const.types.ts rename to orion-visor-ui/src/components/meta/cron/generator-input/const.types.ts diff --git a/orion-visor-ui/src/components/data/cron/input/form/day-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/day-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/day-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/day-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/form/hour-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/hour-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/hour-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/hour-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/form/minute-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/minute-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/minute-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/minute-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/form/month-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/month-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/month-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/month-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/form/second-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/second-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/second-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/second-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/form/use-mixin.ts b/orion-visor-ui/src/components/meta/cron/generator-input/form/use-mixin.ts similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/use-mixin.ts rename to orion-visor-ui/src/components/meta/cron/generator-input/form/use-mixin.ts diff --git a/orion-visor-ui/src/components/data/cron/input/form/week-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/week-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/week-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/week-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/form/year-form.vue b/orion-visor-ui/src/components/meta/cron/generator-input/form/year-form.vue similarity index 100% rename from orion-visor-ui/src/components/data/cron/input/form/year-form.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/form/year-form.vue diff --git a/orion-visor-ui/src/components/data/cron/input/index.vue b/orion-visor-ui/src/components/meta/cron/generator-input/index.vue similarity index 99% rename from orion-visor-ui/src/components/data/cron/input/index.vue rename to orion-visor-ui/src/components/meta/cron/generator-input/index.vue index 3bdde4af..420031a7 100644 --- a/orion-visor-ui/src/components/data/cron/input/index.vue +++ b/orion-visor-ui/src/components/meta/cron/generator-input/index.vue @@ -99,7 +99,7 @@ :placeholder="placeholder" @change="onInputCronChange">