diff --git a/src/shared/api/auth.ts b/src/shared/api/auth.ts index 8369f67..dd76e6b 100644 --- a/src/shared/api/auth.ts +++ b/src/shared/api/auth.ts @@ -232,14 +232,26 @@ export interface SignupResponse { export const signupApi = async (data: SignupRequest): Promise => { try { - const response = await fetch(`/jingrow/signup`, { + // 构建请求数据 + const requestData: any = { + username: data.username, + password: data.password + } + if (data.email) { + requestData.email = data.email + } + if (data.phone_number) { + requestData.phone_number = data.phone_number + } + + const response = await fetch(`/api/action/jcloud.api.account.signup_with_username`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, credentials: 'include', - body: JSON.stringify(data) + body: JSON.stringify(requestData) }) // 先克隆响应,以便可以多次读取(如果需要) @@ -268,21 +280,41 @@ export const signupApi = async (data: SignupRequest): Promise => // 如果响应不成功,提取错误消息 if (!response.ok) { - // FastAPI HTTPException 返回格式: {"detail": "错误消息"} - const errorMsg = result.detail || `注册请求失败 (HTTP ${response.status})` + // 后端可能返回 {"detail": "错误消息"} 或 {"message": {...}} + const errorMsg = result.detail || result.message?.message || result.message || `注册请求失败 (HTTP ${response.status})` return { success: false, error: errorMsg } } + // 后端返回格式:result.message 是一个对象,包含 success 和 message + const messageObj = result.message || result + // 检查业务逻辑错误(success 为 false) - if (result.success === false) { - const errorMsg = result.error || result.message || '注册失败' + if (messageObj.success === false) { + const errorMsg = messageObj.message || result.detail || '注册失败' return { success: false, error: errorMsg } } + // 注册成功后,尝试自动登录并获取用户信息 + let userInfo: UserInfo | undefined = undefined + + try { + // 等待一小段时间让账户创建完成 + await new Promise(resolve => setTimeout(resolve, 300)) + + // 尝试登录 + const loginResponse = await loginApi(data.username, data.password) + if (loginResponse.user) { + userInfo = loginResponse.user + } + } catch (loginError) { + // 登录失败不影响注册成功,只是没有用户信息 + console.warn('注册成功,但自动登录失败:', loginError) + } + return { success: true, - message: result.message || '注册成功', - user: result.user || undefined + message: messageObj.message || '注册成功', + user: userInfo } } catch (error: any) { // 处理网络错误或其他异常