UNPKG

mtl-js-sdk

Version:

915 lines (838 loc) 24.8 kB
"use strict"; define(["./config.js", "axios"], function (config, axios) { var readUCGConfig = config.readUCGConfig; //测试环境 // let baseUrl = "https://ucg-test-core.yonyoucloud.com"; //正式环境 var baseUrl = "https://ucg-online-core.yonyoucloud.com"; var DOMAIN_USERINFO = "DOMAIN_USERINFO"; var KEY_USERINFO = "KEY_USERINFO"; var FAIL_CODE = -1; var types = { 'wx': "WECHAT_APPLET", 'dd': "DINGDING_APPLET", 'upesn': 'USPACE_APPLET' }; function getUrl(object, suffix) { var appCode = object.appCode; var UCGConfig = appCode ? readUCGConfig({ appcode: appCode }) || {} : {}; var _object$isHttps = object.isHttps, isHttps = _object$isHttps === void 0 ? UCGConfig.isHttps || false : _object$isHttps, _object$port = object.port, port = _object$port === void 0 ? UCGConfig.port || "" : _object$port, _object$host = object.host, host = _object$host === void 0 ? UCGConfig.host || "" : _object$host, _object$url = object.url, url = _object$url === void 0 ? "" : _object$url, _object$_suffix = object._suffix, _suffix = _object$_suffix === void 0 ? suffix : _object$_suffix; if (url.indexOf("http") != -1) { var _url = "".concat(url).concat(_suffix); return _url; } else { var http = isHttps ? "https://" : "http://"; var _port = port ? ":" + port : ""; var _url2 = host ? "".concat(http).concat(host).concat(_port).concat(url).concat(_suffix) : "".concat(url).concat(_suffix); return _url2; } } function onCommon(func, object) { var promise = new Promise(func); promise.then(function (res) { var code = res.code, message = res.message, data = res.data; console.log('common', JSON.stringify(res)); if (data.code == "200") { object.success && object.success(data.data); object.complete && object.complete(data); } else { object.fail && object.fail(res.data); object.complete && object.complete(res.data); } })["catch"](function (err) { object.fail && object.fail(err); object.complete && object.complete(err); }); } /** * 用户名密码登录 * @param {*} obj */ function loginByPassword(obj) { onCommon(function (resolve, reject) { var url = obj.url, username = obj.username, password = obj.password, _obj$multiLogin = obj.multiLogin, multiLogin = _obj$multiLogin === void 0 ? false : _obj$multiLogin; var data = { username: username, password: password, multiLogin: multiLogin, validateCodeType: "username" }; axiosRequest({ url: "".concat(url || baseUrl, "/ucg/oauth/login"), data: data, method: 'POST', complete: function complete(res) { resolve(res); setUserInfo(res); }, fail: function fail(err) { reject(err); } }); }, obj); } /** * 手机号验证码登录 * @param {*} obj */ function loginByValidateCode(obj) { onCommon(function (resolve, reject) { var url = obj.url, username = obj.username, validateCode = obj.validateCode, _obj$multiLogin2 = obj.multiLogin, multiLogin = _obj$multiLogin2 === void 0 ? false : _obj$multiLogin2; var data = { username: username, validateCode: validateCode, multiLogin: multiLogin, validateCodeType: "mobile" }; axiosRequest({ url: "".concat(url || baseUrl, "/ucg/oauth/login"), data: data, method: 'POST', complete: function complete(res) { resolve(res); setUserInfo(res); }, fail: function fail(err) { reject(err); } }); }, obj); } /** * 获取手机号验证码 * @param {*} obj */ function getValidateCode(obj) { onCommon(function (resolve, reject) { var url = obj.url, mobile = obj.mobile; var data = { mobile: mobile }; mtl.request({ url: "".concat(url || baseUrl, "/iuap/yht/sendCode"), data: data, method: 'POST', complete: function complete(res) { resolve(res); }, fail: function fail(err) { reject(err); } }); }, obj); } function axiosRequest(object) { 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) { var result = { code: FAIL_CODE, message: err.message }; object.fail && object.fail(result); object.complete && object.complete(result); }); } // /** // * 去掉无用的API // * 延长access_token的时效性 // * @param {*} obj // */ // function extendAccessTokenTime(obj) { // onCommon((resolve, reject) => { // let { url, refresh_token } = obj; // let data = { // refresh_token // } // mtl.request({ // url: url || `${baseUrl}/iuap/yht/cas/oauth/refreshAccessToken`, // data: data, // method: 'POST', // complete(res) { // resolve(res); // }, // fail(err) { // reject(err); // } // }); // }, obj); // } /** * 小程序登录 * @param {*} obj */ function loginOfMiniProgram(obj) { onCommon(function (resolve, reject) { var url = obj.url, appId = obj.appId, encryptedData = obj.encryptedData, iv = obj.iv; var platform = mtl.platform; var action = { 'wx': function wx(url, appId, encryptedData, iv) { var type = "WECHAT_APPLET"; mtl.getAuthCode({ success: function success(res) { var code = res.authCode; if (appId) { var data = { type: type, code: code, appId: appId, encryptedData: encryptedData, iv: iv }; _loginOfMiniProgram(url, data, resolve, reject); } else { mtl.getAppCode({ success: function success(res) { appId = res.appCode; var data = { type: type, code: code, appId: appId, encryptedData: encryptedData, iv: iv }; _loginOfMiniProgram(url, data, resolve, reject); }, fail: function fail(err) { reject(err); } }); } }, fail: function fail(err) { reject(err); } }); }, 'dd': function dd(url, appId) { var type = "DINGDING_APPLET"; mtl.getAuthCode({ success: function success(res) { var code = res.authCode; if (appId) { mtl.getCorpId({ success: function success(res) { var corpId = res.corpId; var data = { type: type, code: code, appId: "".concat(corpId, "#").concat(appId) }; _loginOfMiniProgram(url, data, resolve, reject); }, fail: function fail(err) { reject(err); } }); } else { var error = { message: "appId is null", code: -1 }; reject(error); } }, fail: function fail(err) { reject(err); } }); }, 'upesn': function upesn(url, appId) { var type = "USPACE_APPLET"; mtl.getOAuthCode({ success: function success(res) { var code = res.OAuthCode; if (appId) { var data = { type: type, code: code, appId: appId }; _loginOfMiniProgram(url, data, resolve, reject); } else { var error = { message: "appId is null", code: -1 }; reject(error); } }, fail: function fail(err) { reject(err); } }); } }; action[platform](url, appId, encryptedData, iv); //todo:URL提供配置方案 // mtl.getOAuthCode({ // success: res => { // let code = res.authCode || res.OAuthCode; // if (appId) { // let data = { // type, // code, // appId // } // mtl.request({ // url: url || `${baseUrl}/iuap/yht/loginWithThirdCode`, // data: data, // method: 'POST', // complete(res) { // resolve(res); // setUserInfo(res); // }, // fail(err) { // reject(err); // } // }); // } else { // mtl.getAppCode({ // success: res => { // appId = res.appCode; // _loginOfMiniProgram({ type, code, appId }) // }, // fail: err => { // reject(err); // } // }); // } // }, // fail: err => { // reject(err); // } // }); }, obj); } /** * * @param {type, code ,appId} data */ function _loginOfMiniProgram(url, data, resolve, reject) { mtl.request({ url: url || "".concat(baseUrl, "/ucg/oauth/loginWithThirdCode"), data: data, method: 'POST', complete: function complete(res) { resolve(res); setUserInfo(res); }, fail: function fail(err) { reject(err); } }); } /** * 微信小程序用户名密码绑定 * @param {*} obj */ function bindByPassword(obj) { onCommon(function (resolve, reject) { getOpenId({ success: function success(res) { var openId = res.data; var url = obj.url, username = obj.username, password = obj.password, appId = obj.appId; var platform = mtl.platform; var action = { 'wx': function wx(url, appId, username, password, openId) { var type = "WECHAT_APPLET"; if (appId) { var data = { username: username, password: password, openId: openId, type: type, appId: appId, validateCodeType: "username" }; _bindUser(url, data, resolve, reject); } else { mtl.getAppCode({ success: function success(res) { appId = res.appCode; var data = { username: username, password: password, openId: openId, type: type, appId: appId, validateCodeType: "username" }; _bindUser(url, data, resolve, reject); }, fail: function fail(err) { reject(err); } }); } }, 'dd': function dd(url, appId, username, password, openId) { var type = "DINGDING_APPLET"; if (appId) { mtl.getCorpId({ success: function success(res) { var corpId = res.corpId; var data = { username: username, password: password, openId: openId, type: type, appId: "".concat(corpId, "#").concat(appId), validateCodeType: "username" }; _bindUser(url, data, resolve, reject); }, fail: function fail(err) { reject(err); } }); } else { var error = { message: "appId is null", code: -1 }; reject(error); } }, 'upesn': function upesn(url, appId, username, password, openId) { var type = "USPACE_APPLET"; if (appId) { var data = { username: username, password: password, openId: openId, type: type, appId: appId, validateCodeType: "username" }; _bindUser(url, data, resolve, reject); } else { var error = { message: "appId is null", code: -1 }; reject(error); } } }; action[platform](url, appId, username, password, openId); }, fail: function fail(err) { reject(err); } }); }, obj); } /** * 微信小程序手机号验证码绑定 * @param {*} obj */ function bindByValidateCode(obj) { onCommon(function (resolve, reject) { getOpenId({ success: function success(res) { var url = obj.url, username = obj.username, validateCode = obj.validateCode, appId = obj.appId; var openId = res.data; var platform = mtl.platform; var action = { 'wx': function wx(url, appId, username, validateCode, openId) { var type = "WECHAT_APPLET"; if (appId) { var data = { username: username, password: password, openId: openId, type: type, appId: appId, validateCodeType: "mobile" }; _bindUser(url, data, resolve, reject); } else { mtl.getAppCode({ success: function success(res) { appId = res.appCode; var data = { username: username, validateCode: validateCode, openId: openId, type: type, appId: appId, validateCodeType: "mobile" }; _bindUser(url, data, resolve, reject); }, fail: function fail(err) { reject(err); } }); } }, 'dd': function dd(url, appId, username, validateCode, openId) { var type = "DINGDING_APPLET"; if (appId) { mtl.getCorpId({ success: function success(res) { var corpId = res.corpId; var data = { username: username, validateCode: validateCode, openId: openId, type: type, appId: "".concat(corpId, "#").concat(appId), validateCodeType: "mobile" }; _bindUser(url, data, resolve, reject); }, fail: function fail(err) { reject(err); } }); } else { var error = { message: "appId is null", code: -1 }; reject(error); } }, 'upesn': function upesn(url, appId, username, validateCode, openId) { var type = "USPACE_APPLET"; if (appId) { var data = { username: username, validateCode: validateCode, openId: openId, type: type, appId: appId, validateCodeType: "mobile" }; _bindUser(url, data, resolve, reject); } else { var error = { message: "appId is null", code: -1 }; reject(error); } } }; action[platform](url, appId, username, validateCode, openId); }, fail: function fail(err) { reject(err); } }); }, obj); } function _bindUser(url, data, resolve, reject) { mtl.request({ url: url || "".concat(baseUrl, "/iuap/yht/bindYhtUser"), data: data, method: 'POST', complete: function complete(res) { resolve(res); setUserInfo(res); }, fail: function fail(err) { reject(err); } }); } function setUserInfo(obj) { var data = obj.data; if (!!!data) { return; } if (data.code == "200" || data.code == "1007") { mtl.setStorage({ domain: DOMAIN_USERINFO, //可选,缺省时使用默认的域 key: KEY_USERINFO, data: data.data //支持Number、String、及能够通过JSON.stringify序列化的对象。 }); data.data.openId && setOpenId(data.data.openId); } else { if (data.code == "1002") { data.data && data.data.openId && setOpenId(data.data.openId); } } } /** * 获取用户账户信息 * @param {*}} obj */ function getUserInfo(obj) { mtl.getStorage({ domain: DOMAIN_USERINFO, //可选,缺省时使用默认的域 key: KEY_USERINFO, success: function success(res) { // success obj.success && obj.success(res); }, fail: function fail(res) { // fail obj.fail && obj.fail(res); }, complete: function complete(res) { // complete obj.complete && obj.complete(res); } }); } function setOpenId(data) { mtl.setStorage({ key: "openId", data: data //支持Number、String、及能够通过JSON.stringify序列化的对象。 }); } function getOpenId(obj) { mtl.getStorage({ key: 'openId', success: function success(res) { // success obj.success && obj.success(res); }, fail: function fail(res) { // fail obj.fail && obj.fail(res); }, complete: function complete(res) { // complete obj.complete && obj.complete(res); } }); } /** * 解绑用户 * @param {*} obj */ function unbind(obj) { onCommon(function (resolve, reject) { getOpenId({ success: function success(res) { var openId = res.data; var url = obj.url, accessToken = obj.accessToken; var platform = mtl.platform; // 获取当前运行平台,wx|ios|android|h5|dd|upesn var type = types[platform] || ""; if (accessToken) { var data = { type: type, access_token: accessToken, openId: openId }; _unbind({ url: url, data: data, resolve: resolve, reject: reject }); } else { getUserInfo({ success: function success(res) { accessToken = res.data && res.data.access_token; var data = { type: type, access_token: accessToken, openId: openId }; _unbind({ url: url, data: data, resolve: resolve, reject: reject }); }, fail: function fail(err) { var data = { code: FAIL_CODE, message: 'accessToken is null' }; reject(data); } }); } }, fail: function fail(res) { reject(res); } }); }, obj); } function _unbind(obj) { var url = obj.url, data = obj.data, resolve = obj.resolve, reject = obj.reject; mtl.request({ url: url || "".concat(baseUrl, "/iuap/yht/unbindYhtUser"), data: data, method: 'POST', complete: function complete(res) { resolve(res); setUserInfo(res); }, fail: function fail(err) { reject(err); } }); } /** * 获取免登code * @param {*} obj */ function getUCGAuthCode(obj) { onCommon(function (resolve, reject) { var url = obj.url, accessToken = obj.accessToken, tenantId = obj.tenantId; if (accessToken) { var data = { access_token: accessToken, tenantId: tenantId }; _getUCGAuthCode({ url: url, data: data, resolve: resolve, reject: reject }); } else { getUserInfo({ success: function success(res) { accessToken = res.data && res.data.access_token; var data = { access_token: accessToken, tenantId: tenantId }; _getUCGAuthCode({ url: url, data: data, resolve: resolve, reject: reject }); }, fail: function fail(err) { var data = { code: FAIL_CODE, message: 'accessToken is null' }; reject(data); } }); } }, obj); } function _getUCGAuthCode(obj) { var url = obj.url, data = obj.data, resolve = obj.resolve, reject = obj.reject; mtl.request({ url: "".concat(url || baseUrl, "/oauth/getCode"), params: data, method: 'GET', complete: function complete(res) { resolve(res); }, fail: function fail(err) { reject(err); } }); } /** * 获取业务token * @param {*} obj */ function getCommonToken(obj) { onCommon(function (resolve, reject) { var url = obj.url, _obj$terminalType = obj.terminalType, terminalType = _obj$terminalType === void 0 ? mtl.platform : _obj$terminalType, deviceId = obj.deviceId, appCode = obj.appCode, _obj$langCode = obj.langCode, langCode = _obj$langCode === void 0 ? "en" : _obj$langCode, code = obj.code; var data = { terminalType: terminalType, deviceId: deviceId, appCode: appCode, langCode: langCode, code: code }; mtl.request({ url: "".concat(url || baseUrl, "/nccloud/mobile/oauth/getToken"), data: data, method: 'POST', complete: function complete(res) { resolve(res); }, fail: function fail(err) { reject(err); } }); }, obj); } return { config: config, writeUCGConfig: config.writeUCGConfig, readUCGConfig: config.readUCGConfig, loginByPassword: loginByPassword, loginByValidateCode: loginByValidateCode, getValidateCode: getValidateCode, loginOfMiniProgram: loginOfMiniProgram, bindByPassword: bindByPassword, bindByValidateCode: bindByValidateCode, getUserInfo: getUserInfo, unbind: unbind, getUCGAuthCode: getUCGAuthCode, getCommonToken: getCommonToken, getOpenId: getOpenId }; });