From a365b8a9555bd69a23de2b6c26400b0d7b9d9f1c Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Wed, 20 Dec 2023 22:17:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=AE=9A=E4=B9=89=E6=A0=87?= =?UTF-8?q?=E5=87=86=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/data/model/GenericsDataModel.java | 8 +++---- .../data/strategy/GenericsDataStrategy.java | 14 ++++++------- .../data/strategy/MapDataStrategy.java | 16 ++++++++++++++ .../asset/enums/HostConfigTypeEnum.java | 21 +++++++------------ .../host/config/model/HostSshConfigModel.java | 3 ++- .../strategy/HostSshConfigStrategy.java | 3 ++- .../asset/service/HostConfigService.java | 4 ++-- .../service/impl/HostConfigServiceImpl.java | 13 ++++++------ .../service/impl/DataAliasServiceImpl.java | 2 +- .../service/impl/DataExtraServiceImpl.java | 8 +++---- 10 files changed, 52 insertions(+), 40 deletions(-) rename orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostConfigModel.java => orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/model/GenericsDataModel.java (61%) rename orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostConfigStrategy.java => orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/GenericsDataStrategy.java (66%) create mode 100644 orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/MapDataStrategy.java diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostConfigModel.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/model/GenericsDataModel.java similarity index 61% rename from orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostConfigModel.java rename to orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/model/GenericsDataModel.java index bbfb1ed1..1e2c31a8 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostConfigModel.java +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/model/GenericsDataModel.java @@ -1,15 +1,15 @@ -package com.orion.ops.module.asset.handler.host.config.model; +package com.orion.ops.framework.common.handler.data.model; import com.alibaba.fastjson.JSON; /** - * 主机配置父类 + * 标准数据模型 * * @author Jiahang Li * @version 1.0.0 - * @since 2023/9/13 14:47 + * @since 2023/12/20 22:07 */ -public interface HostConfigModel { +public interface GenericsDataModel { /** * 序列化 diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostConfigStrategy.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/GenericsDataStrategy.java similarity index 66% rename from orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostConfigStrategy.java rename to orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/GenericsDataStrategy.java index 3becbc24..edad1453 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostConfigStrategy.java +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/GenericsDataStrategy.java @@ -1,17 +1,15 @@ -package com.orion.ops.module.asset.handler.host.config.strategy; +package com.orion.ops.framework.common.handler.data.strategy; -import com.orion.ops.module.asset.handler.host.config.model.HostConfigModel; - -import java.util.Map; +import com.orion.ops.framework.common.handler.data.model.GenericsDataModel; /** - * 主机配置策略 + * 标准数据处理策略 * * @author Jiahang Li * @version 1.0.0 - * @since 2023/9/19 14:27 + * @since 2023/12/20 22:09 */ -public interface HostConfigStrategy { +public interface GenericsDataStrategy { /** * 获取默认值 @@ -48,6 +46,6 @@ public interface HostConfigStrategy { * @param config config * @return 视图配置 */ - Map toView(String config); + View toView(String config); } diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/MapDataStrategy.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/MapDataStrategy.java new file mode 100644 index 00000000..f6ed667e --- /dev/null +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/handler/data/strategy/MapDataStrategy.java @@ -0,0 +1,16 @@ +package com.orion.ops.framework.common.handler.data.strategy; + +import com.orion.ops.framework.common.handler.data.model.GenericsDataModel; + +import java.util.Map; + +/** + * map 数据处理策略 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/12/20 22:11 + */ +public interface MapDataStrategy extends GenericsDataStrategy> { + +} diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/enums/HostConfigTypeEnum.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/enums/HostConfigTypeEnum.java index 32f2f5ee..3ecfe6ce 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/enums/HostConfigTypeEnum.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/enums/HostConfigTypeEnum.java @@ -1,12 +1,13 @@ package com.orion.ops.module.asset.enums; import com.orion.ops.framework.common.enums.EnableStatus; -import com.orion.ops.module.asset.handler.host.config.model.HostConfigModel; +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.config.model.HostSshConfigModel; -import com.orion.ops.module.asset.handler.host.config.strategy.HostConfigStrategy; import com.orion.ops.module.asset.handler.host.config.strategy.HostSshConfigStrategy; import com.orion.spring.SpringHolder; import lombok.AllArgsConstructor; +import lombok.Getter; /** * 主机配置类型枚举 @@ -25,10 +26,12 @@ public enum HostConfigTypeEnum { ; - private final Class type; + @Getter + private final Class type; - private final Class> strategy; + private final Class> strategy; + @Getter private final Integer defaultStatus; public static HostConfigTypeEnum of(String type) { @@ -43,17 +46,9 @@ public enum HostConfigTypeEnum { return null; } - public Class getType() { - return type; - } - @SuppressWarnings("unchecked") - public > T getStrategy() { + public > T getStrategy() { return (T) SpringHolder.getBean(strategy); } - public Integer getDefaultStatus() { - return defaultStatus; - } - } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostSshConfigModel.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostSshConfigModel.java index 9ff51e07..9d9c9330 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostSshConfigModel.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/model/HostSshConfigModel.java @@ -1,5 +1,6 @@ package com.orion.ops.module.asset.handler.host.config.model; +import com.orion.ops.framework.common.handler.data.model.GenericsDataModel; import com.orion.ops.framework.common.security.UpdatePasswordAction; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -24,7 +25,7 @@ import javax.validation.constraints.Size; @NoArgsConstructor @AllArgsConstructor @Schema(name = "HostSftpConfig", description = "主机 SSH 配置") -public class HostSshConfigModel implements HostConfigModel, UpdatePasswordAction { +public class HostSshConfigModel implements GenericsDataModel, UpdatePasswordAction { @NotNull @Range(min = 1, max = 65535) diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java index 85847123..001460a4 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java @@ -7,6 +7,7 @@ import com.orion.lang.utils.Exceptions; import com.orion.lang.utils.Strings; import com.orion.ops.framework.common.constant.Const; import com.orion.ops.framework.common.constant.ErrorMessage; +import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy; import com.orion.ops.framework.common.security.PasswordModifier; import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.module.asset.dao.HostIdentityDAO; @@ -26,7 +27,7 @@ import java.util.Map; * @since 2023/9/19 14:26 */ @Component -public class HostSshConfigStrategy implements HostConfigStrategy { +public class HostSshConfigStrategy implements MapDataStrategy { @Resource private HostKeyDAO hostKeyDAO; diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConfigService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConfigService.java index dc05cd78..ad505fa7 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConfigService.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostConfigService.java @@ -1,10 +1,10 @@ package com.orion.ops.module.asset.service; +import com.orion.ops.framework.common.handler.data.model.GenericsDataModel; import com.orion.ops.module.asset.entity.request.host.HostConfigUpdateRequest; import com.orion.ops.module.asset.entity.request.host.HostConfigUpdateStatusRequest; import com.orion.ops.module.asset.entity.vo.HostConfigVO; import com.orion.ops.module.asset.enums.HostConfigTypeEnum; -import com.orion.ops.module.asset.handler.host.config.model.HostConfigModel; import java.util.List; @@ -33,7 +33,7 @@ public interface HostConfigService { * @param type type * @return 配置 */ - T getHostConfig(Long hostId, HostConfigTypeEnum type); + T getHostConfig(Long hostId, HostConfigTypeEnum type); /** * 获取配置 diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConfigServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConfigServiceImpl.java index 77d009b2..c69b9b59 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConfigServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostConfigServiceImpl.java @@ -5,6 +5,8 @@ import com.orion.ops.framework.biz.operator.log.core.uitls.OperatorLogs; import com.orion.ops.framework.common.constant.Const; import com.orion.ops.framework.common.constant.ErrorMessage; import com.orion.ops.framework.common.enums.EnableStatus; +import com.orion.ops.framework.common.handler.data.model.GenericsDataModel; +import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy; import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.module.asset.convert.HostConfigConvert; import com.orion.ops.module.asset.dao.HostConfigDAO; @@ -15,8 +17,6 @@ import com.orion.ops.module.asset.entity.request.host.HostConfigUpdateRequest; import com.orion.ops.module.asset.entity.request.host.HostConfigUpdateStatusRequest; import com.orion.ops.module.asset.entity.vo.HostConfigVO; import com.orion.ops.module.asset.enums.HostConfigTypeEnum; -import com.orion.ops.module.asset.handler.host.config.model.HostConfigModel; -import com.orion.ops.module.asset.handler.host.config.strategy.HostConfigStrategy; import com.orion.ops.module.asset.service.HostConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -59,7 +59,8 @@ public class HostConfigServiceImpl implements HostConfigService { } @Override - public T getHostConfig(Long hostId, HostConfigTypeEnum type) { + @SuppressWarnings("unchecked") + public T getHostConfig(Long hostId, HostConfigTypeEnum type) { // 查询配置 HostConfigDO config = hostConfigDAO.getHostConfigByHostId(hostId, type.name()); if (config == null) { @@ -95,7 +96,7 @@ public class HostConfigServiceImpl implements HostConfigService { HostConfigDO record = hostConfigDAO.selectById(id); Valid.notNull(record, ErrorMessage.CONFIG_ABSENT); HostConfigTypeEnum type = Valid.valid(HostConfigTypeEnum::of, record.getType()); - HostConfigModel config = JSON.parseObject(request.getConfig(), type.getType()); + GenericsDataModel config = JSON.parseObject(request.getConfig(), type.getType()); // 查询主机 HostDO host = hostDAO.selectById(record.getHostId()); Valid.notNull(host, ErrorMessage.HOST_ABSENT); @@ -105,11 +106,11 @@ public class HostConfigServiceImpl implements HostConfigService { OperatorLogs.add(OperatorLogs.TYPE, type.name()); // 检查版本 Valid.eq(record.getVersion(), request.getVersion(), ErrorMessage.DATA_MODIFIED); - HostConfigStrategy strategy = type.getStrategy(); + MapDataStrategy strategy = type.getStrategy(); // 预校验参数 strategy.preValidConfig(config); // 更新填充 - HostConfigModel beforeConfig = JSON.parseObject(record.getConfig(), type.getType()); + GenericsDataModel beforeConfig = JSON.parseObject(record.getConfig(), type.getType()); strategy.updateFill(beforeConfig, config); // 检查参数 strategy.validConfig(config); diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataAliasServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataAliasServiceImpl.java index cda276c3..a75d9fd5 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataAliasServiceImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataAliasServiceImpl.java @@ -42,7 +42,7 @@ public class DataAliasServiceImpl implements DataAliasService { update.setRelId(request.getRelId()); update.setType(type); update.setItem(DataExtraItems.ALIAS); - update.setValue(request.getAlias()); + update.setValue(Refs.json(request.getAlias())); Integer effect = dataExtraService.updateExtraItem(update); // 删除缓存 RedisMaps.delete(DataExtraCacheKeyDefine.DATA_ALIAS.format(userId, type)); diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataExtraServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataExtraServiceImpl.java index 713b7298..3569d2c0 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataExtraServiceImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataExtraServiceImpl.java @@ -1,8 +1,8 @@ package com.orion.ops.module.infra.service.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.orion.lang.function.Functions; -import com.orion.lang.utils.Refs; import com.orion.lang.utils.collect.Maps; import com.orion.ops.module.infra.dao.DataExtraDAO; import com.orion.ops.module.infra.entity.domain.DataExtraDO; @@ -54,13 +54,13 @@ public class DataExtraServiceImpl implements DataExtraService { insert.setRelId(relId); insert.setType(type); insert.setItem(item); - insert.setValue(Refs.json(value)); + insert.setValue(JSON.toJSONString(value)); return dataExtraDAO.insert(insert); } else { // 修改 DataExtraDO update = new DataExtraDO(); update.setId(extraItem.getId()); - update.setValue(Refs.json(value)); + update.setValue(JSON.toJSONString(value)); return dataExtraDAO.updateById(update); } } @@ -76,7 +76,7 @@ public class DataExtraServiceImpl implements DataExtraService { .map(s -> { DataExtraDO extra = new DataExtraDO(); extra.setId(s.getKey()); - extra.setValue(Refs.json(s.getValue())); + extra.setValue(JSON.toJSONString(s.getValue())); return extra; }).collect(Collectors.toList()); dataExtraDAO.updateBatch(list);