hengmei-two/jsFile/requst.js

290 lines
8.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 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/';
// hostapi = 'https://hm.hmzfyy.cn/api/';
} else {
// 正式版-域名
hostapi = 'https://hm.hmzfyy.cn/api/';
}
// #endif
// 清理所有缓存并前往授权页
const goLogin = () => {
// uni.clearStorageSync();
// uni.showToast({
// title:'信息错误请重新登录',
// icon:'none'
// })
// setTimeout(()=>{
// uni.reLaunch({
// url: '/pages/login/login'
// })
// },1000)
}
// 请求错误处理
let errorFlag = true;
const checkError = (e) => {
console.log(e,'接口错误');
if (e.data) {
if (e.data.code) {
switch (Number(e.data.code)) {
case 4003:
// 参数错误
console.log('4003参数错误');
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;
}
}
} else {
if(e.errMsg=="request:fail 对应的服务器证书无效。" || e.errno==600001) {
uni.request({
url: `${hostapi}index/err-log`,
method: 'POST',
data:{
log:`接口:${uni.getStorageSync('apiurl')},错误信息:${e}`
},
headers:{
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
},
success: (res) => {
if(res.code==0){
uni.removeStorageSync('apiurl');
}
}
})
// if(errorFlag) {
// errorFlag = false;
// uni.showModal({
// title:'服务器证书无效',
// confirmText:'确定',
// showCancel:false,
// success:(e)=> {
// if(e.confirm) {
// // 退出小程序
// wx.exitMiniProgram();
// }
// }
// })
// }
}
}
}
let flag = true;
// 封装请求
const request = (method, url, options, ifLogin) => {
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(flag) {
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 {
if(res.data.code==6001) {
flag = false;
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 => {
if(res.data.data.token!=''){
flag = true;
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)//是否第一次授权
uni.reLaunch({ // 重新进入当前页面
url:uni.getStorageSync('paramsUrl')
})
}
}
})
},
});
} else {
checkError(res)
uni.showToast({
title:res.data.msg,
icon:'none'
})
}
}
} else if(res.statusCode==500) {
flag = false;
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 => {
if(res.data.data.token!=''){
flag = true;
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)//是否第一次授权
uni.reLaunch({ // 重新进入当前页面
url:uni.getStorageSync('paramsUrl')
})
}
}
})
},
});
uni.showToast({
title:'接口错误',
icon:'none'
})
} else {
checkError(res)
uni.showToast({
title:'接口错误',
icon:'none'
})
}
},
fail: e => {
uni.setStorageSync('apiurl',url);
checkError(e)
},
complete: rest => {
// console.log(rest);
}
})
}
})
}
// 上传文件 封装请求
const uploadFile = (url, options) => {
let tempData = options || {}
return new Promise((resolve, reject) => {
uni.uploadFile({
url: `${hostapi}${url}`,
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)
},
// JOSN格式
post: (url, options, ifLogin=true) => {
return request('post', url, options, ifLogin)
},
// form-data格式
postForm: (url, options, ifLogin=true) => {
return request('postForm', url, options, ifLogin)
},
// 上传
upload: (url, options, ifLogin=true) => {
return uploadFile(url, options, ifLogin)
}
}