package com.ytpm.dao.dyz;

import com.ytpm.agent.view.AgentAdGroupStaticsVO;
import com.ytpm.app.model.YtDyzAdRecord;
import com.ytpm.app.param.YtAppUserListParam;
import com.ytpm.middle.view.AppRevenueHourVO;
import com.ytpm.middle.view.NetWorkEcpmVO;
import com.ytpm.middle.view.NetWorkRevenueVO;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.math.BigDecimal;
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<AppRevenueHourVO> getHourRevenue(@Param("appId") String appId,@Param("type")int type);

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

    /**
     * 根据应用查询收益
     */
    BigDecimal getRevenueByType(@Param("appIds") String appIds,@Param("type") int type);

    /**
     * 根据应用和广告平台查询收益
     */
    BigDecimal getNetworkRevenueByType(@Param("appIds") String appIds,@Param("type") int type,@Param("networkId") String networkId);

    /**
     * 根据广告平台ID获取收益
     */
    List<NetWorkRevenueVO> getRevenueByIds(@Param("appIds") String appIds, @Param("type") int type, @Param("networkIds") String networkIds);

    /**
     * 根据应用查询ecpm
     */
    BigDecimal getEcpmByType(@Param("appIds")String appIds, @Param("type")int type);

    BigDecimal getNetworkEcpmByType(@Param("appIds")String appIds, @Param("type")int type,@Param("networkId") String networkId);

    /**
     * 根据广告平台ID获取平均ecpm
     */
    List<NetWorkEcpmVO> getEcpmByIds(@Param("appIds")String appIds, @Param("type")int type, @Param("networkIds") String networkIds);

    /**
     * 查询广告平台分组统计
     */
    List<AgentAdGroupStaticsVO> getAdGroupStatics(@Param("appIds")String appIds);

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

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