using Model;
using Model.Dto.System;
using SqlSugar;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Service.Interface
{
///
/// 数据字典管理 服务接口
/// 约定:字典分类(DictType) + 字典项(DictItem) 二层结构,不支持级联
///
public interface IDictService
{
// ==================== 字典分类 ====================
/// 分页查询字典分类(关键字匹配 Code/Name)
Task>> GetTypesPagedAsync(int pageIndex, int pageSize, RefAsync total, string? keyword = null);
/// 全部启用的字典分类(下拉用,不缓存)
Task>> GetTypesAllAsync();
/// 字典分类详情
Task> GetTypeByIdAsync(long id);
/// 新增字典分类(校验编码唯一)
Task> AddTypeAsync(DictTypeDto dto);
/// 修改字典分类
Task> UpdateTypeAsync(DictTypeDto dto);
/// 删除字典分类(分类下有字典项时禁止删除)
Task DeleteTypeAsync(long id);
// ==================== 字典项 ====================
/// 查询指定分类下的字典项(按 Sort、CreateTime 倒序)
Task>> GetItemsByTypeAsync(long typeId);
/// 新增字典项(校验同分类下编码唯一;IsDefault=1 时清零其它默认项)
Task> AddItemAsync(DictItemDto dto);
/// 修改字典项
Task> UpdateItemAsync(DictItemDto dto);
/// 删除字典项
Task DeleteItemAsync(long id);
// ==================== 业务侧(无权限,供其它模块调用) ====================
/// 按字典编码查询启用项(带 IMemoryCache 缓存,增删改时失效)
Task>> GetOptionsByCodeAsync(string typeCode);
}
}