diff --git a/reading-platform-frontend/src/api/auth.ts b/reading-platform-frontend/src/api/auth.ts index 9f2c983..9731491 100644 --- a/reading-platform-frontend/src/api/auth.ts +++ b/reading-platform-frontend/src/api/auth.ts @@ -6,17 +6,14 @@ export interface LoginParams { role: string; } +// Java 后端返回的平铺结构 export interface LoginResponse { token: string; - user: { - id: number; - name: string; - role: 'admin' | 'school' | 'teacher'; - tenantId?: number; - tenantName?: string; - email?: string; - phone?: string; - }; + userId: number; + username: string; + name: string; + role: 'admin' | 'school' | 'teacher' | 'parent'; + tenantId?: number; } export interface UserProfile { diff --git a/reading-platform-frontend/src/stores/user.ts b/reading-platform-frontend/src/stores/user.ts index fb0c6d9..59d5f22 100644 --- a/reading-platform-frontend/src/stores/user.ts +++ b/reading-platform-frontend/src/stores/user.ts @@ -30,17 +30,24 @@ export const useUserStore = defineStore('user', () => { async function login(account: string, password: string, role: string) { try { const data = await authApi.login({ account, password, role }); + // Java 后端返回平铺结构,转换为前端 User 对象 + const userObj: User = { + id: data.userId, + name: data.name, + role: data.role, + tenantId: data.tenantId, + }; token.value = data.token; - user.value = data.user; + user.value = userObj; localStorage.setItem('token', data.token); - localStorage.setItem('user', JSON.stringify(data.user)); - localStorage.setItem('role', data.user.role); + localStorage.setItem('user', JSON.stringify(userObj)); + localStorage.setItem('role', data.role); message.success('登录成功'); // 跳转到对应首页 - const defaultRoute = `/${data.user.role}/dashboard`; + const defaultRoute = `/${data.role}/dashboard`; router.push(defaultRoute); return data; diff --git a/reading-platform-frontend/vite.config.ts b/reading-platform-frontend/vite.config.ts index 91bfe75..b73468b 100644 --- a/reading-platform-frontend/vite.config.ts +++ b/reading-platform-frontend/vite.config.ts @@ -46,12 +46,11 @@ export default defineConfig({ host: true, proxy: { '/api': { - target: 'http://localhost:3000', + target: 'http://localhost:8080', changeOrigin: true, - rewrite: (path) => path.replace(/^\/api/, '/api'), }, '/uploads': { - target: 'http://localhost:3000', + target: 'http://localhost:8080', changeOrigin: true, }, }, diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java index 0127de0..97ca543 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java @@ -1,5 +1,6 @@ package com.reading.platform.dto.request; +import com.fasterxml.jackson.annotation.JsonAlias; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import lombok.Data; @@ -9,6 +10,7 @@ import lombok.Data; public class LoginRequest { @NotBlank(message = "Username is required") + @JsonAlias("account") @Schema(description = "Username", example = "admin") private String username;