diff --git a/src/main/java/com/ycwl/basic/integration/common/manager/ConfigManager.java b/src/main/java/com/ycwl/basic/integration/common/manager/ConfigManager.java index fb902e6..c4bee39 100644 --- a/src/main/java/com/ycwl/basic/integration/common/manager/ConfigManager.java +++ b/src/main/java/com/ycwl/basic/integration/common/manager/ConfigManager.java @@ -1,8 +1,10 @@ package com.ycwl.basic.integration.common.manager; +import com.ycwl.basic.utils.JacksonUtil; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 通用配置管理器基类 @@ -268,4 +270,137 @@ public abstract class ConfigManager { public List getAllConfigs() { return new ArrayList<>(configs); } + + /** + * 获取原始对象配置值 + */ + public Object getObject(String key) { + T config = findConfigByKey(key); + if (config == null) { + return null; + } + return getConfigValue(config); + } + + /** + * 获取并转换为指定类型的对象 + * 支持JSON字符串自动反序列化 + */ + @SuppressWarnings("unchecked") + public R getObject(String key, Class clazz) { + T config = findConfigByKey(key); + if (config == null) { + return null; + } + Object value = getConfigValue(config); + if (value == null) return null; + + // 如果类型匹配,直接返回 + if (clazz.isInstance(value)) { + return (R) value; + } + + // 如果是String类型的JSON,尝试反序列化 + if (value instanceof String && !clazz.equals(String.class)) { + try { + return JacksonUtil.parseObject((String) value, clazz); + } catch (Exception e) { + return null; + } + } + + // 如果目标是String,直接转换 + if (clazz.equals(String.class)) { + return (R) value.toString(); + } + + // 其他情况尝试JSON转换 + try { + String json = JacksonUtil.toJSONString(value); + return JacksonUtil.parseObject(json, clazz); + } catch (Exception e) { + return null; + } + } + + /** + * 获取Map类型的配置值 + */ + @SuppressWarnings("unchecked") + public Map getMap(String key) { + T config = findConfigByKey(key); + if (config == null) { + return null; + } + Object value = getConfigValue(config); + if (value == null) return null; + + if (value instanceof Map) { + return (Map) value; + } + + if (value instanceof String) { + try { + return JacksonUtil.parseObject((String) value, Map.class); + } catch (Exception e) { + return null; + } + } + + return null; + } + + /** + * 获取List类型的配置值 + */ + @SuppressWarnings("unchecked") + public List getList(String key) { + T config = findConfigByKey(key); + if (config == null) { + return null; + } + Object value = getConfigValue(config); + if (value == null) return null; + + if (value instanceof List) { + return (List) value; + } + + if (value instanceof String) { + try { + return JacksonUtil.parseObject((String) value, List.class); + } catch (Exception e) { + return null; + } + } + + return null; + } + + /** + * 获取指定元素类型的List配置值 + */ + public List getList(String key, Class elementClass) { + T config = findConfigByKey(key); + if (config == null) { + return null; + } + Object value = getConfigValue(config); + if (value == null) return null; + + if (value instanceof String) { + try { + return JacksonUtil.parseArray((String) value, elementClass); + } catch (Exception e) { + return null; + } + } + + try { + String json = JacksonUtil.toJSONString(value); + return JacksonUtil.parseArray(json, elementClass); + } catch (Exception e) { + return null; + } + } } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/integration/common/manager/ScenicConfigManager.java b/src/main/java/com/ycwl/basic/integration/common/manager/ScenicConfigManager.java index 7376c6b..5722220 100644 --- a/src/main/java/com/ycwl/basic/integration/common/manager/ScenicConfigManager.java +++ b/src/main/java/com/ycwl/basic/integration/common/manager/ScenicConfigManager.java @@ -55,47 +55,6 @@ public class ScenicConfigManager extends ConfigManager { return config != null ? config.getConfigValue() : null; } - /** - * 获取字符串值 - * - * @param key 配置键 - * @return 字符串值,如果键不存在或转换失败返回null - */ - public String getString(String key) { - return ConfigValueUtil.getStringValue(configMap, key); - } - - /** - * 获取字符串值,如果为null则返回默认值 - * - * @param key 配置键 - * @param defaultValue 默认值 - * @return 字符串值或默认值 - */ - public String getString(String key, String defaultValue) { - return ConfigValueUtil.getStringValue(configMap, key, defaultValue); - } - - /** - * 获取整数值 - * - * @param key 配置键 - * @return Integer值,如果键不存在或转换失败返回null - */ - public Integer getInteger(String key) { - return ConfigValueUtil.getIntValue(configMap, key); - } - - /** - * 获取整数值,如果为null则返回默认值 - * - * @param key 配置键 - * @param defaultValue 默认值 - * @return Integer值或默认值 - */ - public Integer getInteger(String key, Integer defaultValue) { - return ConfigValueUtil.getIntValue(configMap, key, defaultValue); - } /** * 获取长整数值 @@ -206,85 +165,7 @@ public class ScenicConfigManager extends ConfigManager { return ConfigValueUtil.getBooleanValue(configMap, key, defaultValue); } - /** - * 获取枚举值 - * - * @param key 配置键 - * @param enumClass 枚举类型 - * @param 枚举类型泛型 - * @return 枚举值,如果键不存在或转换失败返回null - */ - public > T getEnum(String key, Class enumClass) { - return ConfigValueUtil.getEnumValue(configMap, key, enumClass); - } - /** - * 获取枚举值,如果为null则返回默认值 - * - * @param key 配置键 - * @param enumClass 枚举类型 - * @param defaultValue 默认值 - * @param 枚举类型泛型 - * @return 枚举值或默认值 - */ - public > T getEnum(String key, Class enumClass, T defaultValue) { - T value = ConfigValueUtil.getEnumValue(configMap, key, enumClass); - return value != null ? value : defaultValue; - } - - /** - * 获取原始对象值 - * - * @param key 配置键 - * @return 原始Object值 - */ - public Object getObject(String key) { - return ConfigValueUtil.getObjectValue(configMap, key); - } - - /** - * 获取并转换为指定类型的对象 - * - * @param key 配置键 - * @param clazz 目标类型 - * @param 目标类型泛型 - * @return 转换后的对象,如果转换失败返回null - */ - public T getObject(String key, Class clazz) { - return ConfigValueUtil.getObjectValue(configMap, key, clazz); - } - - /** - * 获取Map类型的值 - * - * @param key 配置键 - * @return Map值,如果转换失败返回null - */ - public Map getMap(String key) { - return ConfigValueUtil.getMapValue(configMap, key); - } - - /** - * 获取List类型的值 - * - * @param key 配置键 - * @return List值,如果转换失败返回null - */ - public List getList(String key) { - return ConfigValueUtil.getListValue(configMap, key); - } - - /** - * 获取指定元素类型的List值 - * - * @param key 配置键 - * @param elementClass List元素类型 - * @param List元素类型泛型 - * @return 指定类型的List,如果转换失败返回null - */ - public List getList(String key, Class elementClass) { - return ConfigValueUtil.getListValue(configMap, key, elementClass); - } /** * 检查配置键是否存在 @@ -320,6 +201,7 @@ public class ScenicConfigManager extends ConfigManager { * * @return 配置项数量 */ + @Override public int size() { return configMap.size(); }