242 lines
7.6 KiB
JavaScript
242 lines
7.6 KiB
JavaScript
import Request from './request.js'
|
||
import { throttle } from './throttle.js'
|
||
import { officialAccountAuthorize,setMiniOpenIdByCode } from '@/common/utils/weChatPay.js'
|
||
import { shopApiDomain, inviteUrlDomain } from '@/config/env.js';
|
||
|
||
//静态资源访问路径,有些资源不宜放太多到项目中影响微信小程序打包大小
|
||
export const staticUrl = "https://zyhs3.oss-cn-beijing.aliyuncs.com/static_resources/"
|
||
//后台服务接口请求地址,如果是本地运行可以用ip+端口
|
||
// http://123.57.178.78:6001 测试
|
||
// http://api.zyihs.com 正式
|
||
export const baseUrl = shopApiDomain;
|
||
// export const baseUrl = "http://ltrq.natapp1.cc/api/"
|
||
// export const baseUrl = 'http://5b2ck3.natappfree.cc'
|
||
//即时通讯连接地址,https时用wss,http时用ws,如果是本地运行可以用ip+端口
|
||
// export const imUrl = "wss://[中亿华商-im后台服务请求域名]?imToken="
|
||
export const imUrl = "ws://123.57.178.78:6000?imToken="
|
||
// export const baseUrl = "https://[redmall-boot后台服务请求域名]/api/"
|
||
// export const baseUrl = "http://123.57.178.78:6001/api/"
|
||
// export const baseUrl = "http://localhost:6001/api/"
|
||
//即时通讯连接地址,https时用wss,http时用ws,如果是本地运行可以用ip+端口
|
||
// export const imUrl = "wss://[redmall-im后台服务请求域名]?imToken="
|
||
//用户推广邀请注册h5网页网站地址,如果是本地运行可以用ip+端口
|
||
// export const inviteUrl = "https://[中亿华商-uniapp-register用户推广注册h5网站地址]/#/pages/public/reg?code="
|
||
// http://prod.zyihs.com 正式站
|
||
// http://zyhs3_re.jinanluke.com 测试站
|
||
export const inviteUrl = inviteUrlDomain
|
||
const config = {
|
||
baseUrl: baseUrl
|
||
}
|
||
|
||
const reqInterceptor = async (options) => {
|
||
//TODO do your request interceptor, such as url/header config, token refresh...
|
||
let token = uni.getStorageSync("token");
|
||
options.header = Object.assign({}, options.header, {
|
||
"Authorization": token
|
||
})
|
||
|
||
_requestLog(options, "成功通过")
|
||
// return false will abort the request, and then reject a blank object {}
|
||
return options
|
||
}
|
||
|
||
const resInterceptor = (response, conf = {}) => {
|
||
// console.log('2222222222222222222')
|
||
// TODO do your response
|
||
const statusCode = response.statusCode
|
||
const errCode = response.data.code || response.data.status || ''
|
||
if (errCode.toString() === '401') {
|
||
response.statusCode = 401
|
||
_responseLog(response, conf, "response 401")
|
||
return {
|
||
// 根据当前字段来判断是否reject
|
||
wakaryReqToReject: true,
|
||
msg: "请登录",
|
||
res: response
|
||
}
|
||
}
|
||
if (errCode.toString() === '500') {
|
||
response.statusCode = 500
|
||
_responseLog(response, conf, "response 500")
|
||
return {
|
||
// 根据当前字段来判断是否reject
|
||
wakaryReqToReject: true,
|
||
msg: response.data.msg,
|
||
res: response
|
||
}
|
||
}
|
||
// response interceptor
|
||
if (statusCode >= 200 && statusCode < 300) { //成功
|
||
if (response.data.code !== 200) { // 233抛异常
|
||
response.statusCode = response.data.code
|
||
_responseLog(response, conf, "response 222")
|
||
return {
|
||
// 根据当前字段来判断是否reject
|
||
wakaryReqToReject: true,
|
||
// 下面可以配置您的其它返回信息,方便您更加统一的处理reject的内容。
|
||
// 以下内容会被作为reject的返回,根据您的需要处理,比如返回您的具体错误信息
|
||
msg: response.data.msg,
|
||
res: response
|
||
}
|
||
}
|
||
_responseLog(response, conf, "response 200-299")
|
||
return response.data
|
||
} else if (statusCode === 500) {
|
||
_responseLog(response, conf, "response 500")
|
||
// 为了对reject的内容更加可控,我们增加了一个控制字段 wakaryReqToReject
|
||
return {
|
||
// 根据当前字段来判断是否reject
|
||
wakaryReqToReject: true,
|
||
// 下面可以配置您的其它返回信息,方便您更加统一的处理reject的内容。
|
||
// 以下内容会被作为reject的返回,根据您的需要处理,比如返回您的具体错误信息
|
||
msg: "服务器错误",
|
||
res: response
|
||
}
|
||
} else {
|
||
console.log('response服务器正在维护***************')
|
||
_responseLog(response, conf, "response 300-499")
|
||
// 为了对reject的内容更加可控,我们增加了一个控制字段 wakaryReqToReject
|
||
|
||
return {
|
||
// 根据当前字段来判断是否reject
|
||
wakaryReqToReject: true,
|
||
// 下面可以配置您的其它返回信息,方便您更加统一的处理reject的内容。
|
||
// 以下内容会被作为reject的返回,根据您的需要处理,比如返回您的具体错误信息
|
||
msg: "这里是提示信息",
|
||
res: response
|
||
}
|
||
}
|
||
}
|
||
|
||
const req = new Request(config, reqInterceptor, resInterceptor)
|
||
|
||
// request log
|
||
function _requestLog(req, describe = null) {
|
||
// if (process.env.NODE_ENV === 'development') {
|
||
// console.log("地址:" + req.url)
|
||
// if (describe) {
|
||
// console.log("描述:" + describe)
|
||
// }
|
||
// console.log("详细:" + JSON.stringify(req))
|
||
// }
|
||
|
||
//TODO into log server
|
||
}
|
||
|
||
// response log
|
||
function _responseLog(res, conf = {}, describe = null) {
|
||
let _statusCode = res.statusCode;
|
||
// alert(1)
|
||
if (process.env.NODE_ENV === 'development') {
|
||
// console.log("地址: " + conf.url)
|
||
// if (describe) {
|
||
// console.log("描述:" + describe)
|
||
// }
|
||
// console.log("结果: " + JSON.stringify(res.data))
|
||
}
|
||
//TODO into log server
|
||
console.log(res,'11')
|
||
if (_statusCode === 500) {
|
||
console.log(res)
|
||
let duration = 1500
|
||
let msg = res.data.msg
|
||
if (msg.length > 5 && msg.length <= 10) {
|
||
duration = 3000
|
||
} else if (msg.length > 10 && msg.length <=20) {
|
||
duration = 5000
|
||
} else if (msg.length > 20) {
|
||
duration = 8000
|
||
}
|
||
//关闭loading
|
||
uni.hideLoading();
|
||
setTimeout(()=> {
|
||
if(res.data.msg == "已领取,数据正在处理中!") return
|
||
uni.showToast({
|
||
title: msg,
|
||
duration: duration,
|
||
icon: "none"
|
||
})
|
||
}, 100)
|
||
|
||
} else if (_statusCode === 401 || _statusCode === 100) {
|
||
// debugger
|
||
throttle.canDoFunction({
|
||
key: "is401",
|
||
time: 1000,
|
||
success:()=>{
|
||
uni.removeStorageSync("token")
|
||
let routes = getCurrentPages()
|
||
let curRoute = routes[routes.length - 1].route
|
||
//排除的路径
|
||
let excludeRoutes = "pages/login/index,pages/login/login,pages/login/register,pages/public/reg,pages/login/forget";
|
||
if (excludeRoutes.indexOf(curRoute) < 0) { // 如果不在登录页面,账号密码登录页面、注册页面、忘记密码页面
|
||
uni.showModal({
|
||
content: '该功能需要登录后才能访问哟~',
|
||
confirmText: '马上登录',
|
||
success: function (res) {
|
||
if (res.confirm) {
|
||
uni.reLaunch({
|
||
url: "/pages/login/login"
|
||
})
|
||
} else if (res.cancel) {
|
||
console.log('用户点击取消');
|
||
}
|
||
}
|
||
});
|
||
/* uni.showToast({
|
||
title: '请登录',
|
||
icon: "none"
|
||
})
|
||
uni.reLaunch({
|
||
url: "/pages/login/index"
|
||
}) */
|
||
}
|
||
}
|
||
})
|
||
} else if(_statusCode === 81001){//微信公众号授权登入
|
||
//#ifdef H5
|
||
officialAccountAuthorize();
|
||
//#endif
|
||
|
||
//#ifndef H5
|
||
//关闭loading
|
||
uni.hideLoading();
|
||
setTimeout(()=> {
|
||
uni.showToast({
|
||
title: "该平台不支持微信公众号登入",
|
||
duration: 1500,
|
||
icon: "none"
|
||
})
|
||
}, 100)
|
||
//#endif
|
||
} else if(_statusCode === 81002){//微信小程序授权登入
|
||
//#ifdef MP-WEIXIN
|
||
setMiniOpenIdByCode();
|
||
//#endif
|
||
|
||
//#ifndef MP-WEIXIN
|
||
//关闭loading
|
||
uni.hideLoading();
|
||
setTimeout(()=> {
|
||
uni.showToast({
|
||
title: "该平台不支持微信小程序登入",
|
||
duration: 1500,
|
||
icon: "none"
|
||
})
|
||
}, 100)
|
||
//#endif
|
||
} else if(_statusCode === 404) {
|
||
//关闭loading
|
||
uni.hideLoading();
|
||
setTimeout(()=> {
|
||
uni.showToast({
|
||
title: res.data.msg,
|
||
duration: 1500,
|
||
icon: "none"
|
||
})
|
||
}, 100)
|
||
}
|
||
}
|
||
|
||
export default req
|