// src/utils/request.js
import axios from 'axios'
import { ElMessage } from 'element-plus'

// 1. 创建 axios 实例
const service = axios.create({
    // 根据环境自动切换前缀，开发环境走 /api，生产环境可能为空
    baseURL: import.meta.env.DEV ? 'http://127.0.0.1:5000' : '',
    timeout: 5000 // 请求超时时间
})

// 2. 请求拦截器
service.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        const token = localStorage.getItem('token')

        // 🛠️ 调试日志：看看发请求时到底带没带 Token
        // console.log('当前请求:', config.url, '携带Token:', token)

        if (token && token !== 'undefined' && token !== 'null') {
            config.headers.Authorization = `Bearer ${token}`
        }
        return config
    },
    error => {
        console.log(error)
        return Promise.reject(error)
    }
)

// 3. 响应拦截器
service.interceptors.response.use(
    response => {
        return response
    },
    error => {
        console.log('err' + error)
        if (error.response) {
            // 如果是 401 或 422，说明 Token 无效或过期
            if (error.response.status === 401 || error.response.status === 422) {
                ElMessage.error('登录已过期，请重新登录')

                // 清除本地缓存
                localStorage.clear()

                // 强制刷新页面，重置路由状态
                setTimeout(() => {
                    window.location.href = '/'
                }, 1000)
            } else {
                ElMessage.error(error.response.data.message || '请求错误')
            }
        }
        return Promise.reject(error)
    }
)

export default service
