tplus-api
Version:
tplus api invoke
330 lines (302 loc) • 13.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _User = require('../model/User');
var _User2 = _interopRequireDefault(_User);
var _ServerLog = require('../log/ServerLog');
var _ServerLog2 = _interopRequireDefault(_ServerLog);
var _LogEventIds = require('../log/LogEventIds');
var _UIConfirm = require('../components/UIConfirm');
var _UIConfirm2 = _interopRequireDefault(_UIConfirm);
var _bizError = require('../bizError');
var _bizError2 = _interopRequireDefault(_bizError);
var _findIndex2 = require('lodash/findIndex');
var _findIndex3 = _interopRequireDefault(_findIndex2);
var _mutantsMicrofx = require('mutants-microfx');
var _app = require('../const/app');
var _antdMobile = require('antd-mobile');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var __assign = undefined && undefined.__assign || function () {
__assign = _assign2.default || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
return __assign.apply(this, arguments);
};
var QS = require('qs');
// import {env} from 'mutants-microfx';
// const {constant,platform,browser,os} = env;
var config = {
proxy: {
'throughProxy': false,
'error': {
"10101": "连接服务器超时",
"10107": "T+服务器网络不给力,请确认T+云应用下云应用设置-服务器网络连接是否成功",
"10104": "企业id不存在",
"10106": "用户信息认证失败",
"10108": "用户信息认证失败",
"10109": "服务器内部错误",
"T10108": "用户信息认证失败"
}
},
cia: {
'error': {
'20109': '账号或密码错误',
'20129': '账号或密码错误',
'10002': '账号或密码错误',
'20024': '密码输入错误次数超过10次,账号被锁定,请十五分钟之后再试!',
'10001': '格式错误',
'10004': '非空参数错误',
'10005': 'JSON格式错误',
'10006': 'appKey错误',
'10007': 'appSecret错误',
'20001': '注册来源不存在',
'20119': '账号或密码错误',
'20122': '用户昵称被占用',
'20123': '用户不在组织内',
'20203': '组织的账号被占用',
'20204': '企业id不存在',
'20231': '企业全称已存在',
'20305': 'appKey没有访问权限',
'20306': '应用不存在',
'25015': '未授权的 客户端',
'50000': '服务器内部异常',
'20911': '友空间服务出现异常,正在紧急修复中,请稍后重试。'
}
},
axios_error: {
error_signs: ['timeout of '],
error_tips: ['请求超时,请稍候再试!']
},
skip_error: ['chanjet.Authorization.Logout'],
login_method: ['chanjet.EAP.GZQ.CSP.GetTPlusToken', 'chanjet.MB.MBPortal.GetPortalByAppid']
};
var errorShow = function errorShow(message, callback) {
_UIConfirm2.default.show(message, function () {
callback && callback();
});
};
var reloginErrorCodes = ['EXSM0001', 'EXSM0002', 'EXSM0003', 'EXSM0004', 'EXSM0005'];
// const authReloginErrorCodes = ['EXERROR0001'];//没有权限
// else if(authReloginErrorCodes.some(reloginErrorCode=>{return reloginErrorCode===tplusErrorCode})){
// errorShow(error.Message,()=>{
// User.logout();
// });
// }
var tplus999Handler = function tplus999Handler(axios, err) {
// 处理T+返回的异常
var response = err.response;
if (response.status === 999) {
var error = response.data.Error;
var tplusErrorCode_1 = error.Code;
//上传阿里云日志 登录异常不记录
var _a = err.config,
requestData = _a.data,
baseURL = _a.baseURL;
var data = QS.parse(requestData);
var apis_1 = JSON.parse(data.Apis);
var methodName_1 = apis_1.Method;
if (reloginErrorCodes.some(function (reloginErrorCode) {
return reloginErrorCode === tplusErrorCode_1;
})) {
errorShow('登录信息异常,请保存当前操作数据后,重新进入应用!', function () {
_User2.default.logout(null, false);
});
} else if ('Login1040' === tplusErrorCode_1) {
errorShow('可用量正在整理,不能登录,请稍后再试!', function () {
_User2.default.logout();
});
} else if ('EXSV0011' === tplusErrorCode_1) {
//提供的服务名称不正确 将异常抛给前端的业务捕获
console.error('error.Message======', error.Message);
} else if (_bizError2.default.indexOf(tplusErrorCode_1) > -1) {
//业务异常不做处理
} else if ((0, _findIndex3.default)(config.login_method, function (method) {
return method === methodName_1;
}) > -1) {
var errorMsg = error && !!error.Message ? error.Message : '登录信息异常,请保存当前操作数据后,重新进入应用!';
var eventId = _LogEventIds.TPLUS_LOGIN_ERROR;
var logParam = { baseURL: baseURL, eventId: eventId, bodyData: (0, _stringify2.default)(data), errorMsg: errorMsg };
(0, _ServerLog2.default)(_mutantsMicrofx.stores.logStore.logParam.logStore, logParam);
errorShow(errorMsg, function () {
if (apis_1.Args && apis_1.Args.NoLogout) {
return;
}
_User2.default.logout(null, false);
});
} else {
if (_mutantsMicrofx.stores.logStore.isUpload(baseURL)) {
var bodyData = (0, _stringify2.default)(data);
if (bodyData.length > 4096) {
if (data.Apis) {
bodyData = (0, _stringify2.default)({ Method: methodName_1, Body: bodyData.substr(0, 4096) });
}
}
var eventId = _LogEventIds.TPLUS_HTTP_999;
var logParam = __assign({ baseURL: baseURL, eventId: eventId, bodyData: bodyData }, error);
(0, _ServerLog2.default)(_mutantsMicrofx.stores.logStore.logParam.logStore, logParam);
}
errorShow(error.Message);
}
} else {
_antdMobile.Toast.info('当前网络不可用,请检查网络设置', 1);
}
};
var ciaErrorHandler = function ciaErrorHandler(axios, res) {
var errorMsg = config.cia.error[res.errorCode];
if (errorMsg) {
errorShow('CIA\u63A5\u53E3\u8C03\u7528\u5F02\u5E38:' + errorMsg + ",ErrorCode:" + res.errorCode);
} else {
var errorMsg_1 = (typeof res === 'undefined' ? 'undefined' : (0, _typeof3.default)(res)) == 'object' ? (0, _stringify2.default)(res) : res;
errorShow('CIA\u63A5\u53E3\u8C03\u7528\u5F02\u5E38:\u8FD4\u56DE\u7ED3\u679C' + errorMsg_1 + ",ErrorCode:" + res.errorCode);
}
};
var cloudProxyHandler = function cloudProxyHandler(axios, res) {
var errorMsg = config.proxy.error[res.code];
var targetURL = window.localStorage.targetURL;
var eventId = _LogEventIds.TPLUS_LOGIN_ERROR;
var logParam = { targetURL: targetURL, eventId: eventId, bodyData: (0, _stringify2.default)(res), errorMsg: errorMsg };
(0, _ServerLog2.default)(_mutantsMicrofx.stores.logStore.logParam.logStore, logParam);
if (exitApp(res.code)) {
return;
}
if (errorMsg) {
errorShow(errorMsg);
} else {
errorShow('云代理接口调用异常:返回结果' + res);
}
};
var exitApp = function exitApp(code, error) {
var msg = config.proxy.error[code];
if (msg) {
if (error) {
msg = error;
}
errorShow(msg, function () {
//User.logout();
});
return true;
}
return false;
};
var middleware = function middleware(axios) {
axios.interceptors.response.use(function logResponse(res) {
var isSkipService = config.skip_error.some(function (item) {
return res.request.responseURL.indexOf(item) > -1;
});
if (isSkipService) {
return res;
}
// console.log('%c Request Success:', 'color: #4CAF50; font-weight: bold', res);
//setLoading(false);
//处理CIA返回的异常 状态码是200
if (res.data) {
if (res.data.hasOwnProperty("errorCode")) {
ciaErrorHandler(axios, res.data);
return _promise2.default.reject(res.data);
}
//处理云代理返回的异常
if (res.data.hasOwnProperty("code") && res.config.baseURL.indexOf('cloudproxy01.chanapp.chanjet.com') > -1) {
cloudProxyHandler(axios, res.data);
return _promise2.default.reject(res.data);
}
}
return res;
}, function logPromiseError(err) {
// const isSkipService = config.skip_error.some((item)=>{
// return res.request.responseURL.indexOf(item) > -1;
// });
// if(isSkipService){
// return res;
// }
// console.log('%c Request Error:', 'color: #EC6060; font-weight: bold', err);
//处理T+返回的异常
if (err && err.response && err.response.status === 999) {
if (err.response.data && err.response.data.Error && err.response.data.Error.Code) {
if (exitApp(err.response.data.Error.Code, err.response.data.Error.Message)) {
return;
}
}
tplus999Handler(axios, err);
return _promise2.default.reject(err.response.data.Error);
}
if (/Network Error/.test(err.toString())) {
var baseURL_1 = err.config.baseURL;
var cancelErrorTips = _app.noErrorTips.some(function (noErrorTip) {
return baseURL_1.indexOf(noErrorTip) > -1;
});
if (!cancelErrorTips) {
_antdMobile.Toast.info('网络繁忙,请稍后下拉刷新操作', 1);
}
} else {
var errorMsg_2 = err.message;
var _a = err.config,
requestData = _a.data,
baseURL_2 = _a.baseURL;
//当请求参数为空时 也要上传相关日志 帮助分析是哪个接口调用异常
var bodyData = '';
if (_mutantsMicrofx.stores.logStore.isUpload(baseURL_2)) {
if (!!requestData) {
bodyData = (0, _stringify2.default)(QS.parse(requestData));
}
var eventId = _LogEventIds.AXIOS_HTTP_ERROR;
var logParam = { baseURL: baseURL_2, eventId: eventId, bodyData: bodyData, errorMsg: errorMsg_2 };
(0, _ServerLog2.default)(_mutantsMicrofx.stores.logStore.logParam.logStore, logParam);
}
//增加对getTplusToken接口的特殊处理,如果出现访问异常,提示用户进行检测
try {
if (!!requestData) {
var data = QS.parse(requestData);
var methodName_2 = JSON.parse(data.Apis).Method;
if ((0, _findIndex3.default)(config.login_method, function (method) {
return method === methodName_2;
}) > -1) {
errorShow(config.proxy.error['10107'], function () {
//User.logout();
});
return;
}
}
} catch (err) {
console.error('response-interceptor.logPromiseError=====', err);
}
//将请求框架的提示语转化成中文,方面客户理解
var needReTip = (0, _findIndex3.default)(config.axios_error.error_signs, function (sign) {
return !!errorMsg_2 && errorMsg_2.indexOf(sign) > -1;
});
//是否需要弹出提示框 某些地方不需要提示出来 比如上传阿里云的错误
var cancelErrorTips = _app.noErrorTips.some(function (noErrorTip) {
return baseURL_2.indexOf(noErrorTip) > -1;
});
if (!cancelErrorTips) {
//解决部分外围接口报错 没有带请求参数 不影响到主体业务使用 就不显示错误提示框了 暂时先用requestData判断下
//主要针对pos 偶发性弹出接口超时的提示 临时的解决方案 后续待改进
if (!!requestData) {
if (needReTip > -1) {
errorShow(config.axios_error.error_tips[needReTip]);
} else {
errorShow(errorMsg_2);
}
}
}
return _promise2.default.reject(err);
}
});
};
exports.default = middleware;
//# sourceMappingURL=response-interceptor.js.map
//# sourceMappingURL=response-interceptor.js.map