From 623faf8c55f060a2c6d74cb4299bab2227330a4f Mon Sep 17 00:00:00 2001 From: ZhenYi <434836402@qq.com> Date: Wed, 22 Apr 2026 20:53:02 +0800 Subject: [PATCH] fix(admin): project_members use project_uuid/user_uuid column names not SeaORM field names --- .../projects/[id]/members/[memberId]/route.ts | 10 +++++----- .../app/api/admin/projects/[id]/members/route.ts | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/admin/src/app/api/admin/projects/[id]/members/[memberId]/route.ts b/admin/src/app/api/admin/projects/[id]/members/[memberId]/route.ts index d602508..321cdcb 100644 --- a/admin/src/app/api/admin/projects/[id]/members/[memberId]/route.ts +++ b/admin/src/app/api/admin/projects/[id]/members/[memberId]/route.ts @@ -20,8 +20,8 @@ export async function PATCH( return NextResponse.json({ error: "无效的角色" }, { status: 400 }); } - const member = await query<{ id: string; scope: string; user: string }>( - `SELECT id, scope, user FROM project_members WHERE id = $1 AND project = $2`, + const member = await query<{ id: string; scope: string; user_uuid: string }>( + `SELECT id, scope, user_uuid FROM project_members WHERE id = $1 AND project_uuid = $2`, [memberId, id] ); if (!member.rows.length) { @@ -64,8 +64,8 @@ export async function DELETE( const adminUserId = parseInt(req.headers.get("x-admin-user-id") || "0", 10); const adminUsername = req.headers.get("x-admin-username") || "unknown"; - const member = await query<{ id: string; scope: string; user: string }>( - `SELECT id, scope, user FROM project_members WHERE id = $1 AND project = $2`, + const member = await query<{ id: string; scope: string; user_uuid: string }>( + `SELECT id, scope, user_uuid FROM project_members WHERE id = $1 AND project_uuid = $2`, [memberId, id] ); if (!member.rows.length) { @@ -83,7 +83,7 @@ export async function DELETE( action: "delete", resource: "project_member", resourceId: memberId, - requestParams: { projectId: id, userId: member.rows[0].user }, + requestParams: { projectId: id, userId: member.rows[0].user_uuid }, ipAddress: req.headers.get("x-forwarded-for") || undefined, userAgent: req.headers.get("user-agent") || undefined, }); diff --git a/admin/src/app/api/admin/projects/[id]/members/route.ts b/admin/src/app/api/admin/projects/[id]/members/route.ts index 5145e91..f23abe5 100644 --- a/admin/src/app/api/admin/projects/[id]/members/route.ts +++ b/admin/src/app/api/admin/projects/[id]/members/route.ts @@ -13,21 +13,21 @@ export async function GET( const { id } = await params; const result = await query( - `SELECT pm.id, pm.project, pm.user, pm.scope, pm.joined_at::text, + `SELECT pm.id, pm.project_uuid, pm.user_uuid, pm.scope, pm.joined_at::text, u.username, u.display_name, u.avatar_url, COALESCE(up.is_active, true) as user_is_active FROM project_members pm - JOIN "user" u ON u.uid = pm.user + JOIN "user" u ON u.uid = pm.user_uuid LEFT JOIN user_password up ON up.user = u.uid - WHERE pm.project = $1 + WHERE pm.project_uuid = $1 ORDER BY pm.scope = 'owner' DESC, pm.scope = 'admin' DESC, pm.joined_at ASC`, [id] ); const members = result.rows.map((r: Record) => ({ id: r.id, - projectId: r.project, - userId: r.user, + projectId: r.project_uuid, + userId: r.user_uuid, scope: r.scope, joinedAt: r.joined_at, username: r.username, @@ -81,7 +81,7 @@ export async function POST( // 检查是否已是成员 const exist = await query( - `SELECT id FROM project_members WHERE project = $1 AND user = $2`, + `SELECT id FROM project_members WHERE project_uuid = $1 AND user_uuid = $2`, [id, body.userId] ); if (exist.rows.length) { @@ -89,7 +89,7 @@ export async function POST( } const result = await query( - `INSERT INTO project_members (project, user, scope, joined_at) + `INSERT INTO project_members (project_uuid, user_uuid, scope, joined_at) VALUES ($1, $2, $3, NOW()) RETURNING id`, [id, body.userId, scope]