package org.wcs.helper;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.wcs.mapper.intf.AppBaseConfigService;
import org.wcs.model.po.app.AppBaseConfig;

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

/**
 * 系统配置的帮助类
 */
@Component
@RequiredArgsConstructor
public class AppConfigHelper {

    private final AppBaseConfigService baseConfigService;


    private Map<String, String> configMap; // 存储配置的map

    /**
     * 加载配置
     */
    public void loadConfig() {
        List<AppBaseConfig> configs = baseConfigService.queryAll();
        if(configs == null) {
            return;
        }
        configMap = new HashMap<>();
        for (AppBaseConfig config : configs) {
            configMap.put(config.getConfigKey(), config.getConfigValue());
        }
    }

    /**
     * 获取配置
     * @param key 配置键
     * @return 配置值
     */
    public String getConfig(String key) {
        if(configMap == null) {
            loadConfig();
        }
        return configMap.get(key);
    }

    /**
     * 设置配置
     * @param key 配置键
     * @param value 配置值
     * @return 设置结果
     */
    public synchronized String SetConfig(String key, String value) {
        AppBaseConfig config = new AppBaseConfig();
        config.setConfigKey(key);
        config.setConfigValue(value);
        int update = baseConfigService.update(config);
        if(update <= 0) {
            return "更新 config 表 数据库操作失败";
        }
        configMap.put(key, value);
        return null;
    }


}
