From 2d5835b150db98188993a8320c02350c81516a82 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Wed, 5 Feb 2025 10:45:16 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E9=80=BB=E8=BE=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/TerminalConnectHandler.java | 5 +++++ .../host/terminal/model/TerminalConfig.java | 5 +++++ .../terminal/model/response/SftpFileVO.java | 5 +++++ .../host/terminal/session/SftpSession.java | 19 ++++++++++++++--- .../transfer/session/TransferSession.java | 3 --- .../host/transfer/session/UploadSession.java | 2 +- .../host/upload/uploader/FileUploader.java | 5 +---- .../terminal/components/sftp/sftp-table.vue | 21 ++----------------- .../src/views/host/terminal/types/define.ts | 1 + 9 files changed, 36 insertions(+), 30 deletions(-) diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalConnectHandler.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalConnectHandler.java index 5afbf62a..335d8bad 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalConnectHandler.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalConnectHandler.java @@ -34,6 +34,7 @@ import org.dromara.visor.common.constant.ErrorMessage; import org.dromara.visor.common.constant.ExtraFieldConst; import org.dromara.visor.common.enums.BooleanBit; import org.dromara.visor.framework.websocket.core.utils.WebSockets; +import org.dromara.visor.module.asset.define.config.AppSftpConfig; import org.dromara.visor.module.asset.entity.dto.TerminalConnectDTO; import org.dromara.visor.module.asset.enums.TerminalConnectStatusEnum; import org.dromara.visor.module.asset.enums.TerminalConnectTypeEnum; @@ -64,6 +65,9 @@ import java.util.Map; @Component public class TerminalConnectHandler extends AbstractTerminalHandler { + @Resource + private AppSftpConfig appSftpConfig; + @Resource private TerminalConnectLogService terminalConnectLogService; @@ -136,6 +140,7 @@ public class TerminalConnectHandler extends AbstractTerminalHandler executor.listFiles(s, true, false)) .flatMap(Collection::stream) - .map(SftpSession::fileMapping) + .map(this::fileMapping) .collect(Collectors.toList()); } @@ -197,7 +198,7 @@ public class SftpSession extends TerminalSession implements ISftpSession { * @param sftpFile sftpFile * @return file */ - private static SftpFileVO fileMapping(SftpFile sftpFile) { + private SftpFileVO fileMapping(SftpFile sftpFile) { SftpFileVO file = new SftpFileVO(); file.setName(sftpFile.getName()); file.setPath(sftpFile.getPath()); @@ -212,7 +213,19 @@ public class SftpSession extends TerminalSession implements ISftpSession { .map(FileType.DIRECTORY::equals) .orElse(false); file.setIsDir(isDir); + file.setCanPreview(this.calcCanPreview(sftpFile)); return file; } + /** + * 检查是否可预览 + * + * @param file file + * @return canPreview + */ + private boolean calcCanPreview(SftpFile file) { + // 检查文件类型及大小 + return file.isRegularFile() && file.getSize() <= Objects1.def(config.getFilePreviewSize(), Const.N_2) * 1024 * 1024; + } + } diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/TransferSession.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/TransferSession.java index 1ab70d6a..e1f77744 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/TransferSession.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/TransferSession.java @@ -34,7 +34,6 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorLogModel; import org.dromara.visor.framework.biz.operator.log.core.service.OperatorLogFrameworkService; import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs; -import org.dromara.visor.module.asset.define.config.AppSftpConfig; import org.dromara.visor.module.asset.entity.dto.TerminalConnectDTO; import org.dromara.visor.module.asset.handler.host.terminal.utils.TerminalUtils; import org.dromara.visor.module.asset.handler.host.transfer.enums.TransferReceiver; @@ -54,8 +53,6 @@ import java.util.Map; @Slf4j public abstract class TransferSession implements ITransferSession { - protected static final AppSftpConfig sftpConfig = SpringHolder.getBean(AppSftpConfig.class); - protected final TerminalConnectDTO connectInfo; protected final SessionStore sessionStore; diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/UploadSession.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/UploadSession.java index 5091fc4c..e63b814c 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/UploadSession.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/transfer/session/UploadSession.java @@ -62,7 +62,7 @@ public class UploadSession extends TransferSession { // 检查连接 this.init(); // 检查文件是否存在 - SftpUtils.checkUploadFilePresent(sftpConfig, executor, path); + SftpUtils.checkUploadFilePresent(executor, path); // 打开输出流 this.outputStream = executor.openOutputStream(path); // 响应结果 diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/upload/uploader/FileUploader.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/upload/uploader/FileUploader.java index 07d67b80..8407126a 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/upload/uploader/FileUploader.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/upload/uploader/FileUploader.java @@ -38,7 +38,6 @@ import org.dromara.visor.common.enums.EndpointDefine; import org.dromara.visor.common.interfaces.FileClient; import org.dromara.visor.common.utils.PathUtils; import org.dromara.visor.module.asset.dao.UploadTaskFileDAO; -import org.dromara.visor.module.asset.define.config.AppSftpConfig; import org.dromara.visor.module.asset.entity.domain.UploadTaskFileDO; import org.dromara.visor.module.asset.entity.dto.TerminalConnectDTO; import org.dromara.visor.module.asset.enums.HostOsTypeEnum; @@ -70,8 +69,6 @@ public class FileUploader implements IFileUploader { private static final UploadTaskFileDAO uploadTaskFileDAO = SpringHolder.getBean(UploadTaskFileDAO.class); - private static final AppSftpConfig sftpConfig = SpringHolder.getBean(AppSftpConfig.class); - private static final FileClient localFileClient = SpringHolder.getBean("localFileClient"); private TerminalConnectDTO connectInfo; @@ -189,7 +186,7 @@ public class FileUploader implements IFileUploader { String endpoint = EndpointDefine.UPLOAD_SWAP.format(taskId); String localPath = localFileClient.getReturnPath(endpoint + Const.SLASH + file.getFileId()); // 检查文件是否存在 - SftpUtils.checkUploadFilePresent(sftpConfig, executor, path); + SftpUtils.checkUploadFilePresent(executor, path); // 打开输出流 this.inputStream = localFileClient.getContentInputStream(localPath); this.outputStream = executor.openOutputStream(path); diff --git a/orion-visor-ui/src/views/host/terminal/components/sftp/sftp-table.vue b/orion-visor-ui/src/views/host/terminal/components/sftp/sftp-table.vue index ade1e74e..5e295e9d 100644 --- a/orion-visor-ui/src/views/host/terminal/components/sftp/sftp-table.vue +++ b/orion-visor-ui/src/views/host/terminal/components/sftp/sftp-table.vue @@ -68,7 +68,7 @@ - import type { TableData } from '@arco-design/web-vue/es/table/interface'; import type { SftpFile, ISftpSession } from '../../types/define'; - import type { SftpSetting } from '@/api/system/setting'; - import { ref, computed, watch, inject, onMounted } from 'vue'; + import { ref, computed, watch, inject } from 'vue'; import { useRowSelection } from '@/hooks/table'; import { dateFormat } from '@/utils'; import { setAutoFocus } from '@/utils/dom'; import { copy } from '@/hooks/copy'; import columns from './types/table.columns'; import { FILE_TYPE, openSftpChmodModalKey, openSftpMoveModalKey } from '../../types/const'; - import { useCacheStore } from '@/store'; const props = defineProps<{ session?: ISftpSession; @@ -169,8 +167,6 @@ const rowSelection = useRowSelection({ width: 40 }); - const previewSize = ref(0); - // 切换页面自动清空过滤 watch(() => props.list, () => { tableRef.value?.clearFilters(); @@ -205,13 +201,6 @@ record.hover = false; }; - // 是否可编辑 - const canEditable = (size: number, attr: string) => { - // 是普通文件 && 文件小于 配置大小(MB) 可以编辑 - return FILE_TYPE.NORMAL_FILE.value == formatFileType(attr).value - && size <= (previewSize.value || 0) * 1024 * 1024; - }; - // 点击文件名称 const clickFilename = (record: TableData) => { if (record.isDir) { @@ -279,12 +268,6 @@ }) || FILE_TYPE.NORMAL_FILE; }; - // 加载配置 - onMounted(async () => { - const { sftp } = await useCacheStore().loadSystemSetting(); - previewSize.value = sftp?.previewSize; - }); -