Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.IService/IMedalService.cs
glz eab84747a5 refactor: 重构勋章模块,拆分规则独立管理,优化期刊绑定逻辑
1.  新增MedalRule实体类,将勋章条件拆分独立为规则管理
2.  重构Medal相关服务和DTO,支持勋章规则的增删改查
3.  简化Journal绑定逻辑,移除冗余的实例化期刊校验和字段
4.  重命名部分实体类,统一命名前缀
5.  为勋章相关操作添加事务管理,优化异常处理逻辑
2026-06-05 15:52:11 +08:00

81 lines
2.4 KiB
C#

using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Entity;
namespace QYZH.InteractiveMagazine.IService;
/// <summary>
/// 勋章服务接口
/// </summary>
public interface IMedalService : IBaseService<Medal>
{
/// <summary>
/// 创建勋章
/// </summary>
/// <param name="input">勋章输入</param>
/// <returns>创建的勋章信息</returns>
Task<MedalOutput> CreateAsync(MedalInput input);
/// <summary>
/// 更新勋章
/// </summary>
/// <param name="id">勋章ID</param>
/// <param name="input">勋章输入</param>
/// <returns>更新后的勋章信息</returns>
Task<MedalOutput> UpdateAsync(long id, MedalInput input);
/// <summary>
/// 删除勋章(软删除)
/// </summary>
/// <param name="id">勋章ID</param>
Task DeleteAsync(long id);
/// <summary>
/// 根据ID获取勋章
/// </summary>
/// <param name="id">勋章ID</param>
/// <returns>勋章信息</returns>
Task<MedalOutput> GetByIdAsync(long id);
/// <summary>
/// 分页查询勋章列表
/// </summary>
/// <param name="input">查询条件</param>
/// <returns>分页结果</returns>
Task<PageListModel<MedalOutput>> GetListAsync(MedalQueryInput input);
/// <summary>
/// 更新勋章启用/禁用状态
/// </summary>
/// <param name="id">勋章ID</param>
/// <param name="status">状态: 0=禁用, 1=启用</param>
Task UpdateStatusAsync(long id, int status);
/// <summary>
/// 获取勋章的规则列表
/// </summary>
/// <param name="medalId">勋章ID</param>
/// <returns>规则列表</returns>
Task<List<MedalRuleOutput>> GetRulesByMedalIdAsync(long medalId);
/// <summary>
/// 获取所有启用勋章列表(含当前用户拥有状态)
/// </summary>
/// <param name="userId">当前用户ID</param>
/// <returns>勋章列表</returns>
Task<List<WxMedalListOutput>> GetAllMedalsAsync(long userId);
/// <summary>
/// 获取用户已拥有的勋章列表
/// </summary>
/// <param name="userId">用户ID</param>
/// <returns>用户勋章列表</returns>
Task<List<WxUserMedalOutput>> GetUserMedalsAsync(long userId);
/// <summary>
/// 激活/获得勋章
/// </summary>
/// <param name="userId">用户ID</param>
/// <param name="input">激活输入</param>
Task ActivateMedalAsync(long userId, WxMedalActivateInput input);
}