//获取字节小程序
var axios = require('axios');
const { default: BigNumber } = require('bignumber.js');
var JSON_BIG = require('json-bigint')
const CMD = {}
const url = 'https://api.oceanengine.com/open_api/v3.0/tools/micro_app/list/'
CMD.send = async function(task_id){
    var api = require('./api');
    api.getToken(async (token)=>{
        if(token!=null){
            api.getAdvertiserList((list)=>{
                if(list.length<=0){
                    console.log("getAdvertiserList < 0 error",global.config.advertiser_list)
                }else{
                    // let cc_account_id = list[0].advertiser_id
                    // api.getAppAccountList(cc_account_id,(account_list)=>{  //遍历所有账户，会有 Too many requests by this developer. Please retry in some time ，请求限制
                    //     if(account_list!=null){
                    //         let count = 0;
                    //         let count_num = ()=>{
                    //             count = count + 1
                    //             if(count == account_list.length){
                    //                 global.config.initFinishFindApp(task_id)
                    //             }
                    //         }
                    //         for (let index = 0; index < account_list.length; index++) {
                    //             const info = account_list[index];
                    //             CMD.getAppInfo(count_num,info.advertiser_id,token)
                    //         }
                    //     }else{
                    //         console.log("getAppAccountList eror account_list ==null",global.config.account_list)
                    //     }
                    // })
                    let count = 0;
                    let count_num = ()=>{
                        count = count + 1
                        if(count ==  global.config.advertiser_id_list.length){
                            global.config.initFinishFindApp(task_id)
                        }
                    }
                    for (let index = 0; index < global.config.advertiser_id_list.length; index++) {
                        const advertiser_id = global.config.advertiser_id_list[index];
                        CMD.getAppInfo(count_num,advertiser_id,token)
                    }
                }
      
            })
        }else{
            console.log("token == null")
        }
    })
}

CMD.getAppInfo = async function(call_back,advertiser_id,token){
    // if(global.config.app_list[''+advertiser_id]!=null&&global.config.app_list[''+advertiser_id]!=undefined){
    //     call_back()
    //     return
    // }
    if(global.config.app_list[''+advertiser_id]!=undefined){
        call_back()
        return 
    }
    global.config.app_list[''+advertiser_id] = []
    const headers =  {
        "Access-Token": token, 
        "Content-Type":"application/json"
    }
    const params = {
        access_token: token,
        "Content-Type":"application/json",
        advertiser_id:advertiser_id
    };

    const instance = axios.create({
        baseURL: process.env.VUE_APP_API_HOST,
        timeout: 12000,
        withCredentials: false,
    
        // 安装 json-bigint 处理long类型精度丢失问题
        // 或者更改服务器代码使用String 类型    // 一般日期都是格式化传过来的，就算使用时间戳一般也看不出来 时间相差不大 主键id就不一样了,拿到id想去修改这个数据居然查不到
        // 我这是id出问题了才发现的  原来一直使用的varchar 保存的雪花主键 字段使用String
        // 现在使用bigint 字段使用long就出问题了
        transformResponse: data => {
          try{
            return JSON_BIG.parse(data);
          }catch (err) {
            console.log("getAppInfo:",err);
            return JSON.parse(data)      
         }    
         }
     });
    await instance.get(url,{  params,headers })
    .then(response => {
        try{
            if(response.data!=undefined){
                if(response.data.data.list.length>0){
                    global.config.app_list[''+advertiser_id] = response.data.data.list
                }
            }
        }catch(e){
            console.log("getAppInfo:",response);
        }
        // call_back(config.advertiser_list)
        call_back()
    })
    .catch(error => {
        // call_back(null)
        console.error("Error getAppInfo GET request:", error);
    });
}
module.exports = CMD;

//是否必填：是, 字段 : advertiser_ids 类型 :number[]  描述 :广告主ID集合(如果包含没有访问权限的ID,将返回no permission error)取值范围: 1-100
//是否必填：否, 字段 : fields 类型 :nstring[]  描述 :查询字段集合, 默认:查询所有。字段详见下方response字段定义允许值: id、name、role、status、address、reason、license_url、license_no、license_province、license_city、company、brand、promotion_area、promotion_center_province、promotion_center_city、industry、create_time、note


//应答示例
// HTTPS/1.1 200 OK {    
//     "message": "OK",  
//     "code": 0,    
//     "data": [     
//           {             
//            "promotion_area": "",        运营区域    
//            "brand": "xxx",            经营类别 
//            "address": "",           地址  
//            "id": 0,             广告主ID
//            "name": "xxx",         账户名
//            "license_city": "",         执照城市    
//            "promotion_center_city": "",          运营城市   
//            "promotion_center_province": "",    运营省份         
//            "industry": "xxx",             
//            "license_no": "xxx",             执照编号
//            "license_url": "xxx",        执照预览地址(链接默认1小时内有效)     
//            "role": 6,            角色 
//            "license_province": "",       执照省份      
//            "company": "xxx",        公司名
//           }    
//         ],     
//      "request_id": "xxx" 
//  }