import base from './base.js'
import MysInfo from './mys/mysInfo.js'
import MysApi from './mys/mysApi.js'

export default class blueprint extends base {
  constructor (e) {
    super(e)
    this.model = 'blueprint'
    this.checkMsg = '设置尘歌壶模数有误\n指令:#尘歌壶模数\n示例:#尘歌壶模数123456\n参数为模数id(10-15位数字)'
  }

  async get (role) {
    /** 获取绑定uid */
    let uid = await MysInfo.getUid(this.e, false)
    if (!uid) return false
    /** 判断是否绑定了ck */
    let ck = await MysInfo.checkUidBing(uid, this.e)
    if (!ck) {
      await this.e.reply(MysInfo.tips)
      return false
    }

    this.mysApi = new MysApi(ck.uid, ck.ck, { log: true })

    /** 获取角色数据 */
    let blueprint = await this.mysApi.getData('blueprint', { share_code: role, headers: 'https://webstatic.mihoyo.com/ys/event/e20200923adopt_calculator/index.html?bbs_presentation_style=fullscreen&bbs_auth_required=true&mys_source=GameRecord' })
    /** 获取计算参数 */
    let body = await this.getBody(blueprint)
    if (!body) return false
    /** 计算 */
    let computes = await this.computes(body)
    if (!computes) return false
    return {
      saveId: uid,
      uid,
      share_code: role[0],
      blueprint,
      computes,
      ...this.screenData
    }
  }

  async getBody (data) {
    if (!data?.data?.list?.length) return false
    let newData = []
    for (let item of data?.data?.list) {
      newData.push({
        cnt: item.num * 1,
        id: item.id * 1
      })
    }
    return { list: newData }
  }

  async computes (body) {
    let computes = await this.mysApi.getData('blueprintCompute', body)
    if (!computes || computes.retcode !== 0) return false
    computes = computes.data?.list
    return computes
  }
}