import axios from "axios";
import { Toast, Dialog } from "vant";
import { API_BASE_URL } from "./config";

// 创建axios实例
const service = axios.create({
  baseURL: API_BASE_URL, // 从配置文件获取基础URL
  timeout: 10000, // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 在发送请求之前可以做一些处理
    // 从localStorage获取token和userId
    const token = localStorage.getItem("token");
    const userId = localStorage.getItem("userId");

    // 如果存在token，添加到请求头
    if (token) {
      config.headers["Authorization"] = token; // `Bearer ${token}`
      config.headers["token"] = token;
    }

    // 如果存在userId，添加到请求头
    if (userId) {
      config.headers["userId"] = userId;
    }

    return config;
  },
  (error) => {
    // 处理请求错误
    console.log(error);
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    console.log(response);
    const res = response.data;
    // 根据后端约定的状态码判断请求是否成功
    if (res.code == 109) {
      Toast.fail("登录令牌失效");
      console.log("登录失效", res.message);
      // 清除localStorage中的用户信息
      localStorage.removeItem('userId');
      localStorage.removeItem('userName');
      localStorage.removeItem('avatar');
      localStorage.removeItem('token');
      localStorage.removeItem('integral');
      localStorage.removeItem('canExchange');
      // 跳转到搜索页
      window.location.href = '/'
    } else if (res.code == 1100) {
      Dialog.alert({ message: res.message });
      console.log("弹窗提示", res.message);
    } else if (res.code == 1000) {
      Toast.fail(res.message);
      console.log("普通提示", res.message);
    } else if (res.code !== 200) {
      //Toast.fail(res.message || '请求失败')
      // return Promise.reject(new Error(res.message || '请求失败'))
      return res;
    } else {
      return res;
    }
    // return res
  },
  (error) => {
    console.log("请求错误:", error);
    Toast.fail("网络异常，请稍后重试");
    return Promise.reject(error);
  }
);

export default service;
