优化别名逻辑.

This commit is contained in:
lijiahangmax
2024-02-29 23:25:00 +08:00
parent 44dd5a9079
commit 1c6a38d5d9
18 changed files with 304 additions and 354 deletions

View File

@@ -64,4 +64,7 @@ public class HostVO implements Serializable {
@Schema(description = "别名")
private String alias;
@Schema(description = "颜色")
private String color;
}

View File

@@ -3,7 +3,9 @@ package com.orion.ops.module.asset.enums;
import com.orion.ops.framework.common.handler.data.GenericsDataDefinition;
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
import com.orion.ops.module.asset.handler.host.extra.model.HostColorExtraModel;
import com.orion.ops.module.asset.handler.host.extra.model.HostSshExtraModel;
import com.orion.ops.module.asset.handler.host.extra.strategy.HostColorExtraStrategy;
import com.orion.ops.module.asset.handler.host.extra.strategy.HostSshExtraStrategy;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -24,6 +26,11 @@ public enum HostExtraItemEnum implements GenericsDataDefinition {
*/
SSH("ssh", HostSshExtraModel.class, HostSshExtraStrategy.class),
/**
* 颜色额外配置
*/
COLOR("color", HostColorExtraModel.class, HostColorExtraStrategy.class),
;
private final String item;

View File

@@ -0,0 +1,27 @@
package com.orion.ops.module.asset.handler.host.extra.model;
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 主机拓展信息 - color 模型
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/29 23:16
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "HostExtraSshModel", description = "主机拓展信息 - color 模型")
public class HostColorExtraModel implements GenericsDataModel {
@Schema(description = "颜色")
private String color;
}

View File

@@ -0,0 +1,37 @@
package com.orion.ops.module.asset.handler.host.extra.strategy;
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
import com.orion.ops.module.asset.handler.host.extra.model.HostColorExtraModel;
import org.springframework.stereotype.Component;
/**
* 主机拓展信息 - 颜色 模型处理策略
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/2/29 23:16
*/
@Component
public class HostColorExtraStrategy implements MapDataStrategy<HostColorExtraModel> {
@Override
public HostColorExtraModel getDefault() {
return HostColorExtraModel.builder()
// 默认透明
.color("")
.build();
}
@Override
public void updateFill(HostColorExtraModel beforeModel, HostColorExtraModel afterModel) {
}
@Override
public void preValid(HostColorExtraModel model) {
}
@Override
public void valid(HostColorExtraModel model) {
}
}

View File

