package org.jeecg.ctop.finance.settlement.mapper;

import org.apache.ibatis.annotations.Param;
import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
import org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportBytedanceVo;
import org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo;
import org.jeecg.ctop.finance.settlement.entity.vo.SheetKuaiShouVo;

import java.util.List;
import java.util.Map;
import java.util.Set;


/**
 * @description:
 * @return:
 * @author: zianY
 * @time: 2021/7/28 17:07
 */
public interface ReportSettlementMapper {

    /**
     * 获取头条 账户 日流水信息 根据账户id 和 年月 查询数据
     */
    List<SettlementReportBytedanceVo> getAccountTransactionDayBytedance(SettlementFileParamsVo paramsVo);

    List<Map<String, Object>> getAccountTransactionDayBytedanceSheet(@Param("accountIds") List<String> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 获取快手 账户 日流水信息 根据账户id 和 年月 查询数据
     */
    List<SettlementReportKuaiShouVo> getAccountTransactionDayKuaiShou(SettlementFileParamsVo paramsVo);

    //获取快手 账户 日流水信息  代理商维度
    List<SettlementReportKuaiShouVo> getAccountTransactionDayKuaiShouAgent(SettlementFileParamsVo paramsVo);

    // 获取快手 结算单 账户 和 代理商 维度
    List<SettlementReportKuaiShouVo> getTransactionDayKuaiShouAgentAndAccount(SettlementFileParamsVo paramsVo);

    List<SheetKuaiShouVo> getTransactionDayKuaiShouSheet(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询 账户id
     */
    List<String> getAccountIdBytedance(@Param("sales") Set<String> sales, @Param("mediaId") String mediaId, @Param("advertiserId") String advertiserId, @Param("productId") String productId, @Param("projectId") String projectId);

    List<String> getAccountIdBytedanceRepeat(@Param("accountIds") List<String> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    List<String> getAccountIdKuaiShouRepeat(@Param("accountIds") List<String> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询 头条 账户 图片
     */
    List<String> getAccountImagesBytedance(@Param("accountId") String accountId, @Param("time") String time);


    /**
     * 查询 头条利润表 总花费
     */
    List<Map<String, Object>> getProfitBytedanceAccount(@Param("startTime") String startTime, @Param("endTime") String endTime);

    Map<String, Object> getProfitBytedanceAccountCost(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    List<Map<String, Object>> getProfitBytedanceCost(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询 快手 利润表 所有账户
     */
    List<Map<String, Object>> getProfitKuaiShouAgentAccount(@Param("startTime") String startTime, @Param("endTime") String endTime);

    Map<String, Object> getProfitKuaiShouAccountCost(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    List<Map<String, Object>> getProfitKuaiShouAccountCostSheet(@Param("accountIds") List<String> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    //快手 利润表 账户 时间段内的数据信息
    List<Map<String, Object>> getProfitKuaiShouCost(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询 头条利润表  返点类型和比列
     */
    List<Map<String, Object>> getProfitBytedance(@Param("advertiserName") String advertiserName, @Param("productName") String productName, @Param("saleId") String saleId, @Param("mediaType") String mediaType, @Param("startTime") String startTime, @Param("endTime") String endTime);

    Map<String, Object> getProfitRebate(@Param("advertiserName") String advertiserName, @Param("productName") String productName, @Param("saleId") String saleId, @Param("mediaType") String mediaType, @Param("startTime") String startTime, @Param("endTime") String endTime);

    Map<String, Object> getProfitReportSale(String accountId);

    Map<String, Object> getProfitBytedanceOperate(String accountId);

    Map<String, Object> getProfitReportOperateAndArea(String accountId);


    /**
     * 查询 所有已绑定用户的运营人员id
     */
    List<Map<String, Object>> getAccountOperateUserId();

    /**
     * 查询运营人员 绑定的账户 以及产品
     */
    List<Map<String, Object>> getAccountAndProductByOperate(String userId);


    String getBytedanceActive(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    String getKuaiShouActivation(@Param("accountId") String accountId, @Param("startTime") String startTime, @Param("endTime") String endTime);

}
