279 lines
5.7 KiB
JavaScript
279 lines
5.7 KiB
JavaScript
// 接口返回值code说明
|
||
// 200=>正常;
|
||
// 400=>报错;
|
||
// 401=>需要登陆;
|
||
// 50001=>没有购买权限,错误并且弹出报错,报错内容为 error(小程序跳转到个人中心认证车手页面);
|
||
|
||
var Fly = require("./wx.js") //wx.js为您下载的源码文件
|
||
var fly = new Fly; //创建fly实例
|
||
var tokenFly = new Fly();
|
||
import util from './index.js';
|
||
import siteInfo from '../siteinfo.js';
|
||
import $store from "@/store/index.js"
|
||
|
||
// 打印站点信息siteInfo
|
||
let allSiteInfo = Object.assign({}, {
|
||
time: "2022年09月129日 19:50",
|
||
remark: "(test)~ update:apple_login~",
|
||
}, siteInfo)
|
||
console.log(allSiteInfo);
|
||
|
||
import {
|
||
networkError,
|
||
serverError,
|
||
msgError,
|
||
authError,
|
||
vipError
|
||
} from './error.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
|
||
})
|
||
);
|
||
};
|
||
const isW7 = false
|
||
const formatUrl = function(url) {
|
||
let model_name = "farm";
|
||
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}` :
|
||
`${siteInfo.siteroot}?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();
|
||
console.log('query', query)
|
||
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 login_param = {
|
||
code: loginData.code,
|
||
pid: query.pid
|
||
}
|
||
|
||
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: 'autograph',
|
||
val: data.autograph
|
||
})
|
||
$store.commit('updateUserItem', {
|
||
key: 'userInfo',
|
||
val: data.data
|
||
})
|
||
return data;
|
||
} catch (e) {
|
||
uni.hideLoading()
|
||
let {
|
||
code,
|
||
error
|
||
} = e.response.data
|
||
if (code !== 200) {
|
||
serverError({
|
||
code,
|
||
msg: error
|
||
});
|
||
}
|
||
return await Promise.reject(e);
|
||
}
|
||
}
|
||
//设置超时
|
||
fly.config.timeout = 15000;
|
||
|
||
//设置请求基地址
|
||
|
||
//给所有请求添加自定义header
|
||
fly.config.headers = tokenFly.config.headers = {
|
||
"content-type": "application/json"
|
||
}
|
||
|
||
//添加请求拦截器
|
||
fly.interceptors.request.use(
|
||
async (request) => {
|
||
//添加验证token
|
||
request.headers['autograph'] = $store.state.user.autograph || '';
|
||
// #ifdef APP-PLUS
|
||
request.headers['isapp'] = 1;
|
||
// #endif
|
||
// #ifdef H5
|
||
request.headers['isapp'] = 2;
|
||
// #endif
|
||
return request;
|
||
})
|
||
|
||
//添加响应拦截器,响应拦截器会在then/catch处理之前执行
|
||
fly.interceptors.response.use(
|
||
async (response) => {
|
||
//token过期验证
|
||
if (response.data.code != 401) return response;
|
||
fly.lock()
|
||
|
||
//#ifdef MP-WEIXIN
|
||
console.log("==> MP-WEIXIN 401")
|
||
await wxLogin();
|
||
//#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=======",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 == 50001) {
|
||
authError({
|
||
msg: error
|
||
})
|
||
} else if (code == -407) {
|
||
let url = `/shop/pages/choose-store`
|
||
util.goUrl({
|
||
url
|
||
})
|
||
} else if (code == 50002) {
|
||
vipError({
|
||
msg: error
|
||
})
|
||
} else 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,
|
||
header = {
|
||
autograph: $store.state.user.autograph || '',
|
||
// #ifdef APP-PLUS
|
||
isapp: 1,
|
||
// #endif
|
||
// #ifdef H5
|
||
isapp: 2,
|
||
// #endif
|
||
},
|
||
formData = {
|
||
type: "picture",
|
||
}
|
||
} = {}) => {
|
||
url = formatUrl(url);
|
||
let [, res] = await uni.uploadFile({
|
||
url,
|
||
filePath,
|
||
name,
|
||
formData,
|
||
header,
|
||
})
|
||
|
||
if (res.statusCode != 200) {
|
||
util.hideAll()
|
||
networkError();
|
||
return await Promise.reject(res);
|
||
}
|
||
let parseData = JSON.parse(res.data)
|
||
//服务器错误
|
||
let {
|
||
code,
|
||
msg,
|
||
data
|
||
} = parseData;
|
||
if (code != 200) {
|
||
util.hideAll()
|
||
serverError({
|
||
code,
|
||
msg
|
||
});
|
||
return await Promise.reject(res);
|
||
}
|
||
return data
|
||
}
|
||
|
||
|
||
export {
|
||
fly,
|
||
req,
|
||
uploadFile,
|
||
formatImageUrl,
|
||
formatUrl,
|
||
}
|