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