package com.yiqi.system.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.system.domain.SysConfigRecord;

/**
 * 配置Service接口
 *
 * @author douya
 * @date 2024-11-01
 */
public interface ISysConfigRecordService extends IService<SysConfigRecord> {

    //<editor-folder desc="基础函数">

    /**
     * 查询配置
     *
     * @param id 配置主键
     * @return 配置
     */
    public SysConfigRecord selectSysConfigRecordById(Integer id);

    /**
     * 查询配置列表
     *
     * @param sysConfigRecord 配置
     * @return 配置集合
     */
    public List<SysConfigRecord> selectSysConfigRecordList(SysConfigRecord sysConfigRecord);

    /**
     * 新增配置
     *
     * @param sysConfigRecord 配置
     * @return 结果
     */
    public int insertSysConfigRecord(SysConfigRecord sysConfigRecord);

    /**
     * 修改配置
     *
     * @param sysConfigRecord 配置
     * @return 结果
     */
    public int updateSysConfigRecord(SysConfigRecord sysConfigRecord);

    /**
     * 批量删除配置
     *
     * @param ids 需要删除的配置主键集合
     * @return 结果
     */
    public int deleteSysConfigRecordByIds(Integer[] ids);

    /**
     * 删除配置信息
     *
     * @param id 配置主键
     * @return 结果
     */
    public int deleteSysConfigRecordById(Integer id);


    /**
     * 修改配置状态
     *
     * @param sysConfigRecord 配置
     * @return 结果
     */
    public int updateSysConfigRecordStatus(SysConfigRecord sysConfigRecord);

    /**
     * 加载参数缓存数据
     */
    public void loadingConfigCache();

    /**
     * 清空参数缓存数据
     */
    public void clearConfigCache();

    /**
     * 重置参数缓存数据
     */
    public void resetConfigCache();

    /**
     * 根据key获取配置
     * @param key
     * @param tabId
     * @return
     */
    SysConfigRecord getConfigRecordByKey(String key, Integer tabId);

    /**
     * 根据key获取配置
     * @return
     */
    List<SysConfigRecord> getConfigRecordByKey(String[] keys);

    /**
     * 根据key获取配置
     * @param key
     * @return
     */
    String getCacheConfigRecordByKey(String key);

    /**
     * 重置配置缓存
     * @param key
     */
    void clearConfigCache(String key);

}
