569 lines
12 KiB
JavaScript
569 lines
12 KiB
JavaScript
|
// 接口返回值code说明
|
|||
|
// 200=>正常;
|
|||
|
// 400=>报错;
|
|||
|
// 401=>需要登陆;
|
|||
|
// 402=>错误并且弹出报错,报错内容为 error;
|
|||
|
// 403=>错误并且弹出报错,报错内容为 error(小程序跳转到个人中心);
|
|||
|
// 404=>错误并且弹出报错,报错内容为 error(小程序跳转到首页);
|
|||
|
|
|||
|
var Fly = require("./wx.js") //wx.js为您下载的源码文件
|
|||
|
var fly = new Fly; //创建fly实例
|
|||
|
var tokenFly = new Fly();
|
|||
|
import $api from '@/api/index.js';
|
|||
|
import $util from './index.js';
|
|||
|
import siteInfo from '../siteinfo.js';
|
|||
|
import $store from "@/store/index.js"
|
|||
|
|
|||
|
// 打印站点信息siteInfo
|
|||
|
let allSiteInfo = Object.assign({}, {
|
|||
|
time: "2023年03月13日 18:00",
|
|||
|
remark: "(test)~ update:sp86~",
|
|||
|
}, siteInfo)
|
|||
|
|
|||
|
import {
|
|||
|
networkError,
|
|||
|
serverError,
|
|||
|
msgError
|
|||
|
} from './error.js';
|
|||
|
import store from '@/store/index.js';
|
|||
|
//添加finally方法,用于指定不管 Promise 对象最后状态如何,都会执行的操作
|
|||
|
Promise.prototype.finally = function(callback) {
|
|||
|
let P = this.constructor;
|
|||
|
return this.then(
|
|||
|
value => P.resolve(callback()).then(() => value),
|
|||
|
reason => P.resolve(callback()).then(() => {
|
|||
|
throw reason
|
|||
|
})
|
|||
|
);
|
|||
|
};
|
|||
|
|
|||
|
let isW7 = false
|
|||
|
let isH5 = false
|
|||
|
const formatUrl = function(url) {
|
|||
|
let model_name = "longbing_massages_city";
|
|||
|
let baseUrl = isW7 ?
|
|||
|
`${siteInfo.siteroot}?i=${siteInfo.uniacid}&t=${siteInfo.multiid}&v=${siteInfo.version}&from=wxapp&c=entry&a=wxapp&do=api&core=core2&m=${model_name}&s=${url}&urls=${url}` :
|
|||
|
`${siteInfo.siteroot}?i=${siteInfo.uniacid}&m=${model_name}&s=${url}&urls=${url}`
|
|||
|
|
|||
|
if (isH5) {
|
|||
|
baseUrl = `/api?i=${siteInfo.uniacid}&m=${model_name}&s=${url}`
|
|||
|
}
|
|||
|
return baseUrl
|
|||
|
}
|
|||
|
//阿里云地址转为本地域名的
|
|||
|
const formatImageUrl = function(url) {
|
|||
|
return url.includes(siteInfo.siteroot) ? url :
|
|||
|
`${formatUrl("card/getImage")}&path=${encodeURIComponent(url)}`
|
|||
|
}
|
|||
|
|
|||
|
//微信小程序登录
|
|||
|
const wxLogin = async function() {
|
|||
|
let {
|
|||
|
query
|
|||
|
} = await uni.getLaunchOptionsSync();
|
|||
|
let url = formatUrl("index/login")
|
|||
|
try {
|
|||
|
uni.showLoading({
|
|||
|
title: "登录中..."
|
|||
|
})
|
|||
|
let [providerErr, providerData] = await uni.getProvider({
|
|||
|
service: 'oauth',
|
|||
|
});
|
|||
|
let [loginErr, loginData] = await uni.login({
|
|||
|
provider: providerData.provider[0]
|
|||
|
});
|
|||
|
|
|||
|
let {
|
|||
|
pid = 0,
|
|||
|
coupon_atv_id = 0,
|
|||
|
} = query
|
|||
|
|
|||
|
let login_param = {
|
|||
|
code: loginData.code,
|
|||
|
pid,
|
|||
|
coupon_atv_id,
|
|||
|
}
|
|||
|
|
|||
|
// console.log("login_param==>", login_param);
|
|||
|
|
|||
|
let d = await tokenFly.post(url, login_param);
|
|||
|
let {
|
|||
|
code,
|
|||
|
data,
|
|||
|
error
|
|||
|
} = d.data
|
|||
|
|
|||
|
|
|||
|
if (code !== 200) {
|
|||
|
uni.hideLoading()
|
|||
|
serverError({
|
|||
|
code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
throw d;
|
|||
|
}
|
|||
|
//登录成功
|
|||
|
uni.hideLoading()
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'userInfo',
|
|||
|
val: data.data
|
|||
|
})
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'autograph',
|
|||
|
val: data.autograph
|
|||
|
})
|
|||
|
return data;
|
|||
|
} catch (e) {
|
|||
|
uni.hideLoading()
|
|||
|
let {
|
|||
|
code,
|
|||
|
error
|
|||
|
} = e.response.data
|
|||
|
if (code !== 200) {
|
|||
|
serverError({
|
|||
|
code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
}
|
|||
|
return await Promise.reject(e);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//公众号登录
|
|||
|
let H5LoginNum = 0
|
|||
|
let pageArr = ['/pages/order']
|
|||
|
const gzhLogin = async function() {
|
|||
|
let code = $util.getQueryString('code')
|
|||
|
let pageUrl = window.location.href
|
|||
|
console.log(H5LoginNum, "======H5LoginNum")
|
|||
|
if (H5LoginNum == 0 && code) {
|
|||
|
code = ''
|
|||
|
}
|
|||
|
if (code) {
|
|||
|
let coupon_atv_id = $util.getQueryString('coupon_atv_id') || 0
|
|||
|
let pid = $util.getQueryString('pid') || 0
|
|||
|
// console.log("index/webLogin ==>", code, coupon_atv_id, pid)
|
|||
|
let url = formatUrl("index/webLogin")
|
|||
|
try {
|
|||
|
let d = await tokenFly.post(url, {
|
|||
|
login_type: 'gzh',
|
|||
|
code,
|
|||
|
pid,
|
|||
|
coupon_atv_id
|
|||
|
});
|
|||
|
H5LoginNum = 0
|
|||
|
|
|||
|
let {
|
|||
|
code: res_code,
|
|||
|
data,
|
|||
|
error
|
|||
|
} = d.data
|
|||
|
|
|||
|
if (res_code !== 200) {
|
|||
|
uni.hideLoading()
|
|||
|
serverError({
|
|||
|
code: res_code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
throw d;
|
|||
|
}
|
|||
|
//登录成功
|
|||
|
uni.hideLoading()
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'isGzhLogin',
|
|||
|
val: true
|
|||
|
})
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'userInfo',
|
|||
|
val: data.data
|
|||
|
})
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'autograph',
|
|||
|
val: data.autograph
|
|||
|
})
|
|||
|
return data;
|
|||
|
} catch (e) {
|
|||
|
uni.hideLoading()
|
|||
|
let {
|
|||
|
code,
|
|||
|
error
|
|||
|
} = e.response.data
|
|||
|
// console.log("catch e code error=======", code, error)
|
|||
|
if (code == 40163) {
|
|||
|
let pages = getCurrentPages()
|
|||
|
let {
|
|||
|
route,
|
|||
|
options = {}
|
|||
|
} = pages[pages.length - 1]
|
|||
|
let routeUrl = $util.getUrlToStr(`/${route}`, options)
|
|||
|
let {
|
|||
|
userPageType = 1
|
|||
|
} = $store.state.user
|
|||
|
let pageParam = route === 'pages/mine' ? `?type=${userPageType}` : ``
|
|||
|
let loginPage = `${routeUrl}${pageParam}`
|
|||
|
let openType = pageArr.includes(loginPage) ? `reLaunch` : `navigateTo`
|
|||
|
setTimeout(() => {
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'loginPage',
|
|||
|
val: loginPage
|
|||
|
})
|
|||
|
$util.goUrl({
|
|||
|
url: `/pages/login`,
|
|||
|
openType
|
|||
|
})
|
|||
|
fly.unlock()
|
|||
|
}, 200)
|
|||
|
} else {
|
|||
|
serverError({
|
|||
|
code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
uni.hideLoading()
|
|||
|
}
|
|||
|
return await Promise.reject(e)
|
|||
|
}
|
|||
|
} else {
|
|||
|
H5LoginNum = 0
|
|||
|
let pages = getCurrentPages()
|
|||
|
let {
|
|||
|
route,
|
|||
|
options = {}
|
|||
|
} = pages[pages.length - 1]
|
|||
|
let routeUrl = $util.getUrlToStr(`/${route}`, options)
|
|||
|
let {
|
|||
|
userPageType = 1
|
|||
|
} = $store.state.user
|
|||
|
let pageParam = route === 'pages/mine' ? `?type=${userPageType}` : ``
|
|||
|
let loginPage = `${routeUrl}${pageParam}`
|
|||
|
|
|||
|
let openType = pageArr.includes(loginPage) ? `reLaunch` : `navigateTo`
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'loginPage',
|
|||
|
val: loginPage
|
|||
|
})
|
|||
|
$util.goUrl({
|
|||
|
url: `/pages/login`,
|
|||
|
openType
|
|||
|
})
|
|||
|
$util.hideAll()
|
|||
|
fly.unlock()
|
|||
|
return await Promise.reject("跳转授权===============")
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// app登录
|
|||
|
let appLoginNum = 0
|
|||
|
const appLogin = async function() {
|
|||
|
let {
|
|||
|
autograph = '',
|
|||
|
appLogin = {},
|
|||
|
loginType = 'weixin'
|
|||
|
} = $store.state.user
|
|||
|
|
|||
|
if (appLoginNum == 0 && autograph) {
|
|||
|
appLogin = ''
|
|||
|
}
|
|||
|
// console.log(autograph, "=========================appLogin autograph")
|
|||
|
if (appLogin) {
|
|||
|
code = ''
|
|||
|
let url = formatUrl(loginType == 'weixin' ? 'index/appLogin' : 'index/iosLogin')
|
|||
|
try {
|
|||
|
let d = await tokenFly.post(url, {
|
|||
|
data: appLogin
|
|||
|
});
|
|||
|
appLoginNum = 0
|
|||
|
|
|||
|
let {
|
|||
|
code: res_code,
|
|||
|
data,
|
|||
|
error
|
|||
|
} = d.data
|
|||
|
|
|||
|
if (res_code !== 200) {
|
|||
|
uni.hideLoading()
|
|||
|
serverError({
|
|||
|
code: res_code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
throw d;
|
|||
|
}
|
|||
|
//登录成功
|
|||
|
uni.hideLoading()
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'isShowLogin',
|
|||
|
val: false
|
|||
|
})
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'userInfo',
|
|||
|
val: data.data
|
|||
|
})
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'autograph',
|
|||
|
val: data.autograph
|
|||
|
})
|
|||
|
return data;
|
|||
|
} catch (e) {
|
|||
|
uni.hideLoading()
|
|||
|
appLoginNum = 0
|
|||
|
let {
|
|||
|
code,
|
|||
|
error
|
|||
|
} = e.response.data
|
|||
|
if (code !== 200) {
|
|||
|
serverError({
|
|||
|
code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
}
|
|||
|
return await Promise.reject(e);
|
|||
|
}
|
|||
|
|
|||
|
} else {
|
|||
|
appLoginNum = 0
|
|||
|
|
|||
|
let pages = getCurrentPages()
|
|||
|
let {
|
|||
|
route,
|
|||
|
options = {}
|
|||
|
} = pages[pages.length - 1]
|
|||
|
let routeUrl = $util.getUrlToStr(`/${route}`, options)
|
|||
|
let {
|
|||
|
userPageType = 1
|
|||
|
} = $store.state.user
|
|||
|
let pageParam = route === 'pages/mine' ? `?type=${userPageType}` : ``
|
|||
|
let loginPage = `${routeUrl}${pageParam}`
|
|||
|
|
|||
|
let openType = pageArr.includes(loginPage) ? `reLaunch` : `navigateTo`
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key: 'loginPage',
|
|||
|
val: loginPage
|
|||
|
})
|
|||
|
$util.goUrl({
|
|||
|
url: `/pages/login`,
|
|||
|
openType
|
|||
|
})
|
|||
|
$util.hideAll()
|
|||
|
fly.unlock()
|
|||
|
return await Promise.reject("跳转授权===============");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//设置超时
|
|||
|
fly.config.timeout = 30000;
|
|||
|
|
|||
|
//设置请求基地址
|
|||
|
|
|||
|
//给所有请求添加自定义header
|
|||
|
fly.config.headers = tokenFly.config.headers = {
|
|||
|
"content-type": "application/json"
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
let isapp = 0
|
|||
|
// #ifdef APP-PLUS
|
|||
|
isapp = 1;
|
|||
|
// #endif
|
|||
|
// #ifdef H5
|
|||
|
isapp = 2;
|
|||
|
// #endif
|
|||
|
|
|||
|
//添加请求拦截器
|
|||
|
fly.interceptors.request.use(
|
|||
|
async (request) => {
|
|||
|
//添加验证token
|
|||
|
request.headers['autograph'] = $store.state.user.autograph || '';
|
|||
|
request.headers['isapp'] = isapp;
|
|||
|
return request;
|
|||
|
})
|
|||
|
|
|||
|
//添加响应拦截器,响应拦截器会在then/catch处理之前执行
|
|||
|
fly.interceptors.response.use(
|
|||
|
async (response) => {
|
|||
|
// #ifdef H5
|
|||
|
let h5code = $util.getQueryString('code')
|
|||
|
console.log(h5code, "=======h5code")
|
|||
|
if (h5code && !$store.state.user.autograph && H5LoginNum == 0) {
|
|||
|
response.data.code = 401
|
|||
|
H5LoginNum++
|
|||
|
}
|
|||
|
// #endif
|
|||
|
|
|||
|
//token过期验证
|
|||
|
// console.log("response====>", response.request.url.split('&urls=')[1], "=== urls ====>", response.data.code, response)
|
|||
|
if (response.data.code != 401) return response;
|
|||
|
fly.lock()
|
|||
|
|
|||
|
//#ifdef MP-WEIXIN
|
|||
|
console.log("==> MP-WEIXIN 401")
|
|||
|
await wxLogin()
|
|||
|
//#endif
|
|||
|
|
|||
|
//#ifdef H5
|
|||
|
console.log("==> H5 401")
|
|||
|
if ($store.state.user.autograph) {
|
|||
|
let storeArr = ['userInfo', 'mineInfo', 'coachInfo', 'userPageType']
|
|||
|
storeArr.map(key => {
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key,
|
|||
|
val: key == 'coachInfo' ? {
|
|||
|
id: -1,
|
|||
|
} : key == 'userPageType' ? 1 : ''
|
|||
|
})
|
|||
|
})
|
|||
|
H5LoginNum++
|
|||
|
}
|
|||
|
await gzhLogin()
|
|||
|
//#endif
|
|||
|
|
|||
|
//#ifdef APP-PLUS
|
|||
|
console.log("==> APP-PLUS 401")
|
|||
|
if (!$store.state.user.autograph) {
|
|||
|
appLoginNum++
|
|||
|
}
|
|||
|
await appLogin()
|
|||
|
//#endif
|
|||
|
|
|||
|
response.request.headers["autograph"] = $store.state.user.autograph || ''
|
|||
|
fly.unlock();
|
|||
|
return fly.request(response.request);
|
|||
|
},
|
|||
|
async (err) => {
|
|||
|
console.log(err, "=======fly.interceptors.response.use err");
|
|||
|
let {
|
|||
|
status = 0,
|
|||
|
} = err
|
|||
|
|
|||
|
$util.hideAll()
|
|||
|
networkError({
|
|||
|
code: status,
|
|||
|
})
|
|||
|
//网络错误
|
|||
|
return await Promise.reject(err);
|
|||
|
}
|
|||
|
)
|
|||
|
|
|||
|
//统一处理请求,satus=200网络正常code=200服务器正常
|
|||
|
const httpType = ["post", "get"]
|
|||
|
const formatReq = function() {
|
|||
|
let req = {};
|
|||
|
httpType.forEach((type) => {
|
|||
|
req[type] = async function(url, param) {
|
|||
|
//构造请求地址
|
|||
|
url = formatUrl(url);
|
|||
|
|
|||
|
let res = await fly[type](url, param)
|
|||
|
// console.log(res, "========= formatReq res")
|
|||
|
// #ifdef MP-BAIDU
|
|||
|
res.data = typeof(res.data) == "string" ? JSON.parse(res.data) : res.data;
|
|||
|
// #endif
|
|||
|
let {
|
|||
|
code,
|
|||
|
error,
|
|||
|
data
|
|||
|
} = res.data
|
|||
|
code = code * 1
|
|||
|
if (code === 200) return data;
|
|||
|
//code!=200抛出错误
|
|||
|
$util.hideAll();
|
|||
|
if (code == 400 && error) {
|
|||
|
console.log(code, error, "code != 200");
|
|||
|
msgError({
|
|||
|
msg: error
|
|||
|
})
|
|||
|
}
|
|||
|
return await Promise.reject(res.data);
|
|||
|
}
|
|||
|
})
|
|||
|
return req;
|
|||
|
}
|
|||
|
const req = formatReq();
|
|||
|
|
|||
|
|
|||
|
// 定义上传,picture--代表图片 audio--音频 video--视频,默认picture
|
|||
|
const uploadFile = async (url, {
|
|||
|
name = "file",
|
|||
|
filePath,
|
|||
|
contentType = '',
|
|||
|
header = {
|
|||
|
autograph: $store.state.user.autograph || '',
|
|||
|
isapp: isapp
|
|||
|
},
|
|||
|
formData = {
|
|||
|
type: 'picture'
|
|||
|
}
|
|||
|
} = {}) => {
|
|||
|
url = formatUrl(url);
|
|||
|
let [resErr, res] = await uni.uploadFile({
|
|||
|
url,
|
|||
|
filePath,
|
|||
|
name,
|
|||
|
formData,
|
|||
|
header,
|
|||
|
})
|
|||
|
// console.log(res, "======uploadFile res")
|
|||
|
|
|||
|
if (res.statusCode != 200) {
|
|||
|
$util.hideAll()
|
|||
|
networkError();
|
|||
|
return await Promise.reject(res);
|
|||
|
}
|
|||
|
let parseData = JSON.parse(res.data)
|
|||
|
//服务器错误
|
|||
|
let {
|
|||
|
code,
|
|||
|
error,
|
|||
|
data
|
|||
|
} = parseData;
|
|||
|
if (code != 200) {
|
|||
|
$util.hideAll()
|
|||
|
if (code === 401) {
|
|||
|
fly.lock()
|
|||
|
//#ifdef MP-WEIXIN
|
|||
|
console.log("==> MP-WEIXIN 401")
|
|||
|
await wxLogin()
|
|||
|
//#endif
|
|||
|
|
|||
|
//#ifdef H5
|
|||
|
console.log("==> H5 401")
|
|||
|
if ($store.state.user.autograph) {
|
|||
|
let storeArr = ['userInfo', 'autograph', 'mineInfo', 'coachInfo', 'userPageType']
|
|||
|
storeArr.map(key => {
|
|||
|
$store.commit('updateUserItem', {
|
|||
|
key,
|
|||
|
val: key == 'coachInfo' ? {
|
|||
|
id: -1,
|
|||
|
} : key == 'userPageType' ? 1 : ''
|
|||
|
})
|
|||
|
})
|
|||
|
H5LoginNum = 0
|
|||
|
}
|
|||
|
await gzhLogin()
|
|||
|
//#endif
|
|||
|
|
|||
|
//#ifdef APP-PLUS
|
|||
|
console.log("==> APP-PLUS 401")
|
|||
|
if (!$store.state.user.autograph) {
|
|||
|
appLoginNum++
|
|||
|
}
|
|||
|
await appLogin()
|
|||
|
//#endif
|
|||
|
} else {
|
|||
|
serverError({
|
|||
|
code,
|
|||
|
msg: error
|
|||
|
});
|
|||
|
}
|
|||
|
return await Promise.reject(res);
|
|||
|
}
|
|||
|
return data
|
|||
|
}
|
|||
|
|
|||
|
export {
|
|||
|
fly,
|
|||
|
req,
|
|||
|
uploadFile,
|
|||
|
formatImageUrl,
|
|||
|
formatUrl,
|
|||
|
}
|