From e417c17e9141a5121b76ed769852b14ff67d7028 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 10 十月 2025 09:10:18 +0800
Subject: [PATCH] 店铺标签
---
seller/src/libs/axios.js | 196 +++++++++++++++++++++++++++++++++---------------
1 files changed, 135 insertions(+), 61 deletions(-)
diff --git a/seller/src/libs/axios.js b/seller/src/libs/axios.js
index 768708e..a56faf8 100644
--- a/seller/src/libs/axios.js
+++ b/seller/src/libs/axios.js
@@ -17,10 +17,57 @@
: BASE.API_PROD.common;
// 鏂囦欢涓婁紶鎺ュ彛
export const uploadFile = commonUrl + "/common/common/upload/file";
-var isRefreshToken = 0;
-const refreshToken = getTokenDebounce();
-const service = axios.create({
+export const uploadFile2 = commonUrl + "/common/lmk/file/upload";
+
+// 浣跨敤鐘舵�佹爣璁版浛浠h鏁板櫒锛岄伩鍏嶇珵鎬佹潯浠�
+let isRefreshing = false;
+let failedQueue = [];
+
+const processQueue = (error, token = null) => {
+ failedQueue.forEach(prom => {
+ if (error) {
+ prom.reject(error);
+ } else {
+ prom.resolve(token);
+ }
+ });
+
+ failedQueue = [];
+};
+
+// 鏀硅繘鐨則oken鍒锋柊闃叉姈鏈哄埗
+let refreshTokenPromise = null;
+const refreshToken = () => {
+ if (refreshTokenPromise) {
+ return refreshTokenPromise;
+ }
+
+ refreshTokenPromise = new Promise((resolve, reject) => {
+ let oldRefreshToken = getStore("refreshToken");
+ handleRefreshToken(oldRefreshToken)
+ .then(res => {
+ if (res.success) {
+ let { accessToken, refreshToken } = res.result;
+ setStore("accessToken", accessToken);
+ setStore("refreshToken", refreshToken);
+ resolve("success");
+ } else {
+ reject("fail");
+ }
+ })
+ .catch(err => {
+ reject("fail");
+ })
+ .finally(() => {
+ refreshTokenPromise = null;
+ });
+ });
+
+ return refreshTokenPromise;
+};
+
+const service = axios.create({
baseURL: baseUrl
});
axios.defaults.timeout = 100000
@@ -46,10 +93,16 @@
setStore('uuid', uuid);
}
+ // 鍔ㄦ�佽幏鍙栧苟璁剧疆accessToken
+ const accessToken = getStore("accessToken");
+ if (accessToken) {
+ config.headers["accessToken"] = accessToken;
+ }
+
config.headers["uuid"] = uuid;
return config;
},
- err => {
+ err => {
Message.error("璇锋眰瓒呮椂");
return Promise.resolve(err);
}
@@ -104,25 +157,44 @@
} else if (error.response.status === 404) {
// 閬垮厤鍒锋柊token鎶ラ敊
} else if (error.response.status === 403) {
- isRefreshToken++;
- if (isRefreshToken === 1) {
- const getTokenRes = await refreshToken();
- if (getTokenRes === "success") {
- // 鍒锋柊token
- if (isRefreshToken === 1) {
- error.response.config.headers.accessToken = getStore(
- "accessToken"
- );
- return service(error.response.config);
+ // 澶勭悊403閿欒锛岃繘琛宼oken鍒锋柊
+ const originalRequest = error.config;
+
+ if (!isRefreshing) {
+ isRefreshing = true;
+
+ try {
+ const getTokenRes = await refreshToken();
+ if (getTokenRes === "success") {
+ processQueue(null, getStore("accessToken"));
+ // 鏇存柊璇锋眰澶翠腑鐨則oken骞堕噸鏂板彂閫佽姹�
+ originalRequest.headers["accessToken"] = getStore("accessToken");
+ return service(originalRequest);
} else {
- router.go(0);
+ processQueue(new Error("Token refresh failed"), null);
+ Cookies.set("userInfoSeller", "");
+ setStore("accessToken", "");
+ redirectLogin();
}
- } else {
+ } catch (err) {
+ processQueue(err, null);
Cookies.set("userInfoSeller", "");
+ setStore("accessToken", "");
redirectLogin();
+ } finally {
+ isRefreshing = false;
}
- isRefreshToken = 0;
}
+
+ // 濡傛灉姝e湪鍒锋柊token锛屽垯灏嗚姹傚姞鍏ラ槦鍒�
+ return new Promise((resolve, reject) => {
+ failedQueue.push({ resolve, reject });
+ }).then(token => {
+ originalRequest.headers["accessToken"] = token;
+ return service(originalRequest);
+ }).catch(err => {
+ return Promise.reject(err);
+ });
} else {
// 鍏朵粬閿欒澶勭悊
Message.error(error.response.data.message);
@@ -133,50 +205,6 @@
return Promise.resolve(error);
}
);
-
-// 闃叉姈闂寘鏉ヤ竴娉�
-function getTokenDebounce() {
- let lock = false;
- let success = false;
- return function() {
- if (!lock) {
- lock = true;
- let oldRefreshToken = getStore("refreshToken");
- handleRefreshToken(oldRefreshToken)
- .then(res => {
- if (res.success) {
- let { accessToken, refreshToken } = res.result;
- setStore("accessToken", accessToken);
- setStore("refreshToken", refreshToken);
-
- success = true;
- lock = false;
- } else {
- success = false;
- lock = false;
- // router.push('/login')
- }
- })
- .catch(err => {
- success = false;
- lock = false;
- });
- }
- return new Promise(resolve => {
- // 涓�鐩寸湅lock,鐩村埌璇锋眰澶辫触鎴栬�呮垚鍔�
- const timer = setInterval(() => {
- if (!lock) {
- clearInterval(timer);
- if (success) {
- resolve("success");
- } else {
- resolve("fail");
- }
- }
- }, 500); // 杞鏃堕棿闂撮殧
- });
- };
-}
export const getRequest = (url, params, resBlob) => {
let accessToken = getStore("accessToken");
@@ -227,6 +255,18 @@
responseType: "blob"
};
return service(data);
+};
+
+export const postRequest2 = (url, params, headers) => {
+ let accessToken = getStore("accessToken");
+ return service({
+ method: "post",
+ url,
+ data: params, // 鐩存帴浼犲璞★紝涓嶈鐢� [params] 鍖呰
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
};
export const postRequest = (url, params, headers) => {
@@ -316,6 +356,17 @@
}
});
};
+export const putRequest2 = (url, params, headers) => {
+ let accessToken = getStore("accessToken");
+ return service({
+ method: "put",
+ url,
+ data: params, // 鐩存帴浼犲璞★紝涓嶈鐢� [params] 鍖呰
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+};
export const putRequestWithNoForm = (url, params) => {
let accessToken = getStore("accessToken");
@@ -368,6 +419,29 @@
});
};
+export const uploadFileRequest2 = (url, params) => {
+ let accessToken = getStore("accessToken");
+ return axios({ // 鐩存帴浣跨敤 axios锛岃�屼笉鏄� service锛堥伩鍏� baseUrl 褰卞搷锛�
+ method: "post",
+ url: `${url}`, // 鐩存帴浼犲畬鏁� URL锛屽 uploadFile
+ data: params,
+ headers: {
+ accessToken: accessToken,
+ 'Content-Type': 'multipart/form-data'
+ }
+ });
+};
+
+export const delFileByFileKeyRequest = (url, params) => {
+ let accessToken = getStore("accessToken");
+ return axios({ // 鐩存帴浣跨敤 axios锛岃�屼笉鏄� service锛堥伩鍏� baseUrl 褰卞搷锛�
+ method: "DELETE",
+ url: `${url}` + '/'+params, // 鐩存帴浼犲畬鏁� URL锛屽 uploadFile
+ headers: {
+ accessToken: accessToken,
+ }
+ });
+};
/**
--
Gitblit v1.8.0