"use strict"; const common_vendor = require("../common/vendor.js"); const store_index = require("../store/index.js"); const utils_utils = require("./utils.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 { 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, loadingObj) => { 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 content = ""; if (loadingObj.title) content = loadingObj.title; if (loadingObj.isShowLoading !== false) common_vendor.index.showLoading({ title: content, mask: true }); 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 }; let response = {}; const request = common_vendor.index.request(submitData); request.then((res) => { console.log("请求res :>> ", res); response = res; if (res.statusCode == 200) { let data = res.data; 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("接口出错,请联系后端开发人员"); relove({}); return; } else if (res.statusCode == 401) { if (isLogin) { common_vendor.index.hideLoading(); return common_vendor.index.showToast({ title: "登录失败", icon: "none" }); } if (_isRefreshToken._isRefreshToken) { _isRefreshToken._isRefreshToken.then(() => { HandleRequest(requestObj[key], key, loadingObj).then((res2) => { relove(res2); }); }); } else { console.log("header :>> ", header); const refreshFn = HandleRefreshToken(header, urlhd, refresh_token, user); refreshFn.then((res2) => { HandleRequest(requestObj[key], key, loadingObj).then((res3) => { relove(res3); }); }).catch(() => { }).finally(() => { _isRefreshToken._isRefreshToken = null; }); } } else { console.log("111 :>> ", 111); delete requestObj[key]; utils_functions.api.error("连接服务器失败"); reject(res); } } }).catch(async (err) => { console.log(err); delete requestObj[key]; utils_functions.api.error("请检查是否连接到无线网络"); }).finally(async (res) => { console.log("response :>> ", response); console.log("res-finally :>> ", res); await common_vendor.nextTick$1(); if (loadingObj.isShowLoading !== false) common_vendor.index.hideLoading(); const { data } = response; if (data) { if (data.code !== 200 && data.code !== 401) { if (data.msg) utils_utils.utils.handleToast(data.msg); } else if (data.audio) utils_utils.utils.handleToast(data.audio, "none", false); } }); }); }; let requestObj = {}; let _isRefreshToken = { _isRefreshToken: null }; let isLogin = false; const service = async (params, loadingObj) => { 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; if (_isRefreshToken._isRefreshToken) { await _isRefreshToken._isRefreshToken; return HandleRequest(params, _key, loadingObj); } else return HandleRequest(params, _key, loadingObj); }; exports.service = service;