123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /** 封装网络请求 */
- /** 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)
- })
- })
-
- }
|