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