package com.fs.statis.service;

import com.fs.statis.dto.*;

import java.util.List;

/**
 * 公司统计接口
 */
public interface IStatisticsCompanyService {

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

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


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


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

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

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



    DealerAggregatedDTO dealerAggregated(Long companyId);

    /**
     * 消费余额
     */

    ConsumptionBalanceDataDTO rechargeConsumption(Long companyId);

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

    Long smsBalance(Long companyId);

    /**
     * 授权信息
     * @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(Long companyId);

    /**
     * 本月订单数
     */
    void thisMonthOrderCount(Long companyId);

    /**
     * 本月收款数
     */
    void thisMonthRecvCount(Long companyId);
}
