refactor: 定义标准数据模型.
This commit is contained in:
@@ -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 {
|
||||
|
||||
/**
|
||||
* 序列化
|
||||
@@ -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<Config extends HostConfigModel> {
|
||||
public interface GenericsDataStrategy<Config extends GenericsDataModel, View> {
|
||||
|
||||
/**
|
||||
* 获取默认值
|
||||
@@ -48,6 +46,6 @@ public interface HostConfigStrategy<Config extends HostConfigModel> {
|
||||
* @param config config
|
||||
* @return 视图配置
|
||||
*/
|
||||
Map<String, Object> toView(String config);
|
||||
View toView(String config);
|
||||
|
||||
}
|
||||
@@ -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<Config extends GenericsDataModel> extends GenericsDataStrategy<Config, Map<String, Object>> {
|
||||
|
||||
}
|
||||
@@ -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<? extends HostConfigModel> type;
|
||||
@Getter
|
||||
private final Class<? extends GenericsDataModel> type;
|
||||
|
||||
private final Class<? extends HostConfigStrategy<? extends HostConfigModel>> strategy;
|
||||
private final Class<? extends MapDataStrategy<? extends GenericsDataModel>> strategy;
|
||||
|
||||
@Getter
|
||||
private final Integer defaultStatus;
|
||||
|
||||
public static HostConfigTypeEnum of(String type) {
|
||||
@@ -43,17 +46,9 @@ public enum HostConfigTypeEnum {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Class<? extends HostConfigModel> getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <Config extends HostConfigModel, T extends HostConfigStrategy<Config>> T getStrategy() {
|
||||
public <Config extends GenericsDataModel, T extends MapDataStrategy<Config>> T getStrategy() {
|
||||
return (T) SpringHolder.getBean(strategy);
|
||||
}
|
||||
|
||||
public Integer getDefaultStatus() {
|
||||
return defaultStatus;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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<HostSshConfigModel> {
|
||||
public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel> {
|
||||
|
||||
@Resource
|
||||
private HostKeyDAO hostKeyDAO;
|
||||
|
||||
@@ -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 extends HostConfigModel> T getHostConfig(Long hostId, HostConfigTypeEnum type);
|
||||
<T extends GenericsDataModel> T getHostConfig(Long hostId, HostConfigTypeEnum type);
|
||||
|
||||
/**
|
||||
* 获取配置
|
||||
|
||||
@@ -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 extends HostConfigModel> T getHostConfig(Long hostId, HostConfigTypeEnum type) {
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends GenericsDataModel> 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<HostConfigModel> strategy = type.getStrategy();
|
||||
MapDataStrategy<GenericsDataModel> 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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user