import axios from 'axios' import { useUserStore } from '@/stores/user' const api = axios.create({ baseURL: import.meta.env.VITE_API_URL, headers: { 'Content-Type': 'application/json' } }) // 请求拦截器 api.interceptors.request.use( (config) => { const userStore = useUserStore() if (userStore.token) { config.headers.Authorization = `Bearer ${userStore.token}` } return config }, (error) => { return Promise.reject(error) } ) // 响应拦截器 api.interceptors.response.use( (response) => response, (error) => { if (error.response?.status === 401) { const userStore = useUserStore() userStore.logout() } console.log('errorxxx', error.response?.data || error) return Promise.reject(error.response?.data || error) } ) export const login = async (name, password) => { const response = await api.post('/users/login', { name, password }) return response.data } export const profile = async () => { const response = await api.get('/users/profile') return response.data } export const resetPasswordApi = async (password) => { const response = await api.post('/users/reset-password', { password }) return response.data } export const listUsersApi = async (page, size) => { const response = await api.get('/users', { params: { page, size } }) return response.data } export const allUsersApi = async () => { const response = await api.get('/users/all') return response.data } export const createUserApi = async (userData) => { const response = await api.post('/users/create', userData) return response.data } export const updateUserApi = async (userData) => { const response = await api.post('/users/update', userData) return response.data } // Records API export const listRecords = async (page, size, url, description) => { const response = await api.get('/records', { params: { page, size, url, description } }) return response.data } export const getRecordById = async (id) => { const response = await api.get(`/records/${id}`) return response.data } export const createRecord = async (recordData) => { const response = await api.post('/records', recordData) return response.data } export const updateRecord = async (recordData) => { const response = await api.post('/records/update', recordData) return response.data } export const deleteRecord = async (id) => { const response = await api.get(`/records/delete/${id}`) return response.data } // 文件上传API export const uploadFile = async (file) => { const formData = new FormData() formData.append('file', file) const response = await api.post('/files/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }) return response.data } // 文件下载API export const downloadFile = async (key) => { const response = await api.post( '/files/download', { key }, { responseType: 'blob' } ) return response.data } // Fish API export const listFish = async (page, size, id, name, phone, result, ownerName, createdAt, loginTime) => { const response = await api.get('/fish', { params: { id, page, size, name, phone, result, ownerName, createdAt, loginTime } }) return response.data } export const getFishById = async (id) => { const response = await api.get(`/fish/${id}`) return response.data } export const createFish = async (fishData) => { const response = await api.post('/fish/create', fishData) return response.data } export const updateFish = async (fishData) => { const response = await api.post('/fish/update', fishData) return response.data } export const deleteFish = async (id) => { const response = await api.post('/fish/delete', { id }) return response.data } export const batchDeleteFish = async (ids) => { const response = await api.post('/fish/batch-delete', { ids }) return response.data } export const getFishStatistics = async (ownerId) => { const response = await api.get('/fish/statistics', { params: { ownerId } }) return response.data } export const getFishByOwner = async (ownerId) => { const response = await api.get('/fish/by-owner', { params: { ownerId } }) return response.data } export const getFishByResult = async (result) => { const response = await api.get('/fish/by-result', { params: { result } }) return response.data } // FishFriends API export const listFishFriends = async (page, size, id, fishId, tgName, tgUsername, tgRemarkName, tgPhone, remark, createdAt) => { const response = await api.get('/fish-friends', { params: { page, size, id, fishId, tgName, tgUsername, tgRemarkName, tgPhone, remark, createdAt } }) return response.data } export const getFishFriendsById = async (id) => { const response = await api.get(`/fish-friends/${id}`) return response.data } export const updateFishFriends = async (fishFriendsData) => { const response = await api.post('/fish-friends/update', fishFriendsData) return response.data } export const deleteFishFriends = async (id) => { const response = await api.post('/fish-friends/delete', { id }) return response.data } export const getFishFriendsByFishId = async (fishId) => { const response = await api.get('/fish-friends/by-fish-id', { params: { fishId } }) return response.data } export const getFishFriendsByTgUsername = async (tgUsername) => { const response = await api.get('/fish-friends/by-tg-username', { params: { tgUsername } }) return response.data } export const exportFishFriends = async (fishId) => { const response = await api.get('/fish-friends/export', { params: { fishId }, responseType: 'blob' }) return response.data }