package org.jeecg.ctop.material.mapper;

import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.jeecg.ctop.material.entity.vo.KuaiShouOperateGroupVo;
import org.jeecg.ctop.material.entity.vo.KuaiShouOperateVo;

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

public interface BytedanceAccountReportDailyDwMapper {

    JSONObject getTotalCharge(Map<String, Object> paramsMap);

    Long getYesterdayUploadNewMaterialCount(Map<String, Object> paramsMap);

    List<JSONObject> getHourCost(@Param("projectId") Long projectId, @Param("startTime") Integer startTime);

    List<JSONObject> getDataCost(@Param("projectId") Long projectId, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime);

    Long getProjectToDayReportTotal(@Param("projectId") Long projectId, @Param("startTime") Integer startTime, @Param("hour") Integer hour);

    List<JSONObject> getProjectToDayReport(@Param("category") String category, @Param("projectId") Long projectId, @Param("startTime") Integer startTime, @Param("hour") Integer hour, @Param("sortCode") String sortCode, @Param("order") String order);

    Long getProjectMoreDaysReportTotal(@Param("projectId") Long projectId, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("hour") Integer hour);

    List<JSONObject> getProjectMoreDaysReport(@Param("category") String category, @Param("projectId") Long projectId, @Param("startTime") Integer startTime, @Param("endTime") Integer endTime, @Param("lastStart") Integer lastStart, @Param("lastEnd") Integer lastEnd, @Param("sortCode") String sortCode, @Param("order") String order);

    List<JSONObject> getProjectNoByDays(@Param("startTime") Integer startTimeInt, @Param("endTime") Integer endTimeInt);

    List<JSONObject> getAdvertiserNoByDays(@Param("startTime") Integer startTimeInt, @Param("endTime") Integer endTimeInt);

    List<JSONObject> getUnitNoByHours(@Param("startTime") Integer startTimeInt);

    List<JSONObject> getUnitNoByDays(@Param("startTime") Integer startTimeInt, @Param("endTime") Integer endTimeInt);


    /*--------------------------------------------*/

    List<JSONObject> getToutiaoOperateInfoHourly(@Param("hour") Integer hour, @Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("lastTimeEnd") Long lastTimeEnd, @Param("lastTimeStart") Long lastTimeStart, @Param("list") List<String> operatorUserIds);

    List<JSONObject> getToutiaoOperateInfo(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("lastTimeEnd") Long lastTimeEnd, @Param("lastTimeStart") Long lastTimeStart, @Param("list") List<String> operatorUserIds);

    JSONObject getToutiaoOperateGroupInfoHourly(@Param("hour") Integer hour, @Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("lastTimeEnd") Long lastTimeEnd, @Param("lastTimeStart") Long lastTimeStart, @Param("list") Set<String> operatorUserIds);

    JSONObject getToutiaoOperateGroupInfo(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("lastTimeEnd") Long lastTimeEnd, @Param("lastTimeStart") Long lastTimeStart, @Param("list") Set<String> operatorUserIds);

    List<JSONObject> getOperateGroupCurrentHourlyByUsers(@Param("hour") Integer hour, @Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("userIds") List<String> userIds);

    List<JSONObject> getOperateGroupCurrentByUsers(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("userIds") List<String> userIds);

    List<JSONObject> getOperateGroupPreviousHourlyByUsers(@Param("hour") Integer hour, @Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("userIds") List<String> userIds);

    List<JSONObject> getOperateGroupPreviousByUsers(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("userIds") List<String> userIds);

    List<JSONObject> getOperateGroupBaseByUsers(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("userIds") List<String> userIds);

    List<JSONObject> getToutiaoOperateGroupInfoHourlyBatch(@Param("managerIds") List<String> managerIds, @Param("hour") Integer hour, @Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("lastTimeEnd") Long lastTimeEnd, @Param("lastTimeStart") Long lastTimeStart);

    List<JSONObject> getToutiaoOperateGroupInfoBatch(@Param("managerIds") List<String> managerIds, @Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("lastTimeEnd") Long lastTimeEnd, @Param("lastTimeStart") Long lastTimeStart);

}
