import axios from 'axios'; import type { User } from '../../share/types.ts'; // 定义API返回数据类型 interface AuthLoginResponse { message: string; token: string; refreshToken?: string; user: User; } interface AuthResponse { message: string; [key: string]: any; } // 定义Auth API接口类型 interface AuthAPIType { login: (username: string, password: string, latitude?: number, longitude?: number) => Promise; register: (username: string, email: string, password: string) => Promise; logout: () => Promise; getCurrentUser: () => Promise; updateUser: (userId: number, userData: Partial) => Promise; changePassword: (oldPassword: string, newPassword: string) => Promise; requestPasswordReset: (email: string) => Promise; resetPassword: (token: string, newPassword: string) => Promise; } // Auth相关API export const AuthAPI: AuthAPIType = { // 登录API login: async (username: string, password: string, latitude?: number, longitude?: number) => { try { const response = await axios.post('/auth/login', { username, password, latitude, longitude }); return response.data; } catch (error) { throw error; } }, // 注册API register: async (username: string, email: string, password: string) => { try { const response = await axios.post('/auth/register', { username, email, password }); return response.data; } catch (error) { throw error; } }, // 登出API logout: async () => { try { const response = await axios.post('/auth/logout'); return response.data; } catch (error) { throw error; } }, // 获取当前用户信息 getCurrentUser: async () => { try { const response = await axios.get('/auth/me'); return response.data; } catch (error) { throw error; } }, // 更新用户信息 updateUser: async (userId: number, userData: Partial) => { try { const response = await axios.put(`/auth/users/${userId}`, userData); return response.data; } catch (error) { throw error; } }, // 修改密码 changePassword: async (oldPassword: string, newPassword: string) => { try { const response = await axios.post('/auth/change-password', { oldPassword, newPassword }); return response.data; } catch (error) { throw error; } }, // 请求重置密码 requestPasswordReset: async (email: string) => { try { const response = await axios.post('/auth/request-password-reset', { email }); return response.data; } catch (error) { throw error; } }, // 重置密码 resetPassword: async (token: string, newPassword: string) => { try { const response = await axios.post('/auth/reset-password', { token, newPassword }); return response.data; } catch (error) { throw error; } } };