import { api } from '../api'
import { request } from 'umi'

export interface ListType {
    // startTime?: string,
    // endTime?: string,
    timeUnit?: 'minute' | 'hour' | 'day',//时间维度
    adId?: any,//广告ID
    planId?: any,//计划ID
    mpAppIds?: any,//公众号
    pitcherIds?: any,//投手
    page?: number,//页数
    pageSize?: number//条数
    sortField?: string, // "排序字段"
    sort?: 'ASC' | 'DESC'  // 排序方式
}

/** 获取起量广告列表总表 */
export async function getPlanListApi(params: ListType) {
    Object.keys(params).forEach(key => {
        if (!params[key]) {
            delete params[key]
        }
    })
    return request(`${api}/ad/adControl/up/ad/list`, {
        method: 'GET',
        params
    })
}
/** 获取起量广告列表明细 */
export async function getDetailListApi(params: ListType) {
    Object.keys(params).forEach(key => {
        if (!params[key]) {
            delete params[key]
        }
    })
    return request(`${api}/ad/adControl/up/ad/detail/list`, {
        method: 'GET',
        params
    })
}

/** 获取起量广告列表5min */
export async function getMinuteListApi(params: ListType) {
    Object.keys(params).forEach(key => {
        if (!params[key]) {
            delete params[key]
        }
    })
    return request(`${api}/ad/adControl/up/ad/detail/list/minute`, {
        method: 'GET',
        params
    })
}

/** 获取今日计划总消耗图谱 折线图 */
export async function getTotalCostApi(params: ListType) {
    Object.keys(params).forEach(key => {
        if (!params[key]) {
            delete params[key]
        }
    })
    return request(`${api}/ad/adControl/total/cost/list`, {
        method: 'GET',
        params
    })
}

/** 获取计划消耗图谱 z柱状图 */
export async function getPlanCostApi(params: ListType) {
    Object.keys(params).forEach(key => {
        if (!params[key]) {
            delete params[key]
        }
    })
    return request(`${api}/ad/adControl/ad/cost/list`, {
        method: 'GET',
        params
    })
}

/** 获取消耗速度详情(弹窗) */
export async function getCostSpeedApi(params: ListType) {
    Object.keys(params).forEach(key => {
        if (!params[key]) {
            delete params[key]
        }
    })
    return request(`${api}/ad/adControl/cost/speed/info`, {
        method: 'GET',
        params
    })
}

/** 获取组员 */
export async function getUserGroupApi() {
    return request(`${api}/erp/userGroup/memberUser/`, {
        method: 'GET'
    })
}


export interface allPlanProps {
    page?: number,
    pageSize?: number,
    adSeat?: any[],// 广告位置 1 : 朋友圈信息流, 2 : 公众号文章底部, 3 : 公众号文中广告, 4 : 公众号文章视频贴片, 5 : 小程序banner广告, 6 : 激励式广告
    createStartTime?: number, // 创建开始时间
    createEndTime?: number,  // 创建结束时间
    adIdOrName?: string,  // 广告ID & 广告名称
    creativeIdOrName?: string,  // 创意ID & 创意名称
    creativeStatus?: 1 | 2 | 3,  // 创意状态, 0或者null : 全部, 1 : 审核通过, 2 : 审核中, 3 : 未通过
    dataStartTime?: string,  // 数据结束日期(格式 : yyyy-MM-dd)
    dataEndTime?: string,  // 数据结束日期(格式 : yyyy-MM-dd)
    followStatus?: 1 | 2,  // 关注状态, 0或者null : 全部, 1 : 已关注, 2 : 未关注
    mainBookList?: any[],   // 主投书籍列表
    mpAppIds?: any,  // 投放计划数据源, 公众号appId列表
    pitcherIds?: any,  // 投手id列表
    planIdOrName?: string, // 计划id或者计划名称
    adStatus?: number, // 计划状态, 0或者null : 全部, 1 : 投放中, …依次递增
    serviceProviderIdList?: string,  // 服务商id列表
    sortField?: string, // "排序字段"
    sort?: 'ASC' | 'DESC',  // 排序方式
    groupId?: number, // 分组ID
}
/** 计划列表 */
export async function getAllPlanListApi(data: allPlanProps) {
    Object.keys(data).forEach(key => {
        if (!data[key]) {
            delete data[key]
        }
    })
    return request(`${api}/ad/adControl/all/ad/list`, {
        method: 'POST',
        data
    })
}


/** 获取服务商列表 */
export interface listProps {
    mpAppIds?: string,
    pitcherIds?: string
}
export async function getAgencyListApi(params: listProps) {
    return request(`${api}/ad/adControl/get/agency/list`, {
        method: 'GET',
        params
    })
}
/** 获取书籍列表 */
export async function getBookListApi(params: listProps) {
    return request(`${api}/ad/adControl/get/book/list`, {
        method: 'GET',
        params
    })
}
/** 获取所有书籍 */
export async function getBookListAllApi() {
    return request(`${api}/erp/book/all`, {
        method: 'GET'
    })
}

/** 下载 */
/** 下载起量广告总表 */
export async function downLoadUpAdApi(params: ListType) {
    return request(`${api}/ad/adExcel/up/ad/list`, {
        method: 'GET',
        params,
        responseType: 'blob'
    })
}

/** 下载单个广告明细表(小时) */
export async function downLoadDetailApi(params: ListType) {
    return request(`${api}/ad/adExcel/up/ad/detail/list`, {
        method: 'GET',
        params,
        responseType: 'blob'
    })
}

/** 下载单个广告明细表(5分钟) */
export async function downLoadDetailMinuteApi(params: ListType) {
    return request(`${api}/ad/adExcel/up/ad/detail/list/minute`, {
        method: 'GET',
        params,
        responseType: 'blob'
    })
}

/** 下载消耗速度详情(弹窗) */
export async function downLoadSpeedApi(params: ListType) {
    return request(`${api}/ad/adExcel/cost/speed/info`, {
        method: 'GET',
        params,
        responseType: 'blob'
    })
}

/** 下载计划列表 */
export async function downLoadAllAdListApi(data: allPlanProps) {
    Object.keys(data).forEach(key => {
        if (!data[key]) {
            delete data[key]
        }
    })
    return request(`${api}/ad/adExcel/all/ad/list`, {
        method: 'POST',
        data,
        responseType: 'blob'
    })
}


// 监控数据源
// 查询分组
export async function getAdGroupListApi() {
    return request(`${api}/ad/adGroup/list`, {
        method: 'GET'
    })
}

// 查询分组
export async function addEditGroupApi(data: { groupName: string, id?: number, remark?: string }) {
    return request(`${api}/ad/adGroup/add/or/update`, {
        method: 'POST',
        data
    })
}

// 删除分组
export async function deleteAdGroupApi(params: { id: number }) {
    return request(`${api}/ad/adGroup/delete`, {
        method: 'DELETE',
        params
    })
}

// 分组账号查询
export interface AccountListProps {
    // beginDate?: string,
    // endDate?: string,
    groupId?: number,
    mpAppIdList?: string[],
    pitcherIdList?: string[],
    pageNum: number,
    pageSize: number
}
export async function getAccountListApi(data: AccountListProps) {
    Object.keys(data).forEach(key => {
        if (!data[key]) {
            delete data[key]
        }
    })
    return request(`${api}/ad/adGroup/accountList`, {
        method: 'POST',
        data
    })
}

// 账号绑定或者解绑分组
export async function addDelAccountApi(data: { accountIdList: number[], groupId: number, type: 0 | 1 }) {
    return request(`${api}/ad/adGroup/account/update`, {
        method: 'POST',
        data
    })
}