From 5a33ac6b869efd6c7db1d573f62ed892ecbf492b Mon Sep 17 00:00:00 2001 From: lijiahang Date: Fri, 12 Jan 2024 16:56:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=82=E6=AD=A5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9C=80=E8=BF=91=E8=BF=9E=E6=8E=A5=E4=B8=BB=E6=9C=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../asset/controller/HostTerminalController.java | 3 +++ .../asset/entity/vo/AuthorizedHostWrapperVO.java | 5 ++++- .../module/asset/service/HostConnectLogService.java | 10 ++++++++++ .../impl/AssetAuthorizedDataServiceImpl.java | 13 +++++++++---- .../service/impl/HostConnectLogServiceImpl.java | 11 +++++++++++ .../module/asset/service/impl/HostServiceImpl.java | 2 ++ .../ops/module/infra/api/impl/DataAliasApiImpl.java | 2 ++ 7 files changed, 41 insertions(+), 5 deletions(-) diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java index 4bb55b71..5c351929 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostTerminalController.java @@ -1,6 +1,8 @@ package com.orion.ops.module.asset.controller; import com.alibaba.fastjson.JSONArray; +import com.orion.ops.framework.log.core.annotation.IgnoreLog; +import com.orion.ops.framework.log.core.enums.IgnoreLogMode; import com.orion.ops.framework.web.core.annotation.RestWrapper; import com.orion.ops.module.asset.service.HostTerminalService; import io.swagger.v3.oas.annotations.Operation; @@ -33,6 +35,7 @@ public class HostTerminalController { @Resource private HostTerminalService hostTerminalService; + @IgnoreLog(IgnoreLogMode.ALL) @GetMapping("/themes") @Operation(summary = "获取主机终端主题") public JSONArray getTerminalThemes() { diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/AuthorizedHostWrapperVO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/AuthorizedHostWrapperVO.java index d7cb3c2f..ee964adc 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/AuthorizedHostWrapperVO.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/vo/AuthorizedHostWrapperVO.java @@ -30,7 +30,10 @@ public class AuthorizedHostWrapperVO { @Schema(description = "授权的主机列表") private List hostList; - @Schema(description = "分组树节点映射 'groupId':hostIdList") + @Schema(description = "分组树节点映射 groupId:hostIdList") private Map> treeNodes; + @Schema(description = "最近访问的主机") + private List latestHosts; + } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConnectLogService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConnectLogService.java index c262e804..85a08145 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConnectLogService.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConnectLogService.java @@ -8,6 +8,7 @@ import com.orion.ops.module.asset.enums.HostConnectStatusEnum; import com.orion.ops.module.asset.enums.HostConnectTypeEnum; import java.util.List; +import java.util.concurrent.Future; /** * 主机连接日志 服务类 @@ -50,4 +51,13 @@ public interface HostConnectLogService { */ List getLatestConnectHostId(HostConnectLogQueryRequest request); + /** + * 查询用户最近连接的主机 + * + * @param type type + * @param userId userId + * @return hostId + */ + Future> getLatestConnectHostIdAsync(HostConnectTypeEnum type, Long userId); + } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java index 3c2696c0..1269b7a7 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java @@ -9,10 +9,8 @@ import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.module.asset.convert.HostGroupConvert; import com.orion.ops.module.asset.entity.request.asset.AssetAuthorizedDataQueryRequest; import com.orion.ops.module.asset.entity.vo.*; -import com.orion.ops.module.asset.service.AssetAuthorizedDataService; -import com.orion.ops.module.asset.service.HostIdentityService; -import com.orion.ops.module.asset.service.HostKeyService; -import com.orion.ops.module.asset.service.HostService; +import com.orion.ops.module.asset.enums.HostConnectTypeEnum; +import com.orion.ops.module.asset.service.*; import com.orion.ops.module.infra.api.*; import com.orion.ops.module.infra.entity.dto.data.DataGroupDTO; import com.orion.ops.module.infra.entity.dto.tag.TagDTO; @@ -59,6 +57,9 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic @Resource private HostIdentityService hostIdentityService; + @Resource + private HostConnectLogService hostConnectLogService; + @Resource private FavoriteApi favoriteApi; @@ -176,6 +177,8 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic AuthorizedHostWrapperVO wrapper = new AuthorizedHostWrapperVO(); // 查询我的收藏 Future> favoriteResult = favoriteApi.getFavoriteRelIdListAsync(FavoriteTypeEnum.HOST, userId); + // 查询最近连接的主机 + Future> latestConnectHostIdList = hostConnectLogService.getLatestConnectHostIdAsync(HostConnectTypeEnum.SSH, userId); // 查询数据别名 Future> dataAliasResult = dataAliasApi.getDataAliasAsync(userId, DataExtraTypeEnum.HOST); // 查询分组 @@ -205,6 +208,8 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic this.getAuthorizedHostExtra(wrapper.getHostList(), favoriteResult.get(), dataAliasResult.get()); + // 设置最近连接的主机 + wrapper.setLatestHosts(latestConnectHostIdList.get()); return wrapper; } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConnectLogServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConnectLogServiceImpl.java index b8bea1b3..0d90f83e 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConnectLogServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConnectLogServiceImpl.java @@ -2,6 +2,7 @@ package com.orion.ops.module.asset.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.lang.constant.Const; import com.orion.lang.define.wrapper.DataGrid; import com.orion.lang.utils.Arrays1; import com.orion.ops.framework.mybatis.core.query.Conditions; @@ -16,11 +17,14 @@ import com.orion.ops.module.asset.enums.HostConnectStatusEnum; import com.orion.ops.module.asset.enums.HostConnectTypeEnum; import com.orion.ops.module.asset.service.HostConnectLogService; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Future; /** * 主机连接日志 服务实现类 @@ -75,6 +79,13 @@ public class HostConnectLogServiceImpl implements HostConnectLogService { return hostConnectLogDAO.selectLatestConnectHostId(SecurityUtils.getLoginUserId(), request.getType(), request.getLimit()); } + @Override + @Async("asyncExecutor") + public Future> getLatestConnectHostIdAsync(HostConnectTypeEnum type, Long userId) { + List hostIdList = hostConnectLogDAO.selectLatestConnectHostId(userId, type.name(), Const.N_10); + return CompletableFuture.completedFuture(hostIdList); + } + /** * 构建查询 wrapper * diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostServiceImpl.java index ed67f257..bbd5c912 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostServiceImpl.java @@ -36,6 +36,7 @@ import com.orion.ops.module.infra.enums.TagTypeEnum; import com.orion.spring.SpringHolder; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -211,6 +212,7 @@ public class HostServiceImpl implements HostService { } @Override + @Async("asyncExecutor") public void deleteHostRelByIdAsync(Long id) { // 删除配置 hostConfigDAO.deleteByHostId(id); diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataAliasApiImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataAliasApiImpl.java index 059e5cfc..ef6b91c9 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataAliasApiImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataAliasApiImpl.java @@ -7,6 +7,7 @@ import com.orion.ops.module.infra.entity.request.data.DataAliasUpdateRequest; import com.orion.ops.module.infra.enums.DataExtraTypeEnum; import com.orion.ops.module.infra.service.DataAliasService; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -53,6 +54,7 @@ public class DataAliasApiImpl implements DataAliasApi { } @Override + @Async("asyncExecutor") public Future> getDataAliasAsync(Long userId, DataExtraTypeEnum type) { Valid.notNull(userId); return CompletableFuture.completedFuture(dataAliasService.getDataAlias(userId, type.name()));