import USER_AGENT, {post, requireConfig, wait} from './TS_USER_AGENTS'
import {getSign} from "./test/sign";

let cookie: string = '', res: any = '', data: any, UserName: string

!(async () => {
  let cookiesArr: string[] = await requireConfig()
  for (let [index, value] of Object.entries(cookiesArr)) {
    cookie = value
    UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
    console.log(`\n开始【京东账号${index + 1}】${UserName}\n`)

    res = await api('cash_homePage', {})
    if (res.data.result.signedStatus !== 1) {
      console.log('今日未签到')
      data = await api('cash_sign', {"remind": 0, "inviteCode": "", "type": 0, "breakReward": 0})
      await wait(1000)
      console.log('签到成功')
    }
    res = await api('cash_homePage', {})

    await wait(1000)
    let type: number[] = [2, 4, 31, 16, 3, 5, 17, 21]
    let otherTaskNum = res.data.result.taskInfos.filter(item => !type.includes(item.type)).length
    let taskNum = res.data.result.taskInfos.filter(item => type.includes(item.type)).length
    console.log(taskNum, otherTaskNum)

    for (let i = 0; i < 10; i++) {
      res = await api('cash_homePage', {})
      if (res.data.result.taskInfos.filter(item => type.includes(item.type) && item.doTimes === item.times).length === taskNum) {
        console.log('任务全部完成')
        break
      }
      for (let t of res?.data?.result?.taskInfos || []) {
        if (t.doTimes < t.times && t.type !== 7) {
          console.log(t.name)
          data = await api('cash_doTask', {"type": t.type, "taskInfo": t.desc})
          await wait(t.duration * 1000 || 1000)
          if (data.data.bizCode === 0) {
            console.log('任务完成', data.data.result.totalMoney ?? '')
            break
          } else {
            console.log('任务失败', JSON.stringify(data))
            break
          }
        }
      }
      await wait(2000)
    }
  }
})()

async function api(fn: string, body: object) {
  let sign = getSign(fn, body)
  return await post(`https://api.m.jd.com/client.action?functionId=${fn}`, sign, {
    'Host': 'api.m.jd.com',
    'Cookie': cookie,
    'content-type': 'application/x-www-form-urlencoded',
    'user-agent': USER_AGENT,
    'referer': ''
  })
}