@@ -1,6 +1,8 @@
package com.orion.ops.module.asset.service.impl;
import com.alibaba.fastjson.JSON;
import com.orion.lang.function.Functions;
import com.orion.lang.utils.Refs;
import com.orion.lang.utils.collect.Lists;
import com.orion.lang.utils.collect.Maps;
import com.orion.ops.framework.common.constant.Const;
@@ -10,8 +12,10 @@ 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.enums.HostConnectTypeEnum;
import com.orion.ops.module.asset.handler.host.extra.model.HostColorExtraModel;
import com.orion.ops.module.asset.service.*;
import com.orion.ops.module.infra.api.*;
import com.orion.ops.module.infra.constant.DataExtraItems;
import com.orion.ops.module.infra.entity.dto.data.DataGroupDTO;
import com.orion.ops.module.infra.entity.dto.tag.TagDTO;
import com.orion.ops.module.infra.enums.*;
@@ -67,7 +71,7 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic
private TagRelApi tagRelApi;
@Resource
private DataAliasApi dataAliasApi;
private DataExtraApi dataExtraApi;
@Override
public List<Long> getAuthorizedDataRelId(DataPermissionTypeEnum type, AssetAuthorizedDataQueryRequest request) {
@@ -179,8 +183,10 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic
Future<List<Long>> favoriteResult = favoriteApi.getFavoriteRelIdListAsync(FavoriteTypeEnum.HOST, userId);
// 查询最近连接的主机
Future<List<Long>> latestConnectHostIdList = hostConnectLogService.getLatestConnectHostIdAsync(HostConnectTypeEnum.SSH, userId);
// 查询数据别名
Future<Map<Long, String>> dataAliasResult = dataAliasApi.getDataAliasAsync(userId, DataExtraTypeEnum.HOST);
// 查询别名
Future<Map<Long, String>> dataAliasResult = dataExtraApi.getExtraItemValuesByCacheAsync(userId, DataExtraTypeEnum.HOST, DataExtraItems.ALIAS);
// 查询颜色
Future<Map<Long, String>> dataColorResult = dataExtraApi.getExtraItemValuesByCacheAsync(userId, DataExtraTypeEnum.HOST, DataExtraItems.COLOR);
// 查询分组
List<DataGroupDTO> dataGroup = dataGroupApi.getDataGroupList(DataGroupTypeEnum.HOST);
// 查询分组引用
@@ -207,7 +213,8 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic
// 设置主机拓展信息
this.getAuthorizedHostExtra(wrapper.getHostList(),
favoriteResult.get(),
dataAliasResult.get());
dataAliasResult.get(),
dataColorResult.get());
// 设置最近连接的主机
wrapper.setLatestHosts(new LinkedHashSet<>(latestConnectHostIdList.get()));
return wrapper;
@@ -292,10 +299,12 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic
* @param hosts hosts
* @param favorite favorite
* @param aliasMap aliasMap
* @param colorMap colorMap
*/
private void getAuthorizedHostExtra(List<HostVO> hosts,
List<Long> favorite,
Map<Long, String> aliasMap) {
Map<Long, String> aliasMap,
Map<Long, String> colorMap) {
if (Lists.isEmpty(hosts)) {
return;
}
@@ -313,7 +322,21 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic
}
// 设置主机别名
if (!Maps.isEmpty(aliasMap)) {
hosts.forEach(s -> s.setAlias(aliasMap.get(s.getId())));
hosts.forEach(s -> {
String alias = aliasMap.get(s.getId());
if (alias != null) {
s.setAlias(Refs.unrefToString(alias));
}
});
}
// 设置主机颜色
if (!Maps.isEmpty(colorMap)) {
hosts.forEach(s -> {
HostColorExtraModel color = JSON.parseObject(colorMap.get(s.getId()), HostColorExtraModel.class);
if (color != null) {
s.setColor(Refs.unrefToString(color.getColor()));
}
});
}
}

View File

@@ -1,6 +1,7 @@
package com.orion.ops.module.asset.service.impl;
import com.orion.lang.function.Functions;
import com.orion.lang.utils.Refs;
import com.orion.lang.utils.collect.Maps;
import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
@@ -12,9 +13,8 @@ import com.orion.ops.module.asset.entity.request.host.HostExtraQueryRequest;
import com.orion.ops.module.asset.entity.request.host.HostExtraUpdateRequest;
import com.orion.ops.module.asset.enums.HostExtraItemEnum;
import com.orion.ops.module.asset.service.HostExtraService;
import com.orion.ops.module.infra.api.DataAliasApi;
import com.orion.ops.module.infra.api.DataExtraApi;
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
import com.orion.ops.module.infra.constant.DataExtraItems;
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
import com.orion.ops.module.infra.entity.dto.data.DataExtraSetDTO;
@@ -36,20 +36,18 @@ import java.util.stream.Collectors;
@Service
public class HostExtraServiceImpl implements HostExtraService {
@Resource
private DataAliasApi dataAliasApi;
@Resource
private DataExtraApi dataExtraApi;
@Override
public Integer updateHostAlias(HostAliasUpdateRequest request) {
DataAliasUpdateDTO update = DataAliasUpdateDTO.builder()
DataExtraSetDTO update = DataExtraSetDTO.builder()
.userId(SecurityUtils.getLoginUserId())
.item(DataExtraItems.ALIAS)
.relId(request.getId())
.alias(request.getName())
.value(Refs.json(request.getName()))
.build();
return dataAliasApi.updateDataAlias(update, DataExtraTypeEnum.HOST);
return dataExtraApi.setExtraItem(update, DataExtraTypeEnum.HOST);
}
@Override