configs.js
const env = 'internal';
const configs = {
internal: {
origin: 'https://internal.wang.com/customer',
originActivity: 'https://internal.wang.com/activity',
originPay: 'https://internal.wang.com/pay',
originGlobalpt: 'https://internal.wang.com/globalpt',
oss: 'https://cc-tech.oss-cn-shenzhen.aliyuncs.com',
webOrigin: 'https://mall-mini.caichengwang.cn',
activityOrigin: 'https://mall-activity.caichengwang.cn',
mixedOrigin: 'https://mixed.caichengwang.cn',
getEnv: 'https://internal.wang.com/gateway/latest',
version: '2.4.0.5',
shareVersion: '1.0.0',
amapKey: 'ac94c3856b924f71884c45f935d65fad',
tmplIds: ['a7g8blYXv0drSZMoWM_tObxzzOku-eRgOVxykWSQElw']
},
//production: {
// origin: 'https://gateway.wang.com/customer',
// originActivity: 'https://gateway.wang.com/activity',
//originPay: 'https://gateway.wang.com/pay',
//originGlobalpt: 'https://gateway.wang.com/globalpt',
// oss: 'https://cc-tech.oss-cn-shenzhen.aliyuncs.com',
// webOrigin: 'https://mall-mini.wang.com',
// activityOrigin: 'https://mall-activity.wang.com',
// mixedOrigin: 'https://mixed.wang.com',
//getEnv: 'https://gateway.wang.com/gateway/latest',
// version: '2.4.0.24',
// shareVersion: '1.0.0',
// amapKey: 'ac94c3856b924f71884c45f935d65fad',
// tmplIds: ['cXfu9mWbja25UJKSsIlkUTxH3PyMVOSjMH3877RMihk']
// }
};
export default configs[env];
request.js
import configs from '../configs/index';
import MD5 from './md5';
import qs from './qs/qs';
const methods = ['get', 'post', 'put'];
class WxRequestClass {
apiMethods;
token;
constructor(token) {
this.apiMethods = {};
this.token = token;
}
init() {
const header = {
'content-type': 'application/json',
sign: '',
CCWTOKEN: '',
cookie: ''
};
let sign;
methods.forEach((method) => {
this.apiMethods[method] = (url, data) =>
new Promise((resolve, reject) => {
const token = this.token;
if (method === 'get') {
clearNull(data);
sign = MD5(
qs.stringify(data, {
skipNulls: true
}) + token
);
} else {
clearNull(data);
sign = MD5(data ? JSON.stringify(data) + token : token);
}
header.sign = sign;
header.platform = 5;
header.CCWTOKEN = token;
header.cookie = 'CCWTOKEN=' + token;
wx.request({
url: url.indexOf('https') > -1 ? url : configs.origin + url,
data,
method,
header,
success(res) {
dealHttpCode(
res,
(msg) => showMsg(msg),
(resData, flag) => {
if (flag) resolve(resData.data);
else {
wx.reportAnalytics('httprequest', {
url: url.indexOf('https') > -1 ? url : configs.origin + url,
payload: JSON.stringify(data),
res: JSON.stringify(resData)
});
reject(resData);
}
},
url.indexOf('https') > -1 ? url : configs.origin + url,
);
},
fail() {
showMsg('请检查您的网络!');
}
});
});
});
}
}
// 处理http状态码
function dealHttpCode(res, errcb, cb) {
switch (res.statusCode) {
case 200:
dealCode(res.data, (data, flag) => cb(data, flag));
break;
default:
errcb('网络错误!');
break;
}
}
function showModal(msg) {
wx.showModal({
title: '提示',
content: msg,
cancelText: '取消',
cancelColor: '#000000',
confirmText: '确定',
confirmColor: '#3CC51F',
complete: () => {
wx.clearStorageSync();
wx.reLaunch({ url: '/pages/packageIndex/views/index/index' });
} });
}
// 处理业务code枚举
function dealCode(data, cb) {
// 用户状态异常
switch (data.code) {
case 200:
cb(data, true);
break;
case 9010:
showModal(data.msg);
cb(data, false);
break;
default:
showMsg(data.msg);
cb(data, false);
break;
}
}
function showMsg(msg) {
wx.showToast({
title: msg,
icon: 'none',
duration: 2000
});
}
function clearNull(data) {
if (data) {
for (let key in data) {
if (data[key] === null || data[key] === '' || data[key] === undefined || data[key] === 'undefined') { delete data[key]; }
}
}
}
export default WxRequestClass;
app.js
```bash
import WxRequestClass from './utils/request';
/** API - start */
// 初始化api
initApi() {
const token = wx.getStorageSync('token') || '';
const api = new WxRequestClass(token, this);
api.init();
wx.$api = api.apiMethods;
},
/** API - end */