123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- // import common = require("./common");
- // const appid = 'wxefa2810018787a41'
- const appid = '487987498'
- 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 === 305){
- uni.showToast({
- title:'账号已在其他设备登录!',
- icon:'none'
- })
- return false
- }
- 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);
- storage.removeUserToken()
- uni.removeStorageSync('car_info')
- uni.removeStorageSync('USER_INFO_DATA')
- uni.reLaunch({
- url: '/pages/loginRegister/login'
- });
- return false;
- }
- return true;
- }
- function getRequest(url, data, successCallBack, failCallBack) {
- // 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
- }
- uni.request({
- url: url,
- method: 'GET',
- success: function(res) {
- uni.hideLoading();
- if(res.data.code == 200){
- successCallBack(res);
- return
- }
- if(res.data.code === 503){
- return
- }
- if (_checkTokenValid(res)) {
- successCallBack(res);
- }
- },
- fail: function(res) {
- uni.hideLoading();
- if (!(res.errMsg.indexOf('interrupted') != -1)) {
- uni.showModal({
- title: '错误',
- content: '网络错误' + res.errMsg,
- showCancel: false
- });
- }
- if (failCallBack) failCallBack(res);
- }
- });
- }
- function postRequest(url, data, successCallBack, failCallBack) {
- 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
- // }
-
- uni.request({
- url: url,
- data: data,
- header: {
- 'content-type': 'application/json',
- 'X-Token': token
- },
- method: 'POST',
- success: function(res) {
- //wx.hideLoading();
- if (res.data.code == 200) {
- res.succeed = true
- res.body = res.data
- successCallBack(res);
- return
- } else if(res.data.code === 503){
- return
- } else {
- successCallBack(res);
- if(res.data.msg){
- uni.showToast({ title: res.data.msg, icon: 'none' })
- }
-
- return
- }
- if (_checkTokenValid(res)) {
- successCallBack(res);
- }
- },
- fail: function(res) {
- uni.hideLoading();
- if (!(res.errMsg.indexOf('interrupted') != -1)) {
- uni.showModal({
- title: '错误',
- content: '网络错误' + res.errMsg,
- showCancel: false
- });
- }
- failCallBack(res);
- }
- });
- }
- 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
- }
- function getApi(url, data, successCallBack, failCallBack) {
- var token = storage.getUserToken(); //wx.getStorageSync(config.STORAGE_USER_TOKEN)
- data.token = token;
- data.v = config.APP_VERSION;
- data.appid = appid
- data.from = 'app'
- //#ifdef MP-ALIPAY
- data.from = 'ali'
- //#endif
- //#ifdef MP-WEIXIN
- data.from = 'wx'
- //#endif
-
- data.language = language
- getRequest(url, data, successCallBack, failCallBack);
- }
- function postApi(url, data, successCallBack, failCallBack) {
- var token = storage.getUserToken(); // wx.getStorageSync(config.STORAGE_USER_TOKEN)
- data.token = token;
- data.v = config.APP_VERSION;
- data.appid = appid
- data.from = 'app'
- //#ifdef MP-ALIPAY
- data.from = 'ali'
- //#endif
- //#ifdef MP-WEIXIN
- data.from = 'wx'
- //#endif
- data.language = language
- postRequest(url, data, successCallBack, failCallBack);
- }
- /**
- * 上报formid
- */
- function reportFormId(formId) {
- const accountInfo = uni.getAccountInfoSync();
- var postData = {
- formId: formId,
- appid
- };
- postApi(config.API_FORMID_REPORT, postData, function() {});
- }
- function getAppConfig(successCallBack) {
- const pData = {
- appid,
- terminal: 'wx_app'
- };
- getApi(config.API_INDEX_APP_CONFIG, pData, function(resp) {
- if (resp.data.code === 200) {
- const appConfig = resp.data.data.appConfig;
- storage.setAppConfig(appConfig);
- successCallBack(appConfig)
- //#ifdef MP-ALIPAY
- uni.setNavigationBarTitle({
- title: ''
- });
- //#endif
- //#ifdef MP-WEIXIN
- wx.setNavigationBarTitle({
- title: appConfig.app_name
- });
- //#endif
- }else{
- }
- });
- }
- module.exports = {
- getRequest: getRequest,
- postRequest: postRequest,
- getApi: getApi,
- postApi: postApi,
- reportFormId: reportFormId,
- getAppConfig: getAppConfig
- };
|