package com.ytpm.question.dao;

import com.ytpm.agent.param.AdRecordListParam;
import com.ytpm.app.model.YtDyzAdRecord;
import com.ytpm.app.param.YtAppUserListParam;
import com.ytpm.app.view.YtUserEcpmStatisticView;
import com.ytpm.middle.view.AppRevenueHourVO;
import com.ytpm.question.view.AgentNetworkAgg;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

@Mapper
public interface AdRecordMapper {
    /**
     * 新增广告记录
     */
    void addOne(YtDyzAdRecord adRecord);

    void batchAdd(@Param("adRecords") List<YtDyzAdRecord> adRecords);

    /**
     * 保存游客广告记录
     */
    void addOneVisitor(YtDyzAdRecord adRecord);

    void batchAddVisitor(@Param("adRecords") List<YtDyzAdRecord> adRecords);

    /**
     * 查询用户的广告记录
     */
    List<YtDyzAdRecord> getByUserId(@Param("userId") String userId, @Param("adsourceType") Integer adsourceType);

    List<YtDyzAdRecord> getByUserByParam(AdRecordListParam param);

    YtUserEcpmStatisticView selectAdStatistic(AdRecordListParam param);

    /**
     * 查询用户广告记录统计数
     */
    Integer getRecordMonthCount(@Param("userId") String userId,
                                @Param("adSourceType") Integer adSourceType,
                                @Param("startTime") Date startTime);

    /**
     * 查询激励视频记录
     */
    List<YtDyzAdRecord> getByUserIds(@Param("userIds") String userIds);

    /**
     * 查询应用分小时收益数据
     */
    List<AppRevenueHourVO> getHourRevenue(@Param("appId") String appId, @Param("type") int type);

    /**
     * 根据应用统计激励广告数
     */
    int countByAppIds(@Param("appIds") String appIds);

    /**
     * 根据时间统计收益
     */
    BigDecimal getRevenueByTime(YtAppUserListParam param);

    /**
     * 查询今日广告
     */
    List<YtDyzAdRecord> getTodayRecord(@Param("appIds") String appIds, @Param("firstDay") String firstDay, @Param("lastDay") String lastDay);

    /**
     * 查询指定广告记录
     */
    List<YtDyzAdRecord> selectRecordByIds(@Param("loginStatus") Integer loginStatus, @Param("ids") List<String> adRecordIds);

    /**
     * 今日分小时按广告平台聚合
     */
    List<AgentNetworkAgg> getTodayAggByNetworkHour(@Param("appIds") String appIds);

    /**
     * 昨日按广告平台聚合
     */
    List<AgentNetworkAgg> getYesterdayAggByNetwork(@Param("appIds") String appIds);

    /**
     * 本月按广告平台聚合
     */
    List<AgentNetworkAgg> getMonthAggByNetwork(@Param("appIds") String appIds);
}