Переглянути джерело

Update 优化参数配置服务 增加多种配置获取方法,支持不同类型的配置解析

Yue 1 тиждень тому
батько
коміт
3958ed07a4

+ 83 - 1
SERVER/VberAdminPlusV3/vber-common/vber-common-core/src/main/java/com/vber/common/core/service/ConfigService.java

@@ -1,9 +1,15 @@
 package com.vber.common.core.service;
 
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Dict;
+
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 通用 参数配置服务
  *
- * @author Iwb
+ * @author Lion Li
  */
 public interface ConfigService {
 
@@ -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<Dict> getConfigArrayMap(String configKey);
+
+    /**
+     * 根据参数 key 获取指定类型的配置对象
+     *
+     * @param configKey 参数 key
+     * @param clazz     目标对象类型
+     * @param <T>       目标对象泛型
+     * @return 对象实例,如果配置为空或无法解析,返回 null
+     */
+    <T> T getConfigObject(String configKey, Class<T> clazz);
+
+    /**
+     * 根据参数 key 获取指定类型的配置列表
+     *
+     * @param configKey 参数 key
+     * @param clazz     目标元素类型
+     * @param <T>       元素类型泛型
+     * @return 指定类型列表,如果配置为空或无法解析,返回空列表
+     */
+    <T> List<T> getConfigArray(String configKey, Class<T> clazz);
+
 }

+ 54 - 3
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/impl/SysConfigServiceImpl.java

@@ -1,6 +1,7 @@
 package com.vber.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 com.vber.common.core.utils.MapstructUtils;
 import com.vber.common.core.utils.ObjectUtils;
 import com.vber.common.core.utils.SpringUtils;
 import com.vber.common.core.utils.StringUtils;
+import com.vber.common.json.utils.JsonUtils;
 import com.vber.common.mybatis.core.page.PageQuery;
 import com.vber.common.mybatis.core.page.TableDataInfo;
 import com.vber.common.redis.utils.CacheUtils;
@@ -89,9 +91,8 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
      */
     @Override
     public boolean selectRegisterEnabled(String tenantId) {
-        String configValue = TenantHelper.dynamic(tenantId, () ->
-                this.selectConfigByKey(ConfigKeyConstants.SYS_ACCOUNT_REGISTER_USER)
-        );
+        String configValue = TenantHelper.dynamic(tenantId,
+                () -> this.selectConfigByKey(ConfigKeyConstants.SYS_ACCOUNT_REGISTER_USER));
         return Convert.toBool(configValue);
     }
 
@@ -214,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<Dict> getConfigArrayMap(String configKey) {
+        String configValue = getConfigValue(configKey);
+        return JsonUtils.parseArrayMap(configValue);
+    }
+
+    /**
+     * 根据参数 key 获取指定类型的配置对象
+     *
+     * @param configKey 参数 key
+     * @param clazz     目标对象类型
+     * @return 对象实例,如果配置为空或无法解析,返回 null
+     */
+    @Override
+    public <T> T getConfigObject(String configKey, Class<T> clazz) {
+        String configValue = getConfigValue(configKey);
+        return JsonUtils.parseObject(configValue, clazz);
+    }
+
+    /**
+     * 根据参数 key 获取指定类型的配置列表=
+     *
+     * @param configKey 参数 key
+     * @param clazz     目标元素类型
+     * @return 指定类型列表,如果配置为空或无法解析,返回空列表
+     */
+    @Override
+    public <T> List<T> getConfigArray(String configKey, Class<T> clazz) {
+        String configValue = getConfigValue(configKey);
+        return JsonUtils.parseArray(configValue, clazz);
+    }
+
 }