From 995e18d3993c852cbb2fa5b87cfc01e363879974 Mon Sep 17 00:00:00 2001 From: tonytech Date: Tue, 3 Mar 2026 14:19:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(frontend):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=BC=80=E5=8F=91=E4=BB=A3=E7=90=86=E6=8C=87?= =?UTF-8?q?=E5=90=91=20Java=20=E5=90=8E=E7=AB=AF=E7=AB=AF=E5=8F=A3=208080?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reading-platform-frontend/vite.config.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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, }, }, From 30677a7c028a8cf44bbe94dd1752daf7b1132602 Mon Sep 17 00:00:00 2001 From: tonytech Date: Tue, 3 Mar 2026 14:21:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(auth):=20=E7=99=BB=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=90=8C=E6=97=B6=E6=8E=A5=E5=8F=97=20account=20?= =?UTF-8?q?=E5=92=8C=20username=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/reading/platform/dto/request/LoginRequest.java | 2 ++ 1 file changed, 2 insertions(+) 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; From 71d88193614be257c59551ae67e315d1f64f40c5 Mon Sep 17 00:00:00 2001 From: tonytech Date: Tue, 3 Mar 2026 14:24:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(frontend):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=93=8D=E5=BA=94=E5=AD=97=E6=AE=B5=E6=98=A0?= =?UTF-8?q?=E5=B0=84=EF=BC=8C=E9=80=82=E9=85=8D=20Java=20=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E5=B9=B3=E9=93=BA=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reading-platform-frontend/src/api/auth.ts | 15 ++++++--------- reading-platform-frontend/src/stores/user.ts | 15 +++++++++++---- 2 files changed, 17 insertions(+), 13 deletions(-) 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;