|
|
|
"use strict";
|
|
|
|
const common_vendor = require("../common/vendor.js");
|
|
|
|
const store_index = require("../store/index.js");
|
|
|
|
const utils_functions = require("./functions.js");
|
|
|
|
const config_host = require("../config/host.js");
|
|
|
|
const utils_base64 = require("./base64.js");
|
|
|
|
const utils_md5 = require("./md5.js");
|
|
|
|
const HandleRefreshToken = (header, urlhd, refresh_token, user) => {
|
|
|
|
_isRefreshToken._isRefreshToken = new Promise((resolve, reject) => {
|
|
|
|
console.log("user :>> ", user);
|
|
|
|
const data = {
|
|
|
|
"grant_type": "refresh_token",
|
|
|
|
"scope": "all",
|
|
|
|
"refresh_token": user.refresh_token,
|
|
|
|
// "refresh_token": 123,
|
|
|
|
"tenantId": user.tenant_id
|
|
|
|
};
|
|
|
|
header["Content-Type"] = "application/x-www-form-urlencoded";
|
|
|
|
header["Tenant-Id"] = user.tenant_id;
|
|
|
|
common_vendor.index.request({
|
|
|
|
url: urlhd + `blade-auth/oauth/token`,
|
|
|
|
data,
|
|
|
|
method: "post",
|
|
|
|
header
|
|
|
|
}).then((res) => {
|
|
|
|
console.log("请求res :>> ", res);
|
|
|
|
if (res.statusCode === 200) {
|
|
|
|
const userinfo = res.data;
|
|
|
|
common_vendor.index.setStorageSync("access_token", userinfo.access_token);
|
|
|
|
common_vendor.index.setStorageSync("refresh_token", userinfo.refresh_token);
|
|
|
|
common_vendor.index.setStorageSync("userinfo", userinfo);
|
|
|
|
resolve(res);
|
|
|
|
} else {
|
|
|
|
common_vendor.index.reLaunch({
|
|
|
|
url: "/pages/login/login"
|
|
|
|
});
|
|
|
|
const res2 = common_vendor.index.getStorageInfoSync();
|
|
|
|
res2.keys.map((item) => {
|
|
|
|
if (item == "loginuser" || item == "HistoryDate" || item == "setip" || item == "checkname" || item.indexOf("IMAGE_CACHE_INFO") != -1) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
common_vendor.index.removeStorageSync(item);
|
|
|
|
});
|
|
|
|
common_vendor.index.reLaunch({
|
|
|
|
url: "/pages/login/login"
|
|
|
|
});
|
|
|
|
requestObj = {};
|
|
|
|
_isRefreshToken._isRefreshToken = null;
|
|
|
|
utils_functions.api.error("请登录");
|
|
|
|
reject({
|
|
|
|
code: 4e3
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}).catch((err) => {
|
|
|
|
common_vendor.index.reLaunch({
|
|
|
|
url: "/pages/login/login"
|
|
|
|
});
|
|
|
|
const res = common_vendor.index.getStorageInfoSync();
|
|
|
|
res.keys.map((item) => {
|
|
|
|
if (item == "loginuser" || item == "HistoryDate" || item == "setip" || item == "checkname" || item.indexOf("IMAGE_CACHE_INFO") != -1) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
common_vendor.index.removeStorageSync(item);
|
|
|
|
});
|
|
|
|
common_vendor.index.reLaunch({
|
|
|
|
url: "/pages/login/login"
|
|
|
|
});
|
|
|
|
requestObj = {};
|
|
|
|
_isRefreshToken._isRefreshToken = null;
|
|
|
|
utils_functions.api.error("请登录");
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
return _isRefreshToken._isRefreshToken;
|
|
|
|
};
|
|
|
|
const HandleRequest = (params, key) => {
|
|
|
|
return new Promise(async (relove, reject) => {
|
|
|
|
let refresh_token = common_vendor.index.getStorageSync("refresh_token");
|
|
|
|
let token = common_vendor.index.getStorageSync("access_token");
|
|
|
|
let user = common_vendor.index.getStorageSync("userinfo");
|
|
|
|
let header = {};
|
|
|
|
if (user && token && refresh_token) {
|
|
|
|
store_index.store.commit("updateislog", true);
|
|
|
|
store_index.store.commit("updaterftk", refresh_token);
|
|
|
|
store_index.store.commit("updatetk", token);
|
|
|
|
store_index.store.commit("updatauser", user);
|
|
|
|
header["Blade-Auth"] = `bearer ${store_index.store.state.access_token}`;
|
|
|
|
} else {
|
|
|
|
if (!token && params.url.indexOf("oauth/token") == -1)
|
|
|
|
;
|
|
|
|
}
|
|
|
|
header.Authorization = `Basic ${utils_base64.base64.encode(config_host.APPKEY)}`;
|
|
|
|
if (params.url.indexOf("blade-auth/oauth/token") != -1) {
|
|
|
|
header["Content-Type"] = "application/x-www-form-urlencoded";
|
|
|
|
header["Tenant-Id"] = params.data.tenantId;
|
|
|
|
if (params.data.password)
|
|
|
|
params.data.password = utils_md5.hexMD5(params.data.password);
|
|
|
|
}
|
|
|
|
let urlhd = "";
|
|
|
|
if (common_vendor.index.getStorageSync("setip")) {
|
|
|
|
urlhd = common_vendor.index.getStorageSync("setip");
|
|
|
|
} else {
|
|
|
|
urlhd = config_host.host;
|
|
|
|
}
|
|
|
|
let submitData = {
|
|
|
|
url: urlhd + params.url,
|
|
|
|
data: params.data,
|
|
|
|
method: params.method,
|
|
|
|
header
|
|
|
|
};
|
|
|
|
const request = common_vendor.index.request(submitData);
|
|
|
|
request.then((res) => {
|
|
|
|
console.log("请求res :>> ", res);
|
|
|
|
common_vendor.index.hideLoading();
|
|
|
|
if (res.statusCode == 200) {
|
|
|
|
let data = res.data;
|
|
|
|
if (data.code != 200 && (data == null ? void 0 : data.msg)) {
|
|
|
|
common_vendor.index.showToast({
|
|
|
|
title: (data == null ? void 0 : data.msg) || "",
|
|
|
|
icon: "none"
|
|
|
|
});
|
|
|
|
} else if (data.audio) {
|
|
|
|
common_vendor.index.showToast({
|
|
|
|
title: data.msg,
|
|
|
|
icon: "none"
|
|
|
|
});
|
|
|
|
}
|
|
|
|
delete requestObj[key];
|
|
|
|
switch (data.code) {
|
|
|
|
case 200:
|
|
|
|
relove(data);
|
|
|
|
break;
|
|
|
|
case 203:
|
|
|
|
relove(data);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
relove(data);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (res.statusCode == 400) {
|
|
|
|
delete requestObj[key];
|
|
|
|
relove({});
|
|
|
|
return;
|
|
|
|
} else if (res.statusCode == 500) {
|
|
|
|
delete requestObj[key];
|
|
|
|
utils_functions.api.error("接口出错,请联系后端开发人员");
|
|
|
|
return;
|
|
|
|
} else if (res.statusCode == 401) {
|
|
|
|
if (isLogin) {
|
|
|
|
return common_vendor.index.showToast({
|
|
|
|
title: "登录失败",
|
|
|
|
icon: "none"
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if (_isRefreshToken._isRefreshToken) {
|
|
|
|
_isRefreshToken._isRefreshToken.then(() => {
|
|
|
|
HandleRequest(requestObj[key], key).then((res2) => {
|
|
|
|
relove(res2);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
console.log("header :>> ", header);
|
|
|
|
const refreshFn = HandleRefreshToken(header, urlhd, refresh_token, user);
|
|
|
|
refreshFn.then((res2) => {
|
|
|
|
HandleRequest(requestObj[key], key).then((res3) => {
|
|
|
|
relove(res3);
|
|
|
|
});
|
|
|
|
}).catch(() => {
|
|
|
|
}).finally(() => {
|
|
|
|
_isRefreshToken._isRefreshToken = null;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
delete requestObj[key];
|
|
|
|
utils_functions.api.error("连接服务器失败");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).catch((err) => {
|
|
|
|
console.log(err);
|
|
|
|
delete requestObj[key];
|
|
|
|
utils_functions.api.error("请检查是否连接到无线网络");
|
|
|
|
common_vendor.index.hideLoading();
|
|
|
|
}).finally();
|
|
|
|
});
|
|
|
|
};
|
|
|
|
let requestObj = {};
|
|
|
|
let _isRefreshToken = {
|
|
|
|
_isRefreshToken: null
|
|
|
|
};
|
|
|
|
let isLogin = false;
|
|
|
|
const service = async (params) => {
|
|
|
|
if (params.data.isLogin) {
|
|
|
|
isLogin = true;
|
|
|
|
delete params.data.isLogin;
|
|
|
|
} else
|
|
|
|
isLogin = false;
|
|
|
|
console.log("params :>> ", params);
|
|
|
|
const _key = params.url + JSON.stringify(params.data);
|
|
|
|
if (requestObj[_key])
|
|
|
|
return new Promise((resolve) => resolve({
|
|
|
|
code: 4e3
|
|
|
|
}));
|
|
|
|
requestObj[_key] = params;
|
|
|
|
console.log("_isRefreshToken :>> ", _isRefreshToken);
|
|
|
|
if (_isRefreshToken._isRefreshToken) {
|
|
|
|
await _isRefreshToken._isRefreshToken;
|
|
|
|
return HandleRequest(params, _key);
|
|
|
|
} else
|
|
|
|
return HandleRequest(params, _key);
|
|
|
|
};
|
|
|
|
exports.service = service;
|