import Request from 'luch-request'
// let baseURL='http://139.9.103.171:9091/'
// let baseURL='http://test-szsq.nxzhsq.cn/api'
let	baseURL = 'http://192.168.1.69'
// let baseURL='https://wuye.58fo.com/api/'

const getTokenUrl=()=>{
	let tokenObj=uni.getStorageSync("tokenObj")
	return baseURL+`blade-auth/oauth/token?tenant_id=${tokenObj.tenant_id}&password=${tokenObj.password}&username=${tokenObj.username}&grant_type=password`
}
//获取token
const getTokenStorage = () => {
  let token = ''
  try {
    token = uni.getStorageSync('token')
  } catch (e) {
  }
  return token
}

const http = new Request()
http.setConfig((config) => { /* 设置全局配置 */
  config.baseURL = baseURL  /* 根域名不同 */
  config.header = {
    ...config.header,
  }
  return config
})

http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */

  	config.header = {
  	  ...config.header,
  	  "Blade-Auth": getTokenStorage()
  	}
  
  return config
}, (config) => {
  return Promise.reject(config)
})
// 是否正在刷新的标记
let isRefreshing = false
// 重试队列，每一项将是一个待执行的函数形式
let requests = []
http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作  */
	//toekn过期处理
	  //200 返回数据成功 0 上传文件成功 400 没有相关数据 || response.data.buildingCount 数据统计的~晕~~~~
      if (response.data.code == 200 || response.data.buildingCount!=undefined || response.data.code ==400 || response.data.code ==0 || response.data.access_token!=undefined) {
		  return response.data
      } else{
		  return Promise.reject(response)
	  }
  },async (err) => { // 请求错误做点什么
	  console.log("err:"+err)
	  if (err.data.code == 401) {
	      let {config} = err
	      if (!isRefreshing) {
	          isRefreshing = true
	          let token = uni.getStorageSync('token')
	  			  let url=getTokenUrl()
	  			  // if (url.indexOf('tenantId=undefined')>0) {
	  					// uni.showModal({
	  					// 	content:"会话过期，请重新登录",
	  					// 		title:"提示",
	  					// 		showCancel:false,
	  					// 		success(resp) {
	  					// 			uni.clearStorageSync()
	  					// 			uni.reLaunch({
	  					// 				url:"/pages/login/login"
	  					// 			})
	  					// 		}
	  					// })
	  					// return
	  			  // }
	          let [,res] = await uni.request({
	              url:url,
	              method: 'POST',
	              header:{
	              	Authorization:"Basic c2FiZXI6c2FiZXJfc2VjcmV0"
	              },
	          })
	          //否则保存新的token
	          token=res.data.token_type+" "+res.data.access_token
	          uni.setStorageSync('token', token)
	          requests.forEach(cb => cb())
	          // 重试完了清空这个队列
	          requests = []
	          isRefreshing = false
	          return http.request(config)
	      } else {
	          return new Promise((resolve) => {
	              // 将resolve放进队列，用一个函数形式来保存，等token刷新后直接执行
	              requests.push(() => {
	                  resolve(http.request(config))
	              })
	          })
	      }
	  }
      return Promise.reject(err)
  })
export {
  http
}

// const http = new Request()
// http.setConfig((config) => { /* 设置全局配置 */
//   config.baseURL = baseURL  /* 根域名不同 */
//   config.header = {
//     ...config.header,
//   }
//   return config
// })
// http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
//   config.header = {
//     ...config.header,
// 	cookie: "access-token="+uni.getStorageSync("access-token")
//   }
//   return config
// }, (config) => {
//   return Promise.reject(config)
// })
// http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作  */
// 		if(response.data.code=="401"){
// 			uni.showModal({
// 				title: "请登录",
// 				content: response.data.msg,
// 				showCancel: false,
// 				success: (res) => {
// 					if (res.confirm) {
// 						uni.reLaunch({
// 							url: "/pages/login/login",
// 						})
// 					}
// 				}
// 			})
// 			return;
// 		}
//       return response.data
//   }, (err) => { // 请求错误做点什么
//       uni.showToast({
//           icon: 'none',
//           position: 'bottom',
//           title: '网络异常'
//       })
//       return err
//   })
// export {
//   http
// }
