package org.xyzh.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.system.TbSysConfig;

import java.util.List;

/**
 * @description 系统配置数据访问层
 * @filename SysConfigMapper.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-15
 */
@Mapper
public interface SysConfigMapper extends BaseMapper<TbSysConfig> {

    /**
     * @description 插入系统配置
     */
    int insertSysConfig(@Param("config") TbSysConfig config);

    /**
     * @description 更新系统配置
     */
    int updateSysConfig(@Param("config") TbSysConfig config);

    /**
     * @description 删除系统配置（逻辑删除）
     */
    int deleteSysConfig(@Param("id") String id);

    /**
     * @description 根据配置键查询
     */
    TbSysConfig selectSysConfigByKey(@Param("configKey") String configKey);

    /**
     * @description 根据ID查询
     */
    TbSysConfig selectSysConfigById(@Param("id") String id);

    /**
     * @description 查询所有系统配置
     */
    List<TbSysConfig> selectAllSysConfig();

    /**
     * @description 根据分组查询系统配置
     */
    List<TbSysConfig> selectSysConfigByGroup(@Param("configGroup") String configGroup);

    /**
     * @description 查询系统配置列表
     * @param filter 过滤条件
     * @return List<TbSysConfig> 系统配置列表
     */
    List<TbSysConfig> selectSysConfigs(@Param("filter") TbSysConfig filter);

    /**
     * @description 分页查询系统配置
     */
    List<TbSysConfig> selectSysConfigPage(@Param("filter") TbSysConfig filter, @Param("pageParam") PageParam pageParam);

    /**
     * @description 查询系统配置总数
     */
    int countSelectSysConfig(@Param("filter") TbSysConfig filter);
}
