// const { baseUrl } = require('./env.js').prod; // 正式
// const {
//   baseUrl
// } = require('./env.js').test; // 测试

// token
let Authorization = "";
const jsonType = {
  "content-type": "application/json"
}
const urlencodeType = {
  "content-type": "application/x-www-form-urlencoded"
}

import strings from './strings.js';

// 错误类型
let statusCode = {
  '1': "请求数据失败",
  "400": "参数列表错误",
  "401": "请先登录",
  "403": "禁止访问",
  "404": "资源，服务未找到",
  "405": "错误请求方法",
  "409": "冲突",
  "413": "上传文件太大",
  "500": "服务器错误",
  "1000": "账户已在别处登录"
}

const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
};

// 封装wx.request

function _show_error(error_code) {
  wx.showToast({
    "title": statusCode[error_code],
    "icon": "error",
    "duration": 1500
  });
}

// 
function request(url, data = {}, method = "GET", header = urlencodeType, isToken = true) {
  if (isToken) {
    try {
      var value = wx.getStorageSync('token') || "";
      if (!strings.isEmpty(value)) {
        const resData = JSON.parse(value);
        Authorization = resData.token;
      }
    } catch (e) {
      Authorization = "";
    }
  }
  // 拼接地址
  var baseUrl = getApp().globalData.baseUrl;
  let fullurl = `${baseUrl}${url}`;

  //返回异步操作成功的结果和返回异步操作失败的结果
  if (!strings.isTrue(data.unShowLoad)) {
    wx.showLoading({
      title: '加载中',
    });
  }
  console.log("请求参数：", fullurl, data)
  return new Promise((resolve, reject) => {
    wx.request({
      url: fullurl,
      method,
      data,
      header: Object.assign({
        "content-type": "application/x-www-form-urlencoded",
        "appid": "wx08f94a3e90881910",
        "Authorization": isToken ? Authorization : undefined
      }, header),
      success(res) {
        console.log("接口：", fullurl, res)
        if (res.statusCode !== 200) {
          wx.hideLoading();
          wx.showToast({
            "title": "请求错误",
            "icon": "error",
            "duration": 1500
          });
          resolve(res.data);
          return;
        }

        if (!strings.isTrue(data.unShowLoad)) {
          wx.hideLoading();
        }

        if (res.data.code === 0) {
          resolve(res.data.data);
        } else if (res.data.code === 401) {
          resolve(res.data);
          var pages = getCurrentPages();
          pages[0].onLoginLoad();
          // token过期
          // try {
          //   getCurrentPages()[0].logOut();
          // } catch (e) {
          // };
        } else {
          resolve(res.data);
          _show_error(res.data.code)
        }
      },
      fail: (err) => {
        console.log("请求失败" + JSON.stringify(err));
        _show_error("1");
        wx.hideLoading();
        reject({
          code: -1,
          msg: JSON.stringify(err)
        })
      },
      complete() {}
    })
  })
}

function isCN(str) {
  if (/^[\u3220-\uFA29]+$/.test(str)) {
    return true;
  } else {
    return false;
  }
}


module.exports = {
  formatTime,
  request,
  formatNumber,
  isCN,
  urlencodeType,
  jsonType
}