import axios from 'axios'

// 创建 axios 实例
const service = axios.create({
  baseURL: "http://wcy111.top:35001/api",
  timeout: 10000
})

// 存储请求的防抖定时器（key: 请求标识, value: 定时器ID）
const debounceTimers = new Map();
// 防抖时间（毫秒，可根据需求调整）
const DEBOUNCE_DELAY = 500;

// 生成请求唯一标识（URL + 参数 + 方法）
const getRequestKey = (config) => {
  const { url, method, params, data } = config;
  // 序列化参数，确保相同参数生成相同key
  const paramsStr = params ? JSON.stringify(params) : '';
  const dataStr = data ? JSON.stringify(data) : '';
  return `${method}:${url}:${paramsStr}:${dataStr}`;
};

// 请求拦截器：仅保留防抖逻辑
service.interceptors.request.use(
  config => {
    // 防抖逻辑
    return new Promise((resolve) => {
      const requestKey = getRequestKey(config);
      // 清除之前的定时器
      if (debounceTimers.has(requestKey)) {
        clearTimeout(debounceTimers.get(requestKey));
      }
      // 设置新定时器
      const timer = setTimeout(() => {
        debounceTimers.delete(requestKey);
        resolve(config); // 延迟后执行请求
      }, DEBOUNCE_DELAY);
      debounceTimers.set(requestKey, timer);
    });
  },
  error => {
    console.error('请求拦截器错误：', error);
    return Promise.reject(error);
  }
);

// 响应拦截器保持不变
service.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    let errorMessage = '请求失败';
    
    if (error.response) {
      errorMessage = `请求失败，状态码: ${error.response.status}`;
      if (error.response.data && error.response.data.message) {
        errorMessage += `，原因: ${error.response.data.message}`;
      }
    } else if (error.request) {
      errorMessage = '请求已发送，但没有收到响应';
    } else {
      errorMessage = `请求错误: ${error.message}`;
    }
    
    console.error(errorMessage);
    return Promise.reject(errorMessage);
  }
);

export default service;