mtl-js-sdk
Version:
462 lines (412 loc) • 13.1 kB
JavaScript
"use strict";
/**
* 获取环境变量
*/
define(["axios"], function (axios) {
var baseUrl = 'https://build.yyuap.com';
var FAIL_CODE = 1;
var NAVITYPE = {
GAODE: 1,
BAIDU: 2,
QQ: 3
};
function getPlatform() {
var userAgent = window.navigator.userAgent;
var platform = null;
if (userAgent.indexOf("miniProgram") !== -1 || userAgent.indexOf("wxwork") !== -1 || userAgent.indexOf("wechatdevtools") !== -1) {
platform = "wx";
} else if (userAgent.indexOf("mtlAndroid") !== -1) {
platform = "android";
} else if (userAgent.indexOf("Android_") !== -1) {
platform = "QYAndroid";
} else if (userAgent.indexOf("mtlIOS") !== -1) {
platform = "ios";
} else if (userAgent.indexOf("QYios") !== -1) {
platform = "QYIos";
} else if (userAgent.indexOf("QYZone") !== -1) {
platform = "upesn";
} else {
console && console.log && console.log('use default platform "h5"');
platform = "h5";
}
return platform;
} //用户密码登录
function login() {
var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
loginRequest('login', object);
} //手机号验证码登录
function validateCodeLogin() {
var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
loginRequest('validateCodeLogin', object);
} //自动登录
function autoLogin() {
var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var path = object.url ? object.url : baseUrl;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/login/token");
mtl.getStorage({
domain: 'mtlLoginInfo',
key: 'data',
success: function success(res) {
var data = res.data;
if (data) {
var dataObj = data;
if (mtl.platform === 'QYIos' || mtl.platform === 'QYAndroid' || mtl.platform === 'upesn') {
dataObj = JSON.parse(data);
}
var authToken = dataObj.authToken.token;
var userId = dataObj.userInfo.userId;
var tenantId = object.tenantId ? object.tenantId : '';
axiosRequest({
url: object.url,
method: 'POST',
data: {
userId: userId,
token: authToken,
tenantId: tenantId
},
headers: {
'content-type': 'application/json'
},
responseType: 'json',
success: function success(res) {
if (res && res.data) {
var _obj = dataObj;
_obj.tenants = res.data.tenants;
_obj.userInfo = res.data.userInfo;
_obj.yhtToken = res.data.yhtToken;
_obj.imToken = res.data.imToken;
mtl.setStorage({
domain: 'mtlLoginInfo',
key: 'data',
data: _obj
});
}
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} else {
handleFailCallBack(object, {
message: "请重新登录",
code: FAIL_CODE
});
object.complete && object.complete({
message: "请重新登录",
code: FAIL_CODE
});
}
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} //发送验证码
function sendValidateCode(object) {
var path = object.url ? object.url : baseUrl;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/login/sendCode");
object.method = 'POST';
var data = {
username: object.mobile
};
delete object.username;
axiosRequest({
url: object.url,
method: 'POST',
data: data,
headers: {
'content-type': 'application/json'
},
responseType: 'json',
success: function success(res) {
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} //切换租户
function changeTenant(object) {
autoLogin(object);
} //获取wx应用列表
function getAppList(object) {
var path = object.url ? object.url : baseUrl;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/app/vx/list");
mtl.getStorage({
domain: 'mtlLoginInfo',
key: 'data',
success: function success(res) {
var data = res.data;
if (data) {
var dataObj = data;
if (mtl.platform === 'QYIos' || mtl.platform === 'QYAndroid' || mtl.platform === 'upesn') {
dataObj = JSON.parse(data);
}
var token = dataObj.yhtToken.yhtAccessToken;
var userId = dataObj.userInfo.userId;
var terminalType = mtl.platform;
axiosRequest({
url: object.url,
method: 'GET',
params: {
yht_access_token: token,
terminalType: terminalType,
userId: userId
},
headers: {
'content-type': 'application/json'
},
responseType: 'json',
success: function success(res) {
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} else {
handleFailCallBack(object, {
message: "请重新登录",
code: FAIL_CODE
});
object.complete && object.complete({
message: "请重新登录",
code: FAIL_CODE
});
}
}
});
} //获取独立app应用列表
function getIndependenceAppList(object) {
var path = object.url ? object.url : baseUrl;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/app/workbench/list");
axiosRequest({
url: object.url,
method: 'GET',
params: {
appId: object.appId
},
headers: {
'content-type': 'application/json'
},
responseType: 'json',
success: function success(res) {
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} //获取友空间code
function getEsnCode(object) {
var path = object.url ? object.url : baseUrl;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/user/yht/auth/code");
axiosRequest({
url: object.url,
method: 'GET',
params: {
wb_at: object.wb_at,
yhtAccessToken: object.yht_access_token,
tenantId: object.tenantId
},
headers: {
'content-type': 'application/json'
},
responseType: 'json',
success: function success(res) {
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} //获取banner列表
function getBannerList(object) {
var path = object.url ? object.url : baseUrl;
var category = object.category;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/banner/list");
axiosRequest({
url: object.url,
method: 'GET',
params: {
category: category,
platform: mtl.platform
},
headers: {
'content-type': 'application/json'
},
withCredentials: true,
responseType: 'json',
success: function success(res) {
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} //匿名情况下获取用户基本信息
function getBaseUserInfo(object) {
var path = object.url ? object.url : baseUrl;
var userId = object.userId;
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/user/anonymous/").concat(userId, "/info/simple");
axiosRequest({
url: object.url,
method: 'GET',
params: {
tenantId: object.tenantId
},
headers: {
'content-type': 'application/json'
},
withCredentials: true,
responseType: 'json',
success: function success(res) {
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
handleFailCallBack(object, err);
object.complete && object.complete(err);
}
});
} // 内部方法
function loginRequest(type, object) {
var path = object.url ? object.url : baseUrl;
var data = {};
switch (type) {
case 'login':
if (mtl.platform === 'wx') {
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/login/weChat");
data = {
username: object.username,
password: object.password,
tenantId: object.tenantId ? object.tenantId : '',
wxAppId: object.wxAppId,
wxCode: object.wxCode
};
} else {
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/login/password");
data = {
username: object.username,
password: object.password,
tenantId: object.tenantId ? object.tenantId : ''
};
}
break;
case 'validateCodeLogin':
object.url = "".concat(path, "/mobile-app/rest/v1/mobile/login/validateCode");
data = {
username: object.mobile,
validateCode: object.validateCode,
tenantId: object.tenantId ? object.tenantId : ''
};
break;
default:
break;
}
axiosRequest({
url: object.url,
method: 'POST',
data: data,
headers: {
'content-type': 'application/json'
},
responseType: 'json',
success: function success(res) {
if (res && res.data) {
mtl.setStorage({
domain: 'mtlLoginInfo',
key: 'data',
data: res.data
});
}
handleSuccessCallBack(object, res);
object.complete && object.complete(res);
},
fail: function fail(err) {
if (type === 'login') {
object.fail && object.fail(err.response.data);
} else {
handleFailCallBack(object, err);
}
object.complete && object.complete(err);
}
});
} //处理原生和H5的成功回调
function handleSuccessCallBack(object, res) {
if (mtl.platform === 'ios' || mtl.platform === 'android') {
window.mtl_handleCallback({
callbackId: object.callbackId,
data: res,
code: 0
});
} else {
object.success && object.success(res);
}
} //处理原生和H5的失败回调
function handleFailCallBack(object, err) {
if (mtl.platform === 'ios' || mtl.platform === 'android') {
window.mtl_handleCallback({
callbackId: object.callbackId,
msg: err.message,
code: err.code
});
} else {
object.fail && object.fail(err);
}
} // 内部方法
function axiosRequest() {
var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
axios(object).then(function (response) {
var code = response.status,
message = response.statusText,
data = response.data;
if (code === 200) {
object.success && object.success(data);
} else {
object.fail && object.fail({
code: code,
message: message,
data: data
});
}
object.complete && object.complete({
code: code,
message: message,
data: data
});
})["catch"](function (err) {
// const result = { code: FAIL_CODE, message: err.message };
object.fail && object.fail(err);
object.complete && object.complete(err);
});
}
return {
platform: getPlatform(),
NAVITYPE: NAVITYPE,
login: login,
validateCodeLogin: validateCodeLogin,
autoLogin: autoLogin,
sendValidateCode: sendValidateCode,
changeTenant: changeTenant,
getAppList: getAppList,
getEsnCode: getEsnCode,
getBannerList: getBannerList,
getBaseUserInfo: getBaseUserInfo,
getIndependenceAppList: getIndependenceAppList
};
});