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.
105 lines
2.7 KiB
105 lines
2.7 KiB
let sha1 = require("./sha1.min.js");
|
|
let SparkMD5 = require("./SparkMD5.js"); // 签名加密js文件
|
|
|
|
function getsign(params) {
|
|
let s_data = "";
|
|
let keys = [];
|
|
for (const key in params) {
|
|
if (params.hasOwnProperty(key)) {
|
|
const value = params[key];
|
|
keys.push(key);
|
|
}
|
|
}
|
|
let arr = [];
|
|
keys.sort();
|
|
for (let i = 0; i < keys.length; i++) {
|
|
let k = keys[i];
|
|
let v = params[k];
|
|
arr.push(k + '=' + v);
|
|
}
|
|
s_data = arr.join('&');
|
|
|
|
let sign = sha1(SparkMD5.hash(s_data) + 'Leadfyy@123');
|
|
params.sign = sign;
|
|
return params;
|
|
}
|
|
|
|
export const request = options => {
|
|
let { url, data, method, showLoading } = options;
|
|
if(typeof data === 'undefined'){
|
|
data = {};
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
// 绑定this
|
|
let that = this;
|
|
// 获取当前请求来自哪个页面
|
|
let pages = getCurrentPages();
|
|
data.create_page = pages[pages.length - 1].route;
|
|
// 当前请求时间戳
|
|
if (!data.timestamp) {
|
|
data.timestamp = Math.round(new Date().getTime() / 1000);
|
|
}
|
|
// 当前请求随机数
|
|
if(!data.rand){
|
|
data.rand = Math.round(Math.random() * 1000000);
|
|
}
|
|
// 当前请求来自的平台
|
|
data.platform = 'wxmini';
|
|
// #ifdef APP-PLUS
|
|
data.platform = 'app'; // 来自app平台,其他平台写法类似
|
|
// #endif
|
|
// 当前小程序版本号
|
|
// data.version = that.API.VERSION;
|
|
// 获取设备唯一deviceId,如果没有,自动生成一个
|
|
let sysInfo = uni.getSystemInfoSync();
|
|
if(typeof sysInfo.deviceId == 'undefined'){
|
|
let deviceId = uni.getStorageSync('deviceId');
|
|
if(deviceId){
|
|
sysInfo.deviceId = deviceId;
|
|
}else{
|
|
let date_time = String(new Date().getTime());
|
|
let md5_deviceId = SparkMD5.hash(date_time);
|
|
uni.setStorageSync('deviceId', md5_deviceId);
|
|
sysInfo.deviceId = md5_deviceId;
|
|
}
|
|
}
|
|
if (sysInfo) {
|
|
data.device_info = JSON.stringify(sysInfo);
|
|
}
|
|
// 判断传入用户token和id
|
|
let userinfo = uni.getStorageSync('userinfo') || {};
|
|
if(userinfo && userinfo.token && !data.token){
|
|
data.token = userinfo.token;
|
|
}
|
|
if(userinfo && userinfo.id && !data.user_id){
|
|
data.user_id = userinfo.id;
|
|
}
|
|
|
|
// 获取页面options参数
|
|
let _mergeParam = that._mergeParam;
|
|
for (let _keyVar in _mergeParam) {
|
|
let _k = _keyVar
|
|
if (data[_k]) {
|
|
_k = '_' + _k;
|
|
}
|
|
data[_k] = _mergeParam[_keyVar];
|
|
}
|
|
// 生成sign
|
|
getsign(data);
|
|
console.log(url, data);
|
|
|
|
// 动态赋值是否显示loading加载框 TODO验证一下是否有问题
|
|
if(that.$shared.isValueType(showLoading) != 'undefined'){
|
|
that.$u.http.setConfig({showLoading});
|
|
}
|
|
|
|
let httpData = method == 'get' ? {params: data} : data;
|
|
// 发起请求
|
|
that.$u[method](url, httpData).then(res => {
|
|
resolve(res);
|
|
}).catch(err => {
|
|
reject(err);
|
|
})
|
|
});
|
|
}
|