From 41384fab1781750ff9be7d3df648435f1abd414c Mon Sep 17 00:00:00 2001 From: lijiahang Date: Wed, 26 Jun 2024 10:23:32 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E5=AD=97=E5=85=B8=E5=80=BC=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E6=97=A0=E6=95=88.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/ExecCommandAnsiHandler.java | 29 +++++++++++------ .../host/upload/uploader/FileUploader.java | 4 +-- .../asset/service/UploadTaskService.java | 2 -- .../service/impl/ExecCommandServiceImpl.java | 32 +++++++++---------- .../service/impl/UploadTaskServiceImpl.java | 7 ++-- .../strategy/TerminalPreferenceStrategy.java | 2 +- .../service/impl/DictValueServiceImpl.java | 1 + 7 files changed, 43 insertions(+), 34 deletions(-) diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/command/handler/ExecCommandAnsiHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/command/handler/ExecCommandAnsiHandler.java index 6966b0fe..45514cfa 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/command/handler/ExecCommandAnsiHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/exec/command/handler/ExecCommandAnsiHandler.java @@ -31,7 +31,7 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { // 拼接启动日志 AnsiAppender appender = AnsiAppender.create() .append(AnsiForeground.BRIGHT_GREEN, "> 准备执行命令 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine() .append(AnsiForeground.BRIGHT_BLUE, "执行记录: ") .append(execCommand.getLogId()) @@ -81,7 +81,7 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { // 非脚本执行拼接开始执行日志 if (!Booleans.isTrue(execCommand.getScriptExec())) { appender.append(AnsiForeground.BRIGHT_GREEN, "> 开始执行命令 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine(); } this.appendLog(appender); @@ -94,7 +94,7 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { AnsiAppender startAppender = AnsiAppender.create() .newLine() .append(AnsiForeground.BRIGHT_GREEN, "> 准备上传脚本 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine() .append(AnsiForeground.BRIGHT_BLUE, "文件路径: ") .append(execHostCommand.getScriptPath()) @@ -105,18 +105,18 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { // 拼接完成日志 AnsiAppender finishAppender = AnsiAppender.create() .append(AnsiForeground.BRIGHT_GREEN, "< 脚本上传成功 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine() .newLine() .append(AnsiForeground.BRIGHT_GREEN, "> 开始执行脚本 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine(); this.appendLog(finishAppender); } catch (Exception e) { // 拼接失败日志 AnsiAppender errorAppender = AnsiAppender.create() .append(AnsiForeground.BRIGHT_RED, "< 脚本上传失败 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine(); this.appendLog(errorAppender); throw e; @@ -133,12 +133,12 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { if (this.status == ExecHostStatusEnum.INTERRUPTED) { // 中断执行 appender.append(AnsiForeground.BRIGHT_YELLOW, "< 命令执行中断 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine(); } else if (this.status == ExecHostStatusEnum.FAILED) { // 执行失败 appender.append(AnsiForeground.BRIGHT_RED, "< 命令执行失败 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine() .append(AnsiForeground.BRIGHT_RED, "错误原因: ") .append(this.getErrorMessage(e)) @@ -146,14 +146,14 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { } else if (this.status == ExecHostStatusEnum.TIMEOUT) { // 更新执行超时 appender.append(AnsiForeground.BRIGHT_YELLOW, "< 命令执行超时 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine(); } else { long ms = updateRecord.getFinishTime().getTime() - updateRecord.getStartTime().getTime(); Integer exitCode = updateRecord.getExitCode(); // 执行完成 appender.append(AnsiForeground.BRIGHT_GREEN, "< 命令执行完成 ") - .append(Dates.current()) + .append(this.getCurrentTime()) .newLine() .append(AnsiForeground.BRIGHT_BLUE, "exit: "); if (ExitCode.isSuccess(exitCode)) { @@ -173,4 +173,13 @@ public class ExecCommandAnsiHandler extends BaseExecCommandHandler { this.appendLog(appender); } + /** + * 获取当前时间 + * + * @return 当前时间 + */ + private String getCurrentTime() { + return Const.SPACE + Dates.current(); + } + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/upload/uploader/FileUploader.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/upload/uploader/FileUploader.java index 31a5a78e..d7b668ea 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/upload/uploader/FileUploader.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/upload/uploader/FileUploader.java @@ -8,6 +8,7 @@ import com.orion.net.host.SessionStore; import com.orion.net.host.sftp.SftpExecutor; import com.orion.spring.SpringHolder; import com.orion.visor.framework.common.constant.Const; +import com.orion.visor.framework.common.enums.EndpointDefine; import com.orion.visor.framework.common.file.FileClient; import com.orion.visor.framework.common.utils.PathUtils; import com.orion.visor.module.asset.dao.UploadTaskFileDAO; @@ -18,7 +19,6 @@ import com.orion.visor.module.asset.enums.HostSshOsTypeEnum; import com.orion.visor.module.asset.enums.UploadTaskFileStatusEnum; import com.orion.visor.module.asset.handler.host.upload.model.FileUploadFileItemDTO; import com.orion.visor.module.asset.service.HostTerminalService; -import com.orion.visor.module.asset.service.UploadTaskService; import com.orion.visor.module.asset.utils.SftpUtils; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -134,7 +134,7 @@ public class FileUploader implements IFileUploader { this.updateStatus(file, UploadTaskFileStatusEnum.UPLOADING); try { // 获取本地文件路径 - String endpoint = Strings.format(UploadTaskService.SWAP_ENDPOINT, taskId); + String endpoint = EndpointDefine.UPLOAD_SWAP.format(taskId); String localPath = localFileClient.getReturnPath(endpoint + Const.SLASH + file.getFileId()); // 检查文件是否存在 String remotePath = file.getRemotePath(); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/UploadTaskService.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/UploadTaskService.java index ec0470a3..988563fa 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/UploadTaskService.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/UploadTaskService.java @@ -19,8 +19,6 @@ import java.util.List; */ public interface UploadTaskService { - String SWAP_ENDPOINT = "/upload/swap/{}"; - /** * 创建上传任务 * diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecCommandServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecCommandServiceImpl.java index 5571042b..f46e0686 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecCommandServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecCommandServiceImpl.java @@ -14,7 +14,8 @@ import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; import com.orion.visor.framework.common.annotation.Keep; import com.orion.visor.framework.common.constant.Const; import com.orion.visor.framework.common.constant.ErrorMessage; -import com.orion.visor.framework.common.constant.PathConst; +import com.orion.visor.framework.common.constant.FileConst; +import com.orion.visor.framework.common.enums.EndpointDefine; import com.orion.visor.framework.common.file.FileClient; import com.orion.visor.framework.common.security.LoginUser; import com.orion.visor.framework.common.utils.PathUtils; @@ -140,10 +141,10 @@ public class ExecCommandServiceImpl implements ExecCommandService { execLogDAO.insert(execLog); Long execId = execLog.getId(); // 获取内置参数 - Map builtinsParams = this.getBaseBuiltinsParams(execId, request); + Map builtinParams = this.getBaseBuiltinParams(execId, request); // 设置主机日志 List execHostLogs = hosts.stream() - .map(s -> this.convertExecHostLog(s, execLog, hostConfigMap.get(s.getId()), builtinsParams)) + .map(s -> this.convertExecHostLog(s, execLog, hostConfigMap.get(s.getId()), builtinParams)) .collect(Collectors.toList()); execHostLogDAO.insertBatch(execHostLogs); // 操作日志 @@ -228,16 +229,16 @@ public class ExecCommandServiceImpl implements ExecCommandService { /** * 转换为 execHostLog * - * @param host host - * @param execLog execLog - * @param config config - * @param builtinsParams builtinsParams + * @param host host + * @param execLog execLog + * @param config config + * @param builtinParams builtinParams * @return execHostLog */ private ExecHostLogDO convertExecHostLog(HostDO host, ExecLogDO execLog, HostSshConfigModel config, - Map builtinsParams) { + Map builtinParams) { Long execId = execLog.getId(); Long hostId = host.getId(); // 脚本路径 @@ -246,7 +247,7 @@ public class ExecCommandServiceImpl implements ExecCommandService { scriptPath = this.buildScriptPath(config.getUsername(), config.getOsType(), execId, hostId); } // 获取参数 - String parameter = JSON.toJSONString(this.getHostParams(builtinsParams, host, config, scriptPath)); + String parameter = JSON.toJSONString(this.getHostParams(builtinParams, host, config, scriptPath)); return ExecHostLogDO.builder() .logId(execId) .hostId(hostId) @@ -267,7 +268,7 @@ public class ExecCommandServiceImpl implements ExecCommandService { * @param request request * @return params */ - private Map getBaseBuiltinsParams(Long execId, ExecCommandExecDTO request) { + private Map getBaseBuiltinParams(Long execId, ExecCommandExecDTO request) { String uuid = UUIds.random(); Date date = new Date(); // 输入参数 @@ -353,8 +354,7 @@ public class ExecCommandServiceImpl implements ExecCommandService { * @return logPath */ private String buildLogPath(Long logId, Long hostId) { - String logFile = "/" + PathConst.EXEC + "/" + logId + "/" + logId + "_" + hostId + ".log"; - return logsFileClient.getReturnPath(logFile); + return logsFileClient.getReturnPath(EndpointDefine.EXEC_LOG.format(logId, hostId)); } /** @@ -368,11 +368,11 @@ public class ExecCommandServiceImpl implements ExecCommandService { */ private String buildScriptPath(String username, String osType, Long logId, Long hostId) { HostSshOsTypeEnum os = HostSshOsTypeEnum.of(osType); - String name = PathConst.EXEC - + "_" + logId - + "_" + hostId + String name = FileConst.EXEC + + "/" + logId + + "/" + hostId + os.getScriptSuffix(); - return PathUtils.buildAppPath(HostSshOsTypeEnum.WINDOWS.equals(os), username, PathConst.SCRIPT, name); + return PathUtils.buildAppPath(HostSshOsTypeEnum.WINDOWS.equals(os), username, FileConst.SCRIPT, name); } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java index f19caeaf..27c80624 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/UploadTaskServiceImpl.java @@ -14,6 +14,7 @@ import com.orion.lang.utils.time.Dates; import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; import com.orion.visor.framework.common.annotation.Keep; import com.orion.visor.framework.common.constant.Const; +import com.orion.visor.framework.common.enums.EndpointDefine; import com.orion.visor.framework.common.constant.ErrorMessage; import com.orion.visor.framework.common.file.FileClient; import com.orion.visor.framework.common.security.LoginUser; @@ -140,7 +141,7 @@ public class UploadTaskServiceImpl implements UploadTaskService { } uploadTaskFileDAO.insertBatch(uploadFiles); // 设置 uploadToken - String token = fileUploadApi.createUploadToken(user.getId(), Strings.format(SWAP_ENDPOINT, id)); + String token = fileUploadApi.createUploadToken(user.getId(), EndpointDefine.UPLOAD_SWAP.format(id)); log.info("UploadTaskService-createUploadTask id: {}, effect: {}", id, effect); // 添加日志参数 OperatorLogs.add(OperatorLogs.NAME, record.getDescription()); @@ -296,7 +297,7 @@ public class UploadTaskServiceImpl implements UploadTaskService { } // 查询记录 List paths = idList.stream() - .map(s -> Strings.format(SWAP_ENDPOINT, s)) + .map(EndpointDefine.UPLOAD_SWAP::format) .map(localFileClient::getReturnPath) .map(localFileClient::getAbsolutePath) .collect(Collectors.toList()); @@ -348,7 +349,7 @@ public class UploadTaskServiceImpl implements UploadTaskService { .collect(Collectors.groupingBy(UploadTaskFileDO::getFileId)); fileIdGroups.forEach((k, v) -> { // 获取文件实际路径 - String path = localFileClient.getReturnPath(Strings.format(SWAP_ENDPOINT, id) + Const.SLASH + k); + String path = localFileClient.getReturnPath(EndpointDefine.UPLOAD_SWAP.format(id) + Const.SLASH + k); File file = new File(localFileClient.getAbsolutePath(path)); // 文件不存在/大小不正确 if (!Files1.isFile(file) || file.length() != v.get(0).getFileSize()) { diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java index 88eaec85..9dc3be1e 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java @@ -29,7 +29,7 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy schema = dictKeyService.getDictSchema(key); // 转换 return values.stream() + .sorted(Comparator.comparing(DictValueDO::getSort)) .map(s -> { // 设置值 JSONObject item = new JSONObject();