星油积分商城
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
4.9 KiB

8 months ago
import axios from 'axios'
import utils from '@/utils/encode'
// const env = process.env.NODE_ENV
// const env = 'test'
const env = 'production'
const testUrl = 'http://192.168.0.3:38080'
// const productUrl = 'https://www.xingoil.com/adminapi'
// const productUrl = 'http://119.177.60.118:38080' // 生产,加密 new
const productUrl = 'https://www.xingoil.com/adminapi'
const service = Object.assign(axios.create({
baseURL: env == 'production' ? productUrl : testUrl,
// baseURL: testUrl,
timeout: 5000,
}),{
prefix:'oil'
// prefix:'elec'
});
var url = ''
service.interceptors.request.use(
config => {
// 拦截请求
if(config.showLoading==undefined&&config.showLoading!==false){
uni.showLoading({
title: '加载中...',
mask: true
})
}
const token = uni.getStorageSync('Authorization')
const unionId = uni.getStorageSync('unionid')
const openId = uni.getStorageSync('openid')
const accountSources = 'LOGIN_MP_WECHAT'
// const accountSources = 'MALL_COMS_MINI'
// console.log('取出来缓存', token, openid)
config.headers['openId'] = openId
config.headers['Authorization'] = token
config.headers['accountSources'] = accountSources
config.headers['imei'] = unionId
config.headers['dataSources'] = 'MP'
if (env === 'production') {
console.log("这里是生产")
// 生产环境,加密,不输出任何东西
// 设置jsessionid和token
const JSESSIONID = utils.uuid()
config.headers['JSESSIONID'] = JSESSIONID
config.headers['token'] = utils.md5Salt(JSESSIONID)
// if ( encryptWhite.indexOf(config.url) < 0) {
// if (!notEncrypt && encryptWhite.indexOf(config.url) < 0) {
// 这是定义在哪的
const data = { // 用于存储加密
params: '' // 加密后的密文
}
// 要加密
data.params = utils.encrypt(JSON.stringify(config.data))
console.log('参数', config.url, '参数加密前', config.data, '加密:', data)
config.data = data
// }
} else {
console.log("这里是测试")
console.log('\n\n-----------------------')
console.log('参数', config.url, '参数加密前', config.data)
url = config.url
}
return config
},
error => {
uni.hideLoading()
uni.showToast({
title: '网络超时',
icon: "none"
})
return Promise.reject(error)
}
)
service.interceptors.response.use(
response => {
console.log(response.data, '-------------------')
const res = response.data
if (env === 'production') {
// 生产环境,进行加密解密,不输出日志
if (res?.encrypt == 1) {
// 加密的数据,需要解密
const dataParam = JSON.parse(utils.decrypt(res.data))
res.data = JSON.stringify(dataParam) === '{}' ? null : dataParam
console.log(res.data)
// console.log('返回', response.config.url, '返回结果',res)
}
} else {
console.log('返回', response.config.url, '返回结果未加密', res)
// console.log('-------------------------------------------\n\n')
}
uni.hideLoading()
if (response.config.url.indexOf('/oil-site/oilSiteOrderInfo/getOrderQrCode') === -1) {
console.log(res, '----------------------------------')
if (res?.code != 20000 && res?.msg != '令牌为空,不允许操作' && res?.msg != '您的ip已经更改,请重新登录' && res?.msg !=
'登录与操作设备不同') {
uni.showToast({
title: res?.msg||'error',
icon: "none"
})
}
}
if (res.msg == '登录已过期!') {
uni.showModal({
title: '登录已过期',
content: '是否重新登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: '/pages/login/index',
fail(e) {
console.log(e)
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
}
return res
},
error => {
uni.hideLoading()
uni.getNetworkType({
success: function(res) {
console.log(res.networkType);
if (res.networkType === 'none') {
uni.showToast({
title: '没有网啦!',
icon: "none"
})
} else {
uni.showToast({
title: '请求失败!',
icon: "none"
})
console.log(error)
}
}
});
return Promise.reject(error)
}
)
// #ifndef H5
service.defaults.adapter = function(config) {
return new Promise((resolve, reject) => {
var settle = require('axios/lib/core/settle');
var buildURL = require('axios/lib/helpers/buildURL');
uni.request({
method: config.method.toUpperCase(),
url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),
header: config.headers,
data: config.data,
dataType: config.dataType,
responseType: config.responseType,
sslVerify: config.sslVerify,
complete: function complete(response) {
response = {
data: response.data,
status: response.statusCode,
errMsg: response.errMsg,
header: response.header,
config: config
};
settle(resolve, reject, response);
}
})
})
}
// #endif
export default service