package com.fs.statis.service;

import com.fs.statis.dto.*;

import java.util.List;

/**
 * 统计接口
 */
public interface IStatisticsService {

    /**
     * 数据概览定时任务
     */
    void dataOverviewTask();

    /**
     * 分析概览定时任务
     */
    void analysisPreviewTask(Integer type,Integer userType);


    /**
     * 会员观看、完播人数趋势图
     */
    void watchEndPlayTrendTask(Integer type,Integer userType);


    /**
     * 经销商会员观看TOP10
     */
    void companyWatchCourseTopTenTask(Integer type,Integer statisticalType,Integer userType);

    /**
     * 课程观看TOP10
     */
    void watchCourseTopTenTask(Integer type,Integer statisticalType,Integer userType,String sort);

    /**
     * 答题红包金额TOP10
     */
    void rewardMoneyTopTenTask(Integer type,Integer dataType,Integer userType);
    void rewardMoneyTradeTask(Integer type,Integer userType);

    /**
     * 分析概览 - 经销商统计
     */
    DealerAggregatedDTO dealerAggregated();

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

    /**
     * 分析概览
     */
    AnalysisPreviewDTO analysisPreview(AnalysisPreviewQueryDTO param);

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

    /**
     * 授权信息
     * @return
     */
    AuthorizationInfoDTO authorizationInfo();

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

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

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

    List<RewardMoneyTopTenDTO> rewardMoneyTopTen(AnalysisPreviewQueryDTO param);

    List<RewardMoneyTrendDTO> rewardMoneyTrendDTO(AnalysisPreviewQueryDTO param);

    /**
     * 获取统计流量
     * @return TrafficLogDTO
     */
    TrafficLogDTO getTrafficLog();
}
