package com.fs.statis.mapper;

import com.fs.statis.dto.*;

import java.math.BigDecimal;
import java.util.List;

public interface ConsumptionBalanceMapper {
    /**
     * 分析概览 - 经销商统计
     */
    AnalysisPreviewDTO analysisPreview(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 消费余额
     */
    ConsumptionBalanceDataDTO rechargeConsumption();

    DealerAggregatedDTO dealerAggregated();

    /**
     * 观看人数
     * @param queryDTO 请求参数
     * @return 观看人数
     */
    Long queryWatchUserCount(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 完播人数
     * @param queryDTO 请求参数
     * @return  完播人数
     */
    Long queryCompletedUserCount(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 观看次数
     * @param queryDTO 请求参数
     * @return 观看次数
     */
    Long queryWatchCount(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 完播次数
     * @param queryDTO 请求参数
     * @return 完播次数
     */
    Long queryCompletedCount(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 答题人数
     * @param queryDTO 请求参数
     * @return 答题人数
     */
    Long queryAnswerMemberCount(AnalysisPreviewQueryDTO queryDTO);


    /**
     * 正确人数
     * @param queryDTO 请求参数
     * @return 正确人数
     */
    Long queryCorrectUserCount(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 答题红包个数
     * @param queryDTO 请求参数
     * @return 奖励人数
     * @return
     */
    Long queryRewardCount(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 答题红包金额
     * @param queryDTO 请求参数
     * @return 奖励金额
     */
    BigDecimal queryRewardMoney(AnalysisPreviewQueryDTO queryDTO);

    /**
     * 短信余额
     * @return 短信余额
     */
    Long smsBalance();

    AuthorizationInfoDTO authorizationInfo();

    /**
     * 会员观看、完播人数趋势图
     * @param param 请求参数
     * @return 观看完播趋势
     */
    List<WatchEndPlayTrendDTO> watchEndPlayTrend(AnalysisPreviewQueryDTO param);

    /**
     * 经销商会员观看TOP10
     * @param param 请求参数
     * @return TOP10
     */
    List<DeaMemberTopTenDTO> deaMemberTopTen(AnalysisPreviewQueryDTO param);

    /**
     * 课程观看TOP10
     * @param param 请求参数
     * @return TOP10
     */
    List<CourseStatsDTO> watchCourseTopTen(AnalysisPreviewQueryDTO param);

    /**
     * 奖励金额TOP10
     * @param param 请求参数
     * @return TOP10
     */
    List<RewardMoneyTopTenDTO> rewardMoneyTopTen(AnalysisPreviewQueryDTO param);

    /**
     * 奖励金额趋势
     * @param param 请求参数
     * @return 趋势
     */
    List<RewardMoneyTrendDTO> rewardMoneyTrendDTO(AnalysisPreviewQueryDTO param);
}
