using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Entity;
namespace QYZH.InteractiveMagazine.IService;
///
/// 勋章服务接口
///
public interface IMedalService : IBaseService
{
///
/// 创建勋章
///
/// 勋章输入
/// 创建的勋章信息
Task CreateAsync(MedalInput input);
///
/// 更新勋章
///
/// 勋章ID
/// 勋章输入
/// 更新后的勋章信息
Task UpdateAsync(long id, MedalInput input);
///
/// 删除勋章(软删除)
///
/// 勋章ID
Task DeleteAsync(long id);
///
/// 根据ID获取勋章
///
/// 勋章ID
/// 勋章信息
Task GetByIdAsync(long id);
///
/// 分页查询勋章列表
///
/// 查询条件
/// 分页结果
Task> GetListAsync(MedalQueryInput input);
///
/// 更新勋章启用/禁用状态
///
/// 勋章ID
/// 状态: 0=禁用, 1=启用
Task UpdateStatusAsync(long id);
///
/// 获取勋章的规则列表
///
/// 勋章ID
/// 规则列表
Task> GetRulesByMedalIdAsync(long medalId);
///
/// 获取所有启用勋章列表(含当前用户拥有状态)
///
/// 当前用户ID
/// 勋章列表
Task> GetAllMedalsAsync(long userId);
///
/// 获取用户已拥有的勋章列表
///
/// 用户ID
/// 用户勋章列表
Task> GetUserMedalsAsync(long userId);
///
/// 激活/获得勋章
///
/// 用户ID
/// 激活输入
Task ActivateMedalAsync(long userId, WxMedalActivateInput input);
///
/// 获取规则配置中可用的目标表列表
///
Task> GetAvailableTablesAsync();
///
/// 获取指定表的可用字段列表
///
/// 表名
Task> GetTableFieldsAsync(string tableName);
}