hengmei-two/jsFile/requst.js

299 lines
8.1 KiB
JavaScript
Raw Normal View History

// const ENV = process.env.NODE_ENV;
const ENV = process.env;
console.log(ENV,2);
let hostapi = '';
// #ifdef MP-WEIXIN
let hInfo = wx.getAccountInfoSync();
// console.log(hInfo.envVersion);//develop:开发版 trial体验版 release正式版
if(hInfo.miniProgram.envVersion == "develop" || hInfo.miniProgram.envVersion == "trial"){
// (开发版,体验版)域名
hostapi = 'https://hengmei.scdxtc.cn/api/';
} else {
// 正式版-域名
hostapi = 'https://hm.hmzfyy.cn/api/';
}
// #endif
// 清理所有缓存并前往授权页
2021-08-19 06:40:59 +00:00
const goLogin = () => {
// uni.clearStorageSync();
// uni.showToast({
// title:'信息错误请重新登录',
// icon:'none'
// })
// setTimeout(()=>{
// uni.reLaunch({
// url: '/pages/login/login'
// })
// },1000)
2021-08-19 06:40:59 +00:00
}
// 请求错误处理
const checkError = (e) => {
2021-08-19 06:40:59 +00:00
// console.error("----接口错误----", e)
if (e.data) {
if (e.data.code) {
switch (Number(e.data.code)) {
case 4003:
// 参数错误
console.log('4003参数错误');
2021-08-19 06:40:59 +00:00
break;
case 4004:
// 记录不存在
console.log('4004记录不存在');
break;
case 5001:
// xxx错误
console.log('5001xxx错误');
break;
case 5050:
// 服务器错误,请稍后重试
console.log('5050服务器错误请稍后重试');
break;
case 5051:
// 未知错误
console.log('5051未知错误');
break;
case 6001:
// token验证失败或已失效
console.log('6001token验证失败或已失效');
goLogin();
break;
2021-08-19 06:40:59 +00:00
}
}
}
2021-08-19 06:40:59 +00:00
}
const flag = true;
let urls = [];
let timer = null;
2021-08-19 06:40:59 +00:00
// 封装请求
const request = (method, url, options, ifLogin) => {
2021-08-19 06:40:59 +00:00
let methods = '';
let headers = {};
switch (method) {
case 'get':
methods = 'GET'
headers = {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
}
break;
case 'post':
methods = 'POST'
headers = {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
}
break;
case 'postForm':
methods = 'POST'
headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
}
break;
}
return new Promise((resolve, reject) => {
if(ifLogin) {
var date = new Date();
var timestamp = date.getTime();//精确到毫秒
// 如果过期时间 减 10分钟 小于当前时间刷新token
if((uni.getStorageSync('expire')*1000 - 600000) < timestamp) {
// token已失效
urls.push(url);
if(urls.length<=1) {
// 调用登录事件
uni.login({
provider: 'weixin',
success: (res)=> {
var params = {code:res.code}
uni.request({
url: `${uni.getStorageSync('hostapi')}user/login`,
method: 'post',
data: params,
success: res => {
console.log(114);
if(res.data.data.token!=''){
uni.setStorageSync('token',res.data.data.token); // 缓存token
uni.setStorageSync('openid',res.data.data.openid)//缓存openid
uni.setStorageSync('expire',res.data.data.expire); // 缓存失效时间(时间戳格式)
uni.setStorageSync('phone_active',res.data.data.phone_active); // 是否绑定手机号
uni.setStorageSync('is_active',res.data.data.is_active)//是否第一次授权
timer = setInterval(()=>{
if((uni.getStorageSync('expire')*1000 - 600000) > timestamp) {
clearInterval(timer);
if(urls.length) {
urls.forEach(item=>{
uni.request({
url: `${hostapi}${item}`,
method: methods,
data: options,
header: headers,
success: res => {
console.log(`${item}返的结果===>`,res);
if (res.statusCode == 200) {
if (res.data.code == 0) {
resolve(res.data)
} else {
uni.showToast({
title:res.data.msg,
icon:'none'
})
checkError(res)
}
} else if(res.statusCode==500) {
// goLogin();
} else {
checkError(res)
}
},
fail: e => {
checkError(e)
},
complete: rest => {
// console.log(rest);
}
})
})
}
}
},100)
}
}
})
},
});
}
} else {
// 快到token失效时间了
uni.request({
url: `${hostapi}${url}`,
method: methods,
data: options,
header: headers,
success: res => {
console.log(`${url}返的结果===>`,res);
if (res.statusCode == 200) {
if (res.data.code == 0) {
resolve(res.data)
} else {
uni.showToast({
title:res.data.msg,
icon:'none'
})
checkError(res)
}
} else if(res.statusCode==500) {
// goLogin();
} else {
checkError(res)
}
},
fail: e => {
checkError(e)
},
complete: rest => {
// console.log(rest);
}
})
2022-03-27 08:18:43 +00:00
}
} else {
// 不需要token的
uni.request({
url: `${hostapi}${url}`,
method: methods,
data: options,
header: headers,
success: res => {
console.log(`${url}返的结果===>`,res);
if (res.statusCode == 200) {
if (res.data.code == 0) {
resolve(res.data)
} else {
uni.showToast({
title:res.data.msg,
icon:'none'
})
checkError(res)
}
} else if(res.statusCode==500) {
// goLogin();
2021-08-19 06:40:59 +00:00
} else {
checkError(res)
2021-08-19 06:40:59 +00:00
}
},
fail: e => {
checkError(e)
},
complete: rest => {
// console.log(rest);
2021-08-19 06:40:59 +00:00
}
})
}
2021-08-19 06:40:59 +00:00
})
}
// 上传文件 封装请求
const uploadFile = (url, options) => {
let tempData = options || {}
return new Promise((resolve, reject) => {
uni.uploadFile({
url: `${hostapi}${url}`,
2021-08-19 06:40:59 +00:00
filePath: tempData.file,
name: 'image',
fileType:'image',
formData: tempData,
header: {
'Content-Type': 'multipart/form-data;charset=UTF-8',
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
},
success: res => {
if (res.statusCode == 200) {
let temp = JSON.parse(res.data)
if (temp.code == 0) {
resolve(temp)
} else {
reject(temp)
uni.showToast({
title: temp.msg || '接口错误(' + temp.code + ')',
icon: 'none'
})
}
} else {
uni.showToast({
title: `未知错误(${res.statusCode})`,
icon: 'none'
})
}
},
fail(e) {
// uni.showToast({
// title: '接口请求超时',
// icon: 'none'
// })
// reject(e.data)
},
complete: () => {
uni.hideLoading()
}
});
})
}
export default {
get: (url, options, ifLogin=true) => {
return request('get', url, options, ifLogin)
2021-08-19 06:40:59 +00:00
},
// JOSN格式
post: (url, options, ifLogin=true) => {
return request('post', url, options, ifLogin)
2021-08-19 06:40:59 +00:00
},
// form-data格式
postForm: (url, options, ifLogin=true) => {
return request('postForm', url, options, ifLogin)
2021-08-19 06:40:59 +00:00
},
// 上传
upload: (url, options, ifLogin=true) => {
return uploadFile(url, options, ifLogin)
2021-08-19 06:40:59 +00:00
}
}