wujingjing
2024-10-17 2c9729f0cecffe6dbb7f8f99ebad72f3e85a7ded
src/utils/request.ts
@@ -1,12 +1,13 @@
import type { AxiosInstance, AxiosRequestConfig } from 'axios';
import axios from 'axios';
import { ElMessage } from 'element-plus';
import { NO_AUTH_API_LIST } from '../api/ai/chat';
import { LOGIN_URL, TEL_LOGIN_URL } from '../api/ai/user';
import emitter from './mitt';
import { debounce } from './util';
import { debounce, decodeFormData } from './util';
import { AUTH_URL, MAIN_URL, SECONDARY_URL } from '/@/constants';
import { Local, LoginInfo, Session } from '/@/utils/storage';
import { LOGIN_URL } from '../api/ai/user';
import { NO_AUTH_API_LIST } from '../api/ai/chat';
import { Logger } from '../model/logger/Logger';
// import JSONbig from 'json-bigint';
//#region ====================== 后端 res.err_code ======================
@@ -34,7 +35,7 @@
   return !!accessSession;
};
const handleNoAuth = debounce(() => {
export const handleNoAuth = debounce(() => {
   emitNoAuth();
});
const initRequestInterceptor = (request: AxiosInstance) => {
@@ -43,15 +44,14 @@
      (config) => {
         // 获取本地的 token
         const accessSession = Local.get(accessSessionKey);
         if (accessSession) {
            // 将 token 添加到请求报文头中
            config.headers['hswatersession'] = accessSession;
         }
         if (!NO_AUTH_API_LIST.includes(config.url)) {
            if (accessSession) {
               // 将 token 添加到请求报文头中
               config.headers['hswatersession'] = accessSession;
            } else {
               if (config.url !== LOGIN_URL) {
                  handleNoAuth(config.url);
                  throw '权限验证失败';
               }
            if (!accessSession && config.url !== LOGIN_URL && config.url !== TEL_LOGIN_URL) {
               handleNoAuth(config.url);
               throw '权限验证失败';
            }
         }
@@ -88,16 +88,17 @@
         if (!serveData.json_ok) {
            switch (serveData?.err_code) {
               case ErrorCode.Auth:
                  if (res.config.url !== LOGIN_URL) {
                  if (res.config.url !== LOGIN_URL && res.config.url !== TEL_LOGIN_URL) {
                     handleNoAuth();
                     throw '权限验证失败';
                  }
                  break;
               case ErrorCode.Exception:
                  const param = res.config.data ? `\n    请求参数:${JSON.stringify(decodeFormData(res.config.data))}\n` : '';
                  ElMessage.error('内部错误!');
                  throw '内部错误';
                  Logger.error(`${res.config.url} 响应失败${param}`, serveData?.json_msg && new Error(serveData?.json_msg));
                  return res.data;
            }
         }
         return res.data;
      },