using HoneyBox.Model.Models.Rank;

namespace HoneyBox.Core.Interfaces;

/// <summary>
/// 排行榜服务接口
/// </summary>
public interface IRankService
{
    /// <summary>
    /// 获取周榜
    /// </summary>
    /// <param name="userId">用户ID</param>
    /// <returns>排行榜响应</returns>
    Task<RankResponse> GetWeekRankAsync(int userId);

    /// <summary>
    /// 获取月榜
    /// </summary>
    /// <param name="userId">用户ID</param>
    /// <returns>排行榜响应</returns>
    Task<RankResponse> GetMonthRankAsync(int userId);

    /// <summary>
    /// 获取通用排行榜列表
    /// </summary>
    /// <param name="type">排行榜类型 (diamond/integral/dadajuan/invite/loss)</param>
    /// <param name="page">页码</param>
    /// <param name="limit">每页数量</param>
    /// <returns>排行榜数据列表</returns>
    Task<List<GenericRankItemDto>> GetRankListAsync(string type, int page = 1, int limit = 10);

    /// <summary>
    /// 获取消费记录排行榜 (本月)
    /// </summary>
    /// <param name="page">页码</param>
    /// <param name="limit">每页数量</param>
    /// <returns>消费记录排行榜响应</returns>
    Task<ConsumeRecordResponse> GetConsumeRecordAsync(int page = 1, int limit = 10);
}
