| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import Request from 'luch-request'
- import util from '../../utils/util.js'
- // let baseURL = 'http://192.168.1.244:9527/'
- let baseURL = 'https://park.58fo.com/api/'
- const getTokenUrl=()=>{
- let tokenObj=uni.getStorageSync("tokenObj")
- return baseURL+`blade-auth/oauth/token?tenantId=${tokenObj.tenantId}&password=${tokenObj.password}&username=${tokenObj.username}`
- }
- //获取token
- const getTokenStorage = () => {
- let token = ''
- try {
- token = uni.getStorageSync('token')
- } catch (e) {
- }
- return token
- }
- //不需要加上Blade-Auth的url
- const WHiTE_LIST=['agency/agency/getAgencyTenantList']
- const http = new Request()
- http.setConfig((config) => { /* 设置全局配置 */
- config.baseURL = baseURL /* 根域名不同 */
- config.header = {
- ...config.header,
- }
- return config
- })
- http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
- if (!WHiTE_LIST.includes(config.url)) {
- 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过期处理
- if (response.data.code == 401) {
- let {config} = response
- 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,
- 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))
- })
- })
- }
- }
- //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)
- }
- }, (err) => { // 请求错误做点什么
- uni.showToast({
- icon: 'none',
- position: 'bottom',
- title: '网络异常'
- })
- return Promise.reject(err)
- })
- export {
- http
- }
|