diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/HostAgentController.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/HostAgentController.java index e409bba3..fe3b4775 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/HostAgentController.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/HostAgentController.java @@ -45,6 +45,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.util.List; +import java.util.Map; /** * 主机探针端点 api @@ -90,9 +91,8 @@ public class HostAgentController { @PostMapping("/install") @Operation(summary = "安装主机探针") @PreAuthorize("@ss.hasPermission('asset:host:install-agent')") - public Boolean installAgent(@Validated @RequestBody HostAgentInstallRequest request) { - hostAgentService.installAgent(request); - return true; + public Map installAgent(@Validated @RequestBody HostAgentInstallRequest request) { + return hostAgentService.installAgent(request); } @DemoDisableApi diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/HostAgentService.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/HostAgentService.java index 72a7d9d4..6b4f984b 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/HostAgentService.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/HostAgentService.java @@ -27,6 +27,7 @@ import org.dromara.visor.module.asset.entity.vo.HostAgentStatusVO; import org.springframework.web.multipart.MultipartFile; import java.util.List; +import java.util.Map; /** * 主机探针 服务类 @@ -49,8 +50,9 @@ public interface HostAgentService { * 安装探针 * * @param request request + * @return agentKey:installId */ - void installAgent(HostAgentInstallRequest request); + Map installAgent(HostAgentInstallRequest request); /** * 上传探针发布包 diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentServiceImpl.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentServiceImpl.java index e281abbd..fa9ee57c 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentServiceImpl.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentServiceImpl.java @@ -22,6 +22,7 @@ */ package org.dromara.visor.module.asset.service.impl; +import cn.orionsec.kit.lang.function.Functions; import cn.orionsec.kit.lang.utils.Exceptions; import cn.orionsec.kit.lang.utils.Strings; import cn.orionsec.kit.lang.utils.collect.Lists; @@ -133,7 +134,7 @@ public class HostAgentServiceImpl implements HostAgentService { } @Override - public void installAgent(HostAgentInstallRequest request) { + public Map installAgent(HostAgentInstallRequest request) { // 查询主机信息 List idList = request.getIdList(); List hosts = hostDAO.selectBatchIds(idList); @@ -181,6 +182,12 @@ public class HostAgentServiceImpl implements HostAgentService { // 执行任务 AgentInstaller.start(params); } + + // 返回 + return agentLogs.stream() + .collect(Collectors.toMap(HostAgentLogDO::getAgentKey, + HostAgentLogDO::getId, + Functions.right())); } @Override diff --git a/orion-visor-ui/src/api/asset/host-agent.ts b/orion-visor-ui/src/api/asset/host-agent.ts index 7af74484..ec294642 100644 --- a/orion-visor-ui/src/api/asset/host-agent.ts +++ b/orion-visor-ui/src/api/asset/host-agent.ts @@ -50,7 +50,7 @@ export interface HostAgentInstallStatusUpdateRequest { * 安装主机探针 */ export function installHostAgent(request: HostInstallAgentRequest) { - return axios.post('/asset/host-agent/install', request); + return axios.post>('/asset/host-agent/install', request); } /** diff --git a/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-card-list.vue b/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-card-list.vue index 24c6b13b..f045eaaf 100644 --- a/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-card-list.vue +++ b/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-card-list.vue @@ -405,7 +405,6 @@ } = useMonitorHostList({ hosts: renderList, setLoading, - reload, }); // 重置条件 diff --git a/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-table.vue b/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-table.vue index 0b7fe711..6b302cad 100644 --- a/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-table.vue +++ b/orion-visor-ui/src/views/monitor/monitor-host/components/monitor-host-table.vue @@ -456,7 +456,6 @@ } = useMonitorHostList({ hosts: tableRenderData, setLoading, - reload, }); // 获取行样式 diff --git a/orion-visor-ui/src/views/monitor/monitor-host/types/use-monitor-host-list.ts b/orion-visor-ui/src/views/monitor/monitor-host/types/use-monitor-host-list.ts index c159e9fe..4a47e3ad 100644 --- a/orion-visor-ui/src/views/monitor/monitor-host/types/use-monitor-host-list.ts +++ b/orion-visor-ui/src/views/monitor/monitor-host/types/use-monitor-host-list.ts @@ -16,8 +16,6 @@ export interface UseMonitorHostListOptions { hosts: Ref>; // 设置加载中 setLoading: (loading: boolean) => void; - // 重新加载 - reload: () => void; } // 使用监控主机列表 @@ -29,7 +27,7 @@ export default function useMonitorHostList(options: UseMonitorHostListOptions) { const router = useRouter(); const { toggleDict } = useDictStore(); - const { hosts, setLoading, reload } = options; + const { hosts, setLoading } = options; // 打开详情 const openDetail = (hostId: number, name: string) => { @@ -65,10 +63,18 @@ export default function useMonitorHostList(options: UseMonitorHostListOptions) { onOk: async () => { try { // 调用安装 - await installHostAgent({ idList: hostIdList }); + const { data } = await installHostAgent({ idList: hostIdList }); Message.success('开始安装'); - // 重新加载 - reload(); + // 设置状态 + installHosts.forEach(host => { + const installId = data[host.agentKey]; + if (installId) { + host.installLog = { + id: installId, + eventStatus: AgentLogStatus.WAIT, + } as any; + } + }); } finally { setLoading(false); }