package com.app.component.sysconfig.service;

import com.alibaba.fastjson.JSONObject;
import com.app.component.sysconfig.model.SysConfig;
import com.app.framework.core.support.auth.LoginUser;
import com.app.framework.core.support.service.CrudBaseService;

/**
 * 系统配置管理
 */
public interface SysConfigService extends CrudBaseService<SysConfig> {

    /**
     * 保存配置项
     *
     * @param cfg 配置项
     */
    void saveCfg(SysConfig cfg, LoginUser loginUser);

    /**
     * 根据配置项名称获取配置
     *
     * @param cfgName 配置项名称
     */
    SysConfig get(String cfgName);

    /**
     * 根据配置项名称获取配置
     *
     * @param cfgName 配置项名称
     */
    JSONObject getJson(String cfgName);

    /**
     * 根据配置项名称获取配置
     *
     * @param cfgName 配置项名称
     * @param tClass 返回对象的Class
     */
    <T> T getJson(String cfgName, Class<T> tClass);

    /**
     * 根据配置项名称获取配置
     *
     * @param cfgName 配置项名称
     */
    String getString(String cfgName);

    /**
     * 根据配置项名称获取配置
     *
     * @param cfgName 配置项名称
     */
    Integer getInteger(String cfgName);

}