/** 封装网络请求 */ /** app的globalData中配置请求的基本设置 * api_mode:API的调用环境,prod-生产模式,dev-开发模式 * base_url:API域名配置 */ import md5 from 'js-md5' import { randomString } from 'util' import * as qs from '../lib/index.js' const app=getApp(); import { checkToken } from 'checkToken.js' function server(options){ let config={ baseUrl:app.globalData.api_domain.api_seller, method:'POST', headers: {'content-type': 'application/x-www-form-urlencoded'}, needToken:false, loading:false, ...options } return new Promise((resolve,reject)=>{ /** 配置加载样式 */ if(config.loading!==false){ wx.showLoading({ title: '加载中...', mask:true }) } /**  设置header传递 uuid */ let uuid=app.globalData.uuid config.headers['uuid']=uuid /** 是否需要传递授权参数 */ let authinfo = app.globalData.authorInfo if(authinfo&&authinfo.access_token&&config.needToken){ if (app.globalData.api_mode==='prod'){ const uid = authinfo.uid const nonce = randomString(6); const timestamp = parseInt(new Date().getTime() / 1000); const sign = md5(uid + nonce + timestamp + authinfo.access_token); const _params = { uid, nonce, timestamp, sign }; let params = config.params || {}; params = { ...params, ..._params }; config.params = params } else{ config.headers['Authorization']=authinfo.access_token; } } if ((config.method === 'put' || config.method === 'post') && config.headers['Content-Type'] !== 'application/json'){ config.data = qs.stringify(config.data, { arrayFormat: 'repeat' }) } let query='' if(config.params){ query='?'+qs.stringify(config.params) } wx.request({ url: `${config.baseUrl}${config.url}${query}`, method:config.method, header:config.headers, data:config.data, success: function (res) { if(res.statusCode===403){ console.log('statusCode',res.statusCode) //退出登陆,跳转到授权页面 // reject({ error: '授权已过期', code: 403}) wx.removeStorageSync('authorInfo') wx.removeStorageSync('sellerShop') wx.removeStorageSync('login_result') app.globalData.authorInfo={} wx.redirectTo({ url: '/pages/login/login', }) return } else if (res.statusCode ===500){ reject(res.data) return }else if (res.statusCode !== 200) { reject(res.data); return } resolve(res.data); }, fail:function(res){ reject({ error: '网络错误', code: 0 }); }, complete: function (res) { if(config.loading!==false){ wx.hideLoading() } // complete } }) }) } export default function request(options){ console.log(options.url) if (/passport\/mini-program\/smscode-login|passport\/mini-program\/smslogin\/*|passport\/mini-program\/auto-login|passport\/mini-program\/seller-login|passport\/mini-program\/token|passport\/mini-program\/bind-user|passport\/mini-program\/register-bind|passport\/mini-program\/formid|passport\/mini-program\/decryptUserinfo/.test(options.url)){ console.log('urltest') return server(options) } return new Promise((resolve, reject) => { checkToken().then(() => { server(options).then(resolve).catch(reject) }).catch(err=>{ wx.redirectTo({ url: '/pages/login/login', }) reject(err) }) }) }