市北人才赋能平台 --小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

117 lines
3.0 KiB

import { config } from '../config.js'
import {store} from './store.js'
const Method = {
GET: 'GET',
POST: 'POST'
}
// 定义一些通用常量
const HTTPConst = {
TokenURL: '/api/miniuser/getToken'
}
class HTTP {
constructor() {
this.baseUrl = config.api_url
}
request = (params) => {
// 从缓存中读取 token
// let token = wx.getStorageSync(HTTPConst.TokenStoreKey) || ''
const token = store.readToken()
let url = this.baseUrl + params.url
console.log(params.url)
if (!params.method) {
params.method = Method.GET
}
// token 拼接到 请求体中
let data = params.data
console.log('请求参数:')
console.log({token: token, ...data})
wx.request({
url: url,
data: data,
header: {
'token': token,
'content-type': 'application/json',
},
method: params.method,
dataType: 'json',
success: function (res) {
console.log(res.data)
let code = res.statusCode.toString()
let startCode = code.charAt(0)
if (startCode == '2') {
if (res.data.code == 200 || res.data.code == 0) {
params.success && params.success(res.data)
} else if (res.data.code == 302) {
// token 无效
this.fetchAuthToken(res => {
// 请求Token后,重新请求URL
if(res.code == 200) {
this.request(params)
}
})
} else {
console.log('数据请求失败')
wx.showToast({
title: res.data.message,
icon: 'none'
})
}
} else {
console.log('请求错误')
wx.showToast({
title: '服务器错误!',
icon: 'none'
})
params.error && params.error(res)
}
},
fail: function (res) {
wx.showToast({
title: '网络连接错误,请求失败!',
icon: 'none'
})
params.fail && params.fail(res)
},
})
}
// 获取 Token
fetchAuthToken(success) {
// 获取token
this._fetchWXCode().then(res => {
console.log('啦啦啦啦凉啊')
console.log(res)
if (!res) return
let params = {
url: HTTPConst.TokenURL,
method: Method.POST,
data: {
code: res
},
success: (data) => {
// 将获取到的token存放起来
const { token, userInfo } = data.result
store.saveToken(token)
store.saveUserInfo(userInfo)
// wx.setStorageSync(HTTPConst.UserInfoStoreKey, userInfo)
// wx.setStorageSync(HTTPConst.TokenStoreKey, token)
success(data)
},
}
this.request(params)
})
}
// 获取微信code
_fetchWXCode() {
return new Promise(resolve => {
wx.login({
success(res) {
console.log('获取Code成功 ' + res.code)
resolve(res.code)
}
})
})
}
}
export { HTTP, Method, HTTPConst }