using Model;
using Model.Dto.System;
using SqlSugar;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Service.Interface
{
///
/// 系统参数配置 服务接口
/// 管理侧:CRUD(按 Group 分组、关键字检索);业务侧:按 Key 单/批量取值(带缓存)
/// 内置参数(IsSystem=1)禁止删除,仅允许修改 Value
///
public interface ISystemParamService
{
// ==================== 管理侧 ====================
/// 分页查询(关键字匹配 ParamKey/ParamName;可选 Group 过滤)
Task>> GetListPagedAsync(int pageIndex, int pageSize, RefAsync total, string? keyword = null, string? group = null);
/// 参数详情
Task> GetByIdAsync(long id);
/// 新增参数(校验 ParamKey 唯一)
Task> AddAsync(SystemParamDto dto);
/// 修改参数(内置参数仅允许改 Value/Remark;非内置可改全字段;Key 变更时同步失效缓存)
Task> UpdateAsync(SystemParamDto dto);
/// 删除参数(内置参数禁止删除)
Task DeleteAsync(long id);
/// 清空参数值缓存(运维用)
Task ReloadCacheAsync();
// ==================== 业务侧(无权限,供其它模块调用) ====================
/// 按 Key 取单个值(带缓存;不存在返回空字符串)
Task> GetValueAsync(string key);
/// 按 Key 列表批量取值(带缓存)
Task>> GetValuesAsync(string[] keys);
}
}