Browse Source

新增request接口调用

郭宇琦 3 weeks ago
parent
commit
4244aa9a52
1 changed files with 211 additions and 0 deletions
  1. 211 0
      common/request.js

+ 211 - 0
common/request.js

@@ -0,0 +1,211 @@
+// import common = require("./common");
+const appid = 'wxefa2810018787a41'
+
+const language = 'zh'
+
+var common = require('./common.js');
+
+var storage = require('./storage.js');
+
+var config = require('./config.js'); // 检查token是否失效 如失效 清除缓存 提示重新登录
+
+// 402: 解析token出错  403: token格式错误  404: 公共声明中缺少必要字段  405: token验证失败
+import crypto from '@/node_modules/crypto-js';
+
+function _checkTokenValid(res) {
+	if (
+		res.data.code === 402 ||
+		res.data.code === 403 ||
+		res.data.code === 404 ||
+		res.data.code === 405 ||
+		res.data.code === 300 ||
+		res.data.code === 302 ||
+		res.data.code === 303 ||
+		res.data.code === 304 ||
+		res.data.code === 305 ||
+		res.data.code === 306
+	) {
+		//wx.clearStorageSync();
+
+		//TODO
+		// var shareCode = storage.getShareCode();
+		// storage.clearStorage();
+		// storage.setShareCode(shareCode);
+		uni.reLaunch({
+			url: '/pages/index/index'
+		});
+		return false;
+	}
+
+	return true;
+}
+
+async function getRequest(url, data) {
+	// function getRequest(url1, data, successCallBack, failCallBack) {
+	// if (!failCallBack) failCallBack = function() {};
+	// var url=url1?url1:''
+	if (url.indexOf('?') > 0) {
+		url = url + '&' + common.obj2UrlQuery(data);
+	} else {
+		url = '?' + common.obj2UrlQuery(data);
+		// return
+	}
+	let res = await uni.request({
+		url: url,
+		method: 'GET',
+		uni.hideLoading();
+		if (_checkTokenValid(res)) {
+			return res
+		}
+		throw Error(res.data.msg);
+	});
+
+
+}
+
+ async function postRequest(url, data,) {
+	const datetime = Math.floor(Date.now() / 1000)
+	data.time = datetime.toString()
+	let jsonStr = JSON.stringify(selfSort(data))
+	var encrypted = crypto.SHA256(jsonStr)
+	var sign = encrypted.toString()
+	if (!failCallBack) failCallBack = function() {}
+	var token = storage.getUserToken()
+
+	// 申请拖车服务接口加密签名校验
+	// if (url === config.API_DAYHIRE_DRAG_CAR_SERVICE) {
+	data.sign = sign
+	// }
+
+	let res = await uni.request({
+		url: url,
+		data: data,
+		header: {
+			'content-type': 'application/json',
+			'X-Token': token
+		},
+		method: 'POST',
+	});
+	
+		wx.hideLoading();
+		if (res.data.code == 200) {
+			res.succeed = true
+			res.body = res.data
+		} else {
+			uni.showToast({
+				title: res.data.msg,
+				icon: 'none'
+			})
+		}
+		if (_checkTokenValid(res)) {
+			return res
+		}
+		
+		throw Error(res.data.msg);
+}
+
+ function selfSort(data) {
+	// console.log(data,"签名数据")
+	let sortedKeys = Object.keys(data).sort((a, b) => {
+		//对key 进行翻转
+		let reversedA = a.split("").reverse().join("");
+		let reversedB = b.split("").reverse().join("");
+		let len = reversedA.length > reversedB.length ? reversedA.length : reversedB.length
+
+		for (let i = 0; i < len; i++) {
+			if (typeof(reversedA[i]) == 'undefined') {
+				return 1;
+			}
+			if (typeof(reversedB[i]) == 'undefined') {
+				return -1;
+			}
+			if (reversedA[i] > reversedB[i]) {
+				return -1;
+			} else if (reversedB[i] > reversedA[i]) {
+				return 1;
+			}
+		}
+		return 1
+	}) // 对属性数组进行排序
+	let sortedJson = {}; // 重构排序后的JSON对象
+	sortedKeys.forEach(key => {
+		sortedJson[key] = data[key];
+	})
+	return sortedJson
+}
+
+async function getApi(url, data) {
+	var token = storage.getUserToken(); //wx.getStorageSync(config.STORAGE_USER_TOKEN)
+	data.token = token;
+	data.v = config.APP_VERSION;
+	data.appid = appid
+	//#ifdef MP-ALIPAY
+	data.from = 'ali'
+	//#endif
+	//#ifdef MP-WEIXIN
+	data.from = 'wx'
+	//#endif
+
+	data.language = language
+	return await getRequest(url, data);
+}
+
+async function postApi(url, data) {
+	var token = storage.getUserToken(); // wx.getStorageSync(config.STORAGE_USER_TOKEN)
+	console.log(data, 'token');
+	data.token = token;
+	data.v = config.APP_VERSION;
+	data.appid = appid
+	//#ifdef MP-ALIPAY
+	data.from = 'ali'
+	//#endif
+	//#ifdef MP-WEIXIN
+	data.from = 'wx'
+	//#endif
+	data.language = language
+	return await postRequest(url, data);
+}
+/**
+ * 上报formid
+ */
+
+async function reportFormId(formId) {
+	const accountInfo = uni.getAccountInfoSync();
+	var postData = {
+		formId: formId,
+		appid
+	};
+	await postApi(config.API_FORMID_REPORT, postData);
+}
+
+async function getAppConfig() {
+	const pData = {
+		appid,
+		terminal: 'wx_app'
+	};
+	let resp = await getApi(config.API_INDEX_APP_CONFIG, pData);
+	if (resp.data.code === 200) {
+		const appConfig = resp.data.data.appConfig;
+		storage.setAppConfig(appConfig);
+		//#ifdef MP-ALIPAY
+		uni.setNavigationBarTitle({
+			title: ''
+		});
+		//#endif
+		//#ifdef MP-WEIXIN
+		wx.setNavigationBarTitle({
+			title: appConfig.app_name
+		});
+		//#endif
+		return appConfig
+	} else {}
+}
+
+module.exports = {
+	getRequest: getRequest,
+	postRequest: postRequest,
+	getApi: getApi,
+	postApi: postApi,
+	reportFormId: reportFormId,
+	getAppConfig: getAppConfig
+};