货无忧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

212 lines
7.1 KiB

"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;