From c76922f37ddeeb3344304af453dd2f8befdedb89 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Tue, 30 Sep 2025 14:18:00 +0800
Subject: [PATCH] feat: app搭建调整

---
 src/utils/request/interceptors.js |  100 +++++++++-----------------------------------------
 1 files changed, 18 insertions(+), 82 deletions(-)

diff --git a/src/utils/request/interceptors.js b/src/utils/request/interceptors.js
index 0a45b3b..22c8616 100644
--- a/src/utils/request/interceptors.js
+++ b/src/utils/request/interceptors.js
@@ -1,9 +1,6 @@
 import {
   useUserStore
 } from "@/store"
-import {
-  getToken
-} from "@/utils/auth"
 import storage from "@/utils/storage"
 import {
   showMessage
@@ -12,8 +9,6 @@
 import {
   Base64
 } from 'js-base64'
-// 重试队列,每一项将是一个待执行的函数形式
-let requestQueue = []
 
 // 防止重复提交
 const repeatSubmit = config => {
@@ -45,107 +40,48 @@
   }
 }
 
-// 是否正在刷新token的标记
-let isRefreshing = false
-
-// 刷新token
-const refreshToken = async (http, config) => {
-  // 是否在获取token中,防止重复获取
-  if (!isRefreshing) {
-    // 修改登录状态为true
-    isRefreshing = true
-    // 等待登录完成
-    await useUserStore().authLogin()
-    // 登录完成之后,开始执行队列请求
-    requestQueue.forEach(cb => cb())
-    // 重试完了清空这个队列
-    requestQueue = []
-    isRefreshing = false
-    // 重新执行本次请求
-    return http.request(config)
-  }
-
-  return new Promise(resolve => {
-    // 将resolve放进队列,用一个函数形式来保存,等登录后直接执行
-    requestQueue.push(() => {
-      resolve(http.request(config))
-    })
-  })
-}
-
+// 请求拦截器
 function requestInterceptors(http) {
-  http.interceptors.request.use((config) => { // 可使用async await 做异步操作
+
+  http.interceptors.request.use((config) => {
+    const {detail} = useUserStore().$state?.userInfo || {}
     // 假设有token值需要在头部需要携带
-    let accessToken = uni.getStorageSync('accessToken');
+    let accessToken = useUserStore()?.$state?.userInfo?.access_token;
     if (accessToken) {
       config.header['Blade-Auth'] = 'bearer ' + accessToken;
     }
-
+    if (detail?.areaCode) {
+      config.header['areaCode'] = detail.areaCode
+    }
     // 安全请求header
     config.header['Blade-Requested-With'] = 'BladeHttpRequest';
     // 客户端认证参数
     config.header['Authorization'] = 'Basic ' + Base64.encode(website.clientId + ':' + website.clientSecret);
-
-    // #ifndef H5
-    let url = config.url
-    if (process.env.NODE_ENV == 'development' && !url.startsWith("http")) {
-      url = url.substring(url.indexOf('/api') + 4)
-      config.url = url
-    }
-    // #endif
-
-    // 额外参数
-    // config.data = config.data || {};
-    // config.data.pf = uni.getSystemInfoSync().platform;
-    // config.data.sys = uni.getSystemInfoSync().system;
-
-    // 演示custom 用处
-    // if (config.custom.auth) {
-    //   config.header.token = 'token'
-    // }
-    // if (config.custom.loading) {
-    //  uni.showLoading()
-    // }
-    /**
-     /* 演示
-     if (!token) { // 如果token不存在,return Promise.reject(config) 会取消本次请求
-        return Promise.reject(config)
-      }
-     **/
     return config
   }, config => { // 可使用async await 做异步操作
     return Promise.reject(config)
   })
 }
 
+// 响应拦截器
 function responseInterceptors(http) {
   http.interceptors.response.use((response) => {
-    console.log(response, 2222)
-    // 若有数据返回则通过
-    if (response.data.access_token || response.data.key) {
-      return response.data
-    }
-    // 服务端返回的状态码不等于200,则reject()
-    if (response.data.code !== 200) {
-      uni.showToast({
-        title: response.data.msg,
-        icon: 'none'
-      });
+    let res = response
+    const status = res.data.error_code || res.data.code || res.statusCode
+    const message = res?.data?.msg || res?.data?.error_description || res?.data?.message || '系统错误'
+    if (status !== 200) {
+      uni.showToast({title: message, icon: 'none'});
       return Promise.reject(response);
     }
-    return response.data;
+    return response;
   }, (response) => {
-    console.log(response, 111)
     /*  对响应错误做点什么 (statusCode !== 200)*/
-    uni.showToast({
-      title: response.data.msg,
-      icon: 'none'
-    });
-    if (response.statusCode == 401) {
+    uni.showToast({title: response?.data?.msg, icon: 'none'});
+    if (response.statusCode === 401) {
       const pages = getCurrentPages()
       const currentPage = pages[pages.length - 1]
       uni.redirectTo({
-        url: `/pages/login/login-account?redirect=/${currentPage.route}`
+        url: `/pages/login/index?redirect=/${currentPage.route}`
       })
     }
     return Promise.reject(response)

--
Gitblit v1.9.3