diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java index 7328c690d..9ae52c789 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java @@ -1,5 +1,11 @@ package org.dromara.common.core.service; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; + +import java.math.BigDecimal; +import java.util.List; + /** * 通用 参数配置服务 * @@ -15,4 +21,80 @@ public interface ConfigService { */ 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/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index d96fa1246..6b0b2a27e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.system.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -14,6 +15,7 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.redis.utils.CacheUtils; @@ -82,6 +84,7 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { /** * 获取注册开关 + * * @param tenantId 租户id * @return true开启,false关闭 */ @@ -212,4 +215,54 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { return SpringUtils.getAopProxy(this).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); + } + }