mtl-js-sdk
Version:
915 lines (838 loc) • 24.8 kB
JavaScript
"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
};
});