diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java index 4c4502ee1..288679d32 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteConfigService.java @@ -1,5 +1,11 @@ package org.dromara.system.api; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; + +import java.math.BigDecimal; +import java.util.List; + /** * 配置服务 * @@ -14,4 +20,88 @@ public interface RemoteConfigService { */ boolean selectRegisterEnabled(String tenantId); + /** + * 根据参数 key 获取参数值 + * + * @param configKey 参数 key + * @return 参数值 + */ + String getConfigValue(String configKey); + + /** + * 根据参数 key 获取布尔值 + * + * @param configKey 参数 key + * @return Boolean 值 + */ + default Boolean getConfigBool(String configKey) { + return Convert.toBool(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取整数值 + * + * @param configKey 参数 key + * @return Integer 值 + */ + default Integer getConfigInt(String configKey) { + return Convert.toInt(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取长整型值 + * + * @param configKey 参数 key + * @return Long 值 + */ + default Long getConfigLong(String configKey) { + return Convert.toLong(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取 BigDecimal 值 + * + * @param configKey 参数 key + * @return BigDecimal 值 + */ + default BigDecimal getConfigDecimal(String configKey) { + return Convert.toBigDecimal(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取 Map 类型的配置 + * + * @param configKey 参数 key + * @return Dict 对象,如果配置为空或无法解析,返回空 Dict + */ + Dict getConfigMap(String configKey); + + /** + * 根据参数 key 获取 Map 类型的配置列表 + * + * @param configKey 参数 key + * @return Dict 列表,如果配置为空或无法解析,返回空列表 + */ + List getConfigArrayMap(String configKey); + + /** + * 根据参数 key 获取指定类型的配置对象 + * + * @param configKey 参数 key + * @param clazz 目标对象类型 + * @param 目标对象泛型 + * @return 对象实例,如果配置为空或无法解析,返回 null + */ + T getConfigObject(String configKey, Class clazz); + + /** + * 根据参数 key 获取指定类型的配置列表 + * + * @param configKey 参数 key + * @param clazz 目标元素类型 + * @param 元素类型泛型 + * @return 指定类型列表,如果配置为空或无法解析,返回空列表 + */ + List getConfigArray(String configKey, Class clazz); + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java index 6a43c0b29..e6b6b1b0b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteConfigServiceImpl.java @@ -1,11 +1,15 @@ package org.dromara.system.dubbo; +import cn.hutool.core.lang.Dict; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.json.utils.JsonUtils; import org.dromara.system.api.RemoteConfigService; import org.dromara.system.service.ISysConfigService; import org.springframework.stereotype.Service; +import java.util.List; + /** * 配置服务 * @@ -26,4 +30,60 @@ public class RemoteConfigServiceImpl implements RemoteConfigService { return configService.selectRegisterEnabled(tenantId); } + @Override + public String getConfigValue(String configKey) { + return configService.selectConfigByKey(configKey); + } + + /** + * 根据参数 key 获取 Map 类型的配置 + * + * @param configKey 参数 key + * @return Dict 对象,如果配置为空或无法解析,返回空 Dict + */ + @Override + public Dict getConfigMap(String configKey) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseMap(configValue); + } + + /** + * 根据参数 key 获取 Map 类型的配置列表 + * + * @param configKey 参数 key + * @return Dict 列表,如果配置为空或无法解析,返回空列表 + */ + @Override + public List getConfigArrayMap(String configKey) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseArrayMap(configValue); + } + + /** + * 根据参数 key 获取指定类型的配置对象 + * + * @param configKey 参数 key + * @param clazz 目标对象类型 + * @return 对象实例,如果配置为空或无法解析,返回 null + */ + @Override + public T getConfigObject(String configKey, Class clazz) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseObject(configValue, clazz); + } + + /** + * 根据参数 key 获取指定类型的配置列表= + * + * @param configKey 参数 key + * @param clazz 目标元素类型 + * @return 指定类型列表,如果配置为空或无法解析,返回空列表 + */ + @Override + public List getConfigArray(String configKey, Class clazz) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseArray(configValue, clazz); + } + + }