UNPKG

mtl-js-sdk

Version:

462 lines (412 loc) 13.1 kB
"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 }; });