// 认证模块 API import { post } from './request' import { setToken, setRefreshToken, clearTokens, ApiResponse } from './config' import type { User } from '../types' export interface LoginRequest { phone: string password?: string // 密码登录 code?: string // 验证码登录 } export interface RegisterRequest { phone: string password: string code: string } // 后端实际返回的响应结构 export interface AuthResponse { token: string // JWT Token 直接字符串 user_id: number nickname: string avatar: string survey_completed: boolean } // 发送验证码 export async function sendCode(phone: string, type: 'login' | 'register' = 'login') { return post('/auth/send-code', { phone, type }) } // 用户登录(支持密码或验证码) export async function login(data: LoginRequest): Promise> { // 如果只传了code,将code作为password发送(验证码登录模式) const loginData = { phone: data.phone, password: data.password || data.code, // 验证码登录时,code作为password } console.log('[Login] 请求数据:', JSON.stringify(loginData)) const result = await post('/auth/login', loginData) console.log('[Login] 响应结果:', JSON.stringify(result)) // 后端直接返回 token 字符串,不是对象 if (result.code === 0 && result.data?.token) { console.log('[Login] 准备保存Token:', result.data.token.substring(0, 30) + '...') await setToken(result.data.token) console.log('[Login] Token已保存') } return result } // 用户注册 export async function register(data: RegisterRequest): Promise> { const result = await post('/auth/register', data) // 后端直接返回 token 字符串 if (result.code === 0 && result.data?.token) { await setToken(result.data.token) } return result } // 退出登录 export async function logout() { await clearTokens() }