package com.ytpm.lemonios.dao;

import com.ytpm.agent.param.AdRecordListParam;
import com.ytpm.app.model.YtDyzAdRecord;
import com.ytpm.app.param.YtAppUserListParam;
import com.ytpm.app.view.IpAdRecordView;
import com.ytpm.app.view.YtUserEcpmStatisticView;
import com.ytpm.middle.view.AppRevenueHourVO;
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);
    /**
     * 查询用户的广告记录
     */
    List<YtDyzAdRecord> getByUserId(@Param("userId") String userId,@Param("adsourceType") Integer adsourceType);

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

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

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

    List<YtDyzAdRecord> getByUserByParam(AdRecordListParam param);

    YtUserEcpmStatisticView selectAdStatistic(AdRecordListParam param);

    /**
     * 查询应用分小时收益数据
     */
    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);

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

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

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

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

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

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

    long getAdCountByLoadId(@Param("iosId") String iosId, @Param("loadId") String loadId);

    List<IpAdRecordView> queryGroupByIpSourceType(@Param("param") YtAppUserListParam param);
}
