All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.mingsoft.mdiy.util.ConfigUtil Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2012-present 铭软科技(mingsoft.net)
 * 本软件及相关文档文件(以下简称“软件”)的版权归 铭软科技 所有
 * 遵循 铭软科技《服务协议》中的《保密条款》
 */




package net.mingsoft.mdiy.util;

import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import net.mingsoft.basic.util.SpringUtil;
import net.mingsoft.mdiy.biz.IConfigBiz;
import net.mingsoft.mdiy.entity.ConfigEntity;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * 自定义配置参数获取
 * 修订日期: 2022-1-27 新增getEntity()方法
 */
public class ConfigUtil {

    /**
     * 配置缓存
     */
    public static Map CONFIG_HASH_MAP = MapUtil.newHashMap();

    /**
     * 返回字符串类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @return 无匹配返回空
     */
    public static String getString(String configName,String key) {
        Object object = getObject(configName, key);
        if(object==null){
            return "";
        }
        return object.toString();
    }

    /**
     * 返回字符串类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @param defaultValue 默认值,如果配置中没有值,会返回默认值
     * @return 无匹配返回默认值
     */
    public static String getString(String configName,String key, String defaultValue) {
        Object object = getObject(configName, key);
        if(object==null){
            return defaultValue;
        }
        return object.toString();
    }

    /**
     * 返回布尔类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @return 无匹配返回FALSE
     */
    public static boolean getBoolean(String configName,String key) {
        Object object = getObject(configName, key);
        if(object == null){
            return Boolean.FALSE;
        }
        if(object instanceof String) {
            return Boolean.parseBoolean(String.valueOf(object));
        } else {
            return (boolean)object;
        }
    }

    /**
     * 返回布尔类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @param defaultValue 默认值,如果配置中没有值,会返回默认值
     * @return 无匹配返回默认值
     */
    public static boolean getBoolean(String configName,String key, Boolean defaultValue) {
        Object object = getObject(configName, key);
        if(object == null){
            return defaultValue;
        }
        if(object instanceof String) {
            return Boolean.parseBoolean(String.valueOf(object));
        } else {
            return (boolean)object;
        }
    }



    /**
     * 返回整型类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @return 无匹配返回0
     */
    public static int getInt(String configName,String key) {
        Object object = getObject(configName, key);
        if(object==null){
            return 0;
        }
        if(object instanceof String) {
            return Integer.parseInt(String.valueOf(object));
        } else {
            return (int)object;
        }
    }

    /**
     * 返回整型类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @param defaultValue 默认值,如果配置中没有值,会返回默认值
     * @return 无匹配返回默认值
     */
    public static int getInt(String configName,String key,int defaultValue) {
        Object object = getObject(configName, key);
        if(object==null){
            return defaultValue;
        }
        if(object instanceof String) {
            return Integer.parseInt(String.valueOf(object));
        } else {
            return (int)object;
        }
    }

    /**
     * 返回loing类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @return 无匹配返回0
     */
    public static long getLong(String configName,String key) {
        Object object = getObject(configName, key);
        if(object==null){
            return 0;
        }
        if(object instanceof String) {
            return Long.parseLong(String.valueOf(object));
        } else {
            return (long)object;
        }
    }

    /**
     * 返回loing类型的数据
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @param defaultValue 默认值,如果配置中没有值,会返回默认值
     * @return 无匹配返回默认值
     */
    public static long getLong(String configName,String key,int defaultValue) {
        Object object = getObject(configName, key);
        if(object==null){
            return defaultValue;
        }
        if(object instanceof String) {
            return Long.parseLong(String.valueOf(object));
        } else {
            return (long)object;
        }
    }


    /**
     * 如果不确定返回类型,可以使用 getObject
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @param key 对应代码生成器中的字段名称 注意:名称是驼峰式
     * @return 无匹配返回null
     */
    public static Object getObject(String configName,String key) {
        ConfigEntity configEntity = getEntity(configName);
        if (configEntity == null){
            return null;
        }
        //将data转换成map
        HashMap map = JSONUtil.toBean(configEntity.getConfigData(), HashMap.class);
        if(map!=null){
            return map.get(key);
        }
        return null;
    }

    /**
     * 获取configName完整配置数据,通过一次性获取所有配置,避免重复传递 configName
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @return map
     */
    public static Map getMap(String configName) {
        ConfigEntity configEntity = getEntity(configName);
        if (configEntity == null || StringUtils.isEmpty(configEntity.getConfigData())) {
            return null;
        }
        return  JSONUtil.toBean(configEntity.getConfigData(), HashMap.class);
    }

    /**
     * 通过configName查询实体
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     * @return ConfigEntity
     */
    public static ConfigEntity getEntity(String configName){
        if (StringUtils.isEmpty(configName) ) {
            return null;
        }

        if(CONFIG_HASH_MAP.get(configName)!=null) {
            return CONFIG_HASH_MAP.get(configName);
        }

        IConfigBiz configBiz = SpringUtil.getBean(IConfigBiz.class);
        //根据配置名称获取data
        ConfigEntity configEntity = new ConfigEntity();
        configEntity.setConfigName(configName);
        configEntity = configBiz.getOne(new QueryWrapper<>(configEntity));
        if (configEntity == null) {
            return null;
        }
        CONFIG_HASH_MAP.put(configName,configEntity);
        return configEntity;
    }

    /**
     * 通过configName 删除缓存
     * @param configName 配置名称  对应自定义配置列表上的 配置名称 字段
     */
    public static void removeEntity(String configName){
        if (StringUtils.isNotEmpty(configName)) {
            if(CONFIG_HASH_MAP.get(configName)!=null) {
                CONFIG_HASH_MAP.remove(configName);
            }
        }
    }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy