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;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主机配置父类
|
* 标准数据模型
|
||||||
*
|
*
|
||||||
* @author Jiahang Li
|
* @author Jiahang Li
|
||||||
* @version 1.0.0
|
* @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 com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主机配置策略
|
* 标准数据处理策略
|
||||||
*
|
*
|
||||||
* @author Jiahang Li
|
* @author Jiahang Li
|
||||||
* @version 1.0.0
|
* @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
|
* @param config config
|
||||||
* @return 视图配置
|
* @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;
|
package com.orion.ops.module.asset.enums;
|
||||||
|
|
||||||
import com.orion.ops.framework.common.enums.EnableStatus;
|
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.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.ops.module.asset.handler.host.config.strategy.HostSshConfigStrategy;
|
||||||
import com.orion.spring.SpringHolder;
|
import com.orion.spring.SpringHolder;
|
||||||
import lombok.AllArgsConstructor;
|
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;
|
private final Integer defaultStatus;
|
||||||
|
|
||||||
public static HostConfigTypeEnum of(String type) {
|
public static HostConfigTypeEnum of(String type) {
|
||||||
@@ -43,17 +46,9 @@ public enum HostConfigTypeEnum {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<? extends HostConfigModel> getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@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);
|
return (T) SpringHolder.getBean(strategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getDefaultStatus() {
|
|
||||||
return defaultStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.orion.ops.module.asset.handler.host.config.model;
|
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 com.orion.ops.framework.common.security.UpdatePasswordAction;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -24,7 +25,7 @@ import javax.validation.constraints.Size;
|
|||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Schema(name = "HostSftpConfig", description = "主机 SSH 配置")
|
@Schema(name = "HostSftpConfig", description = "主机 SSH 配置")
|
||||||
public class HostSshConfigModel implements HostConfigModel, UpdatePasswordAction {
|
public class HostSshConfigModel implements GenericsDataModel, UpdatePasswordAction {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Range(min = 1, max = 65535)
|
@Range(min = 1, max = 65535)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.orion.lang.utils.Exceptions;
|
|||||||
import com.orion.lang.utils.Strings;
|
import com.orion.lang.utils.Strings;
|
||||||
import com.orion.ops.framework.common.constant.Const;
|
import com.orion.ops.framework.common.constant.Const;
|
||||||
import com.orion.ops.framework.common.constant.ErrorMessage;
|
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.security.PasswordModifier;
|
||||||
import com.orion.ops.framework.common.utils.Valid;
|
import com.orion.ops.framework.common.utils.Valid;
|
||||||
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
||||||
@@ -26,7 +27,7 @@ import java.util.Map;
|
|||||||
* @since 2023/9/19 14:26
|
* @since 2023/9/19 14:26
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class HostSshConfigStrategy implements HostConfigStrategy<HostSshConfigModel> {
|
public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel> {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private HostKeyDAO hostKeyDAO;
|
private HostKeyDAO hostKeyDAO;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.orion.ops.module.asset.service;
|
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.HostConfigUpdateRequest;
|
||||||
import com.orion.ops.module.asset.entity.request.host.HostConfigUpdateStatusRequest;
|
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.entity.vo.HostConfigVO;
|
||||||
import com.orion.ops.module.asset.enums.HostConfigTypeEnum;
|
import com.orion.ops.module.asset.enums.HostConfigTypeEnum;
|
||||||
import com.orion.ops.module.asset.handler.host.config.model.HostConfigModel;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ public interface HostConfigService {
|
|||||||
* @param type type
|
* @param type type
|
||||||
* @return 配置
|
* @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.Const;
|
||||||
import com.orion.ops.framework.common.constant.ErrorMessage;
|
import com.orion.ops.framework.common.constant.ErrorMessage;
|
||||||
import com.orion.ops.framework.common.enums.EnableStatus;
|
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.framework.common.utils.Valid;
|
||||||
import com.orion.ops.module.asset.convert.HostConfigConvert;
|
import com.orion.ops.module.asset.convert.HostConfigConvert;
|
||||||
import com.orion.ops.module.asset.dao.HostConfigDAO;
|
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.request.host.HostConfigUpdateStatusRequest;
|
||||||
import com.orion.ops.module.asset.entity.vo.HostConfigVO;
|
import com.orion.ops.module.asset.entity.vo.HostConfigVO;
|
||||||
import com.orion.ops.module.asset.enums.HostConfigTypeEnum;
|
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 com.orion.ops.module.asset.service.HostConfigService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -59,7 +59,8 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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());
|
HostConfigDO config = hostConfigDAO.getHostConfigByHostId(hostId, type.name());
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
@@ -95,7 +96,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
HostConfigDO record = hostConfigDAO.selectById(id);
|
HostConfigDO record = hostConfigDAO.selectById(id);
|
||||||
Valid.notNull(record, ErrorMessage.CONFIG_ABSENT);
|
Valid.notNull(record, ErrorMessage.CONFIG_ABSENT);
|
||||||
HostConfigTypeEnum type = Valid.valid(HostConfigTypeEnum::of, record.getType());
|
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());
|
HostDO host = hostDAO.selectById(record.getHostId());
|
||||||
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||||
@@ -105,11 +106,11 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
OperatorLogs.add(OperatorLogs.TYPE, type.name());
|
OperatorLogs.add(OperatorLogs.TYPE, type.name());
|
||||||
// 检查版本
|
// 检查版本
|
||||||
Valid.eq(record.getVersion(), request.getVersion(), ErrorMessage.DATA_MODIFIED);
|
Valid.eq(record.getVersion(), request.getVersion(), ErrorMessage.DATA_MODIFIED);
|
||||||
HostConfigStrategy<HostConfigModel> strategy = type.getStrategy();
|
MapDataStrategy<GenericsDataModel> strategy = type.getStrategy();
|
||||||
// 预校验参数
|
// 预校验参数
|
||||||
strategy.preValidConfig(config);
|
strategy.preValidConfig(config);
|
||||||
// 更新填充
|
// 更新填充
|
||||||
HostConfigModel beforeConfig = JSON.parseObject(record.getConfig(), type.getType());
|
GenericsDataModel beforeConfig = JSON.parseObject(record.getConfig(), type.getType());
|
||||||
strategy.updateFill(beforeConfig, config);
|
strategy.updateFill(beforeConfig, config);
|
||||||
// 检查参数
|
// 检查参数
|
||||||
strategy.validConfig(config);
|
strategy.validConfig(config);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class DataAliasServiceImpl implements DataAliasService {
|
|||||||
update.setRelId(request.getRelId());
|
update.setRelId(request.getRelId());
|
||||||
update.setType(type);
|
update.setType(type);
|
||||||
update.setItem(DataExtraItems.ALIAS);
|
update.setItem(DataExtraItems.ALIAS);
|
||||||
update.setValue(request.getAlias());
|
update.setValue(Refs.json(request.getAlias()));
|
||||||
Integer effect = dataExtraService.updateExtraItem(update);
|
Integer effect = dataExtraService.updateExtraItem(update);
|
||||||
// 删除缓存
|
// 删除缓存
|
||||||
RedisMaps.delete(DataExtraCacheKeyDefine.DATA_ALIAS.format(userId, type));
|
RedisMaps.delete(DataExtraCacheKeyDefine.DATA_ALIAS.format(userId, type));
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.orion.ops.module.infra.service.impl;
|
package com.orion.ops.module.infra.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.orion.lang.function.Functions;
|
import com.orion.lang.function.Functions;
|
||||||
import com.orion.lang.utils.Refs;
|
|
||||||
import com.orion.lang.utils.collect.Maps;
|
import com.orion.lang.utils.collect.Maps;
|
||||||
import com.orion.ops.module.infra.dao.DataExtraDAO;
|
import com.orion.ops.module.infra.dao.DataExtraDAO;
|
||||||
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
||||||
@@ -54,13 +54,13 @@ public class DataExtraServiceImpl implements DataExtraService {
|
|||||||
insert.setRelId(relId);
|
insert.setRelId(relId);
|
||||||
insert.setType(type);
|
insert.setType(type);
|
||||||
insert.setItem(item);
|
insert.setItem(item);
|
||||||
insert.setValue(Refs.json(value));
|
insert.setValue(JSON.toJSONString(value));
|
||||||
return dataExtraDAO.insert(insert);
|
return dataExtraDAO.insert(insert);
|
||||||
} else {
|
} else {
|
||||||
// 修改
|
// 修改
|
||||||
DataExtraDO update = new DataExtraDO();
|
DataExtraDO update = new DataExtraDO();
|
||||||
update.setId(extraItem.getId());
|
update.setId(extraItem.getId());
|
||||||
update.setValue(Refs.json(value));
|
update.setValue(JSON.toJSONString(value));
|
||||||
return dataExtraDAO.updateById(update);
|
return dataExtraDAO.updateById(update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,7 +76,7 @@ public class DataExtraServiceImpl implements DataExtraService {
|
|||||||
.map(s -> {
|
.map(s -> {
|
||||||
DataExtraDO extra = new DataExtraDO();
|
DataExtraDO extra = new DataExtraDO();
|
||||||
extra.setId(s.getKey());
|
extra.setId(s.getKey());
|
||||||
extra.setValue(Refs.json(s.getValue()));
|
extra.setValue(JSON.toJSONString(s.getValue()));
|
||||||
return extra;
|
return extra;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
dataExtraDAO.updateBatch(list);
|
dataExtraDAO.updateBatch(list);
|
||||||
|
|||||||
Reference in New Issue
Block a user