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.$valueType(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);
							 | 
						|
										})
							 | 
						|
									});
							 | 
						|
								}
							 |