using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.Statistics;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 统计服务接口
/// </summary>
public interface IStatisticsService
{
    /// <summary>
    /// 获取今日订单统计数据
    /// </summary>
    /// <returns>今日订单统计</returns>
    Task<TodayOrderStatsResponse> GetTodayOrderStatsAsync();

    /// <summary>
    /// 获取货币信息统计数据
    /// </summary>
    /// <returns>货币信息统计</returns>
    Task<CurrencyInfoStatsResponse> GetCurrencyInfoStatsAsync();

    /// <summary>
    /// 获取收入汇总统计数据
    /// </summary>
    /// <returns>收入汇总统计</returns>
    Task<IncomeSummaryStatsResponse> GetIncomeSummaryStatsAsync();

    /// <summary>
    /// 获取用户统计数据
    /// </summary>
    /// <returns>用户统计</returns>
    Task<UserStatsResponse> GetUserStatsAsync();

    /// <summary>
    /// 获取单个盒子的统计数据
    /// </summary>
    /// <param name="request">请求参数</param>
    /// <returns>盒子统计数据</returns>
    Task<BoxStatisticsResponse> GetBoxStatisticsAsync(BoxStatisticsRequest request);

    /// <summary>
    /// 获取盒子利润统计列表
    /// </summary>
    /// <param name="request">请求参数</param>
    /// <returns>盒子利润统计列表</returns>
    Task<PagedResult<BoxProfitItem>> GetBoxProfitListAsync(BoxProfitListRequest request);

    /// <summary>
    /// 获取所有盒子的汇总统计数据
    /// </summary>
    /// <param name="request">请求参数</param>
    /// <returns>汇总统计数据</returns>
    Task<BoxProfitSummary> GetSummaryStatisticsAsync(BoxSummaryStatisticsRequest request);
}
