Files
2025-12-22 17:13:05 +08:00

279 lines
5.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 接口返回值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,
}