120 lines
3.9 KiB
JavaScript
120 lines
3.9 KiB
JavaScript
const app = getApp();
|
|
const config = app.loadConfig();
|
|
const regeneratorRuntime = app.loadAsync()
|
|
|
|
const { GetSetting } = require("../model/getSetting")
|
|
const getSetting = new GetSetting()
|
|
|
|
const { Getauth } = app.loadModel("user")
|
|
const getauth = new Getauth()
|
|
|
|
const { Msg } = require("../model/message")
|
|
const msg = new Msg()
|
|
|
|
const util = app.loadUtils("util")
|
|
/**
|
|
* 对request二次封装
|
|
*/
|
|
export class Http {
|
|
constructor() {
|
|
|
|
}
|
|
/**
|
|
* 普通请求处理
|
|
* @param {Object} option
|
|
* header 自定义请求头 url传入的请求地址 data接口入参 method接口请求方式默认GET
|
|
*/
|
|
async request1(option) {
|
|
// 拼接请求头内容 此处拿出来方便后期对请求头做二次处理
|
|
let header = { ...option.header || "" }
|
|
return new Promise(function (resolve, reject) {
|
|
wx.request({
|
|
url: `${config.baseUrl}${option.url}`,
|
|
data: option.data || {},
|
|
method: option.method || "GET",
|
|
header: header,
|
|
success(res) {
|
|
// 数据成功时返回数据
|
|
if (res.data.status == 1) {
|
|
resolve(res)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
/**
|
|
* 带token请求处理
|
|
* @param {Object} option
|
|
* header 自定义请求头 url传入的请求地址 data接口入参 method 接口请求方式默认GET
|
|
*/
|
|
async request2(option) {
|
|
let that = this
|
|
// 获取token放入请求头中
|
|
let token = await util.token();
|
|
// 拼接请求头内容 此处拿出来方便后期对请求头做二次处理
|
|
let header = { token: token || "", ...option.header || "" }
|
|
return new Promise(function (resolve, reject) {
|
|
// 判断本地是否已经授权和登录,如果没授权和登录跳转
|
|
if (!getSetting.isAuthorization() || !token) {
|
|
reject('用户未授权登录')
|
|
wx.navigateTo({
|
|
url: '/pages/login/login'
|
|
})
|
|
return
|
|
}
|
|
wx.request({
|
|
url: `${config.baseUrl}${option.url}`,
|
|
data: option.data || "",
|
|
method: option.method,
|
|
header: header,
|
|
success(res) {
|
|
// token过期
|
|
if (res.data.error_code == 30002) {
|
|
getauth.login()
|
|
.then(async login => {
|
|
// token过期重新请求过期接口
|
|
// 然后resolve把结果跑出去
|
|
let newRes = await that.request2(option)
|
|
resolve(newRes)
|
|
})
|
|
return
|
|
}
|
|
// 数据成功时返回数据
|
|
if (res.data.status == 1) {
|
|
resolve(res)
|
|
} else {
|
|
if (res.data.error_code == 30002) return;
|
|
wx.showToast({
|
|
title: res.data.msg,
|
|
icon: 'none',
|
|
duration: 2500
|
|
})
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
/**
|
|
* 上传图片
|
|
* @param {*} data 需要上传的图片路径
|
|
*/
|
|
uploadFile(data) {
|
|
wx.showLoading({
|
|
title: '上传中',
|
|
})
|
|
return new Promise((resolve, reject) => {
|
|
wx.uploadFile({
|
|
url: `${config.baseUrl}/addImg`,
|
|
filePath: data,
|
|
name: 'file',
|
|
header: {
|
|
'Content-Type': 'multipart/form-data;'
|
|
},
|
|
success(res) {
|
|
wx.hideLoading()
|
|
resolve(res)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
} |