
package com.tmerclub.cloud.flow.service;

import com.tmerclub.cloud.flow.bo.FlowSystemBO;

import java.util.Date;
import java.util.List;

/**
 * 流量分析—页面数据统计表
 *
 * @author YXF
 * @date 2021-05-21 15:25:19
 */
public interface SystemAnalyseMongoService {

    /**
     * 统计各端的流量数据（日）
     *
     * 统计数据存储表：system_analyse
     * 数据统计来源表：flow_user_log
     * @param beginDate
     * @param endDate
     * @return 统计的数据
     */
    void statisticsAndSaveSystemOfDay(Date beginDate, Date endDate);

    /**
     * 统计 flow_user_log 流量数据
     *
     * 接口用途：
     *      1.每天定时统计前一天的数据到 flow_system 表, 统计的方法为：statisticsAndSaveSystemOfDay()
     *      2.平台端 -> 流量概括 -> 流量总览、成交转换的实时数据
     *
     * 数据统计来源表：flow_user_log
     * @param beginDate 开始时间， 默认为执行日的开始时间
     * @param endDate 结束时间， 默认为执行日的结束时间
     * @param systemType 指定要统计的系统类型，如果为null则返回所有类型的统计结果
     * @return 统计的数据
     */
    List<FlowSystemBO> listRealTimeStatistics(Date beginDate, Date endDate, Integer systemType);

    /**
     * 插入系统统计数据（周、月）
     * @param dateType
     * @param beginDate
     * @param endDate
     */
    void statisticsAndSaveSystemOfTime(int dateType, Date beginDate, Date endDate);

    /**
     * 插入系统统计数据（周、月）
     * @param beginDate 开始时间
     * @param endDate 结束时间
     * @param systemType 系统类型 SystemTypeEnum 不填默认查询所有的用户端
     * @return
     */
    List<FlowSystemBO> statisticsSystemTypeListOfTime(Date beginDate, Date endDate, Integer systemType);


    /**
     * 查询指定的时间的数据
     * @param startTime
     * @param endTiem
     * @param dateType
     * @param systemType
     * @return
     */
    List<FlowSystemBO> listFlowSystemByDateTypeAndSystemType(Date startTime, Date endTiem, Integer dateType, Integer systemType);

    /**
     * 获取系统类型的数据列表
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param dateType 时间类型
     * @return
     */
    List<FlowSystemBO> listFlowSystem(Date startTime, Date endTime, Integer dateType);
}
