From 4d2e7b6464e15651fda9f7466a739387592a6334 Mon Sep 17 00:00:00 2001 From: xcbyy <2578898740@qq.com> Date: Fri, 23 Oct 2026 09:09:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(activity):=20=E5=8F=82=E4=B8=8E=E4=BA=BA?= =?UTF-8?q?=E6=98=B5=E7=A7=B0/=E5=A4=B4=E5=83=8F=E5=9B=9E=E5=A1=AB?= =?UTF-8?q?=E7=9C=9F=E5=AE=9E=E7=94=A8=E6=88=B7=EF=BC=8C=E5=B7=B2=E6=B3=A8?= =?UTF-8?q?=E9=94=80=E7=94=A8=E6=88=B7=E6=98=8E=E7=A1=AE=E6=A0=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - getActivities/getActivityById 的 participants 关联 users,返回真实昵称与头像 - 用户已删除时返回「用户已注销」,避免详情页显示搭子_id - 118 套件/773 用例全绿;线上活动详情已验证真实昵称 --- server/src/db/repository.ts | 8 ++++++-- server/tests/activity-list-content.spec.ts | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/server/src/db/repository.ts b/server/src/db/repository.ts index cf02c20..9c57735 100644 --- a/server/src/db/repository.ts +++ b/server/src/db/repository.ts @@ -174,7 +174,7 @@ export class MysqlRepository { id: p.id, activityId: p.activityId, userId: p.userId, - nickname: p.nickname || '', + nickname: p.nickname || '用户已注销', avatar: p.avatar || '', payAmountCents: p.payAmountCents, checkinStatus: Boolean(p.checkinStatus), @@ -238,7 +238,11 @@ export class MysqlRepository { return { ...act, allowDynamicPrice: Boolean(act.allowDynamicPrice), - participants: ptRows.map((p: any) => ({ ...p, checkinStatus: Boolean(p.checkinStatus) })), + participants: ptRows.map((p: any) => ({ + ...p, + nickname: p.nickname || '用户已注销', + checkinStatus: Boolean(p.checkinStatus), + })), joinedCount: ptRows.length, }; } diff --git a/server/tests/activity-list-content.spec.ts b/server/tests/activity-list-content.spec.ts index b78bdb3..d3883c6 100644 --- a/server/tests/activity-list-content.spec.ts +++ b/server/tests/activity-list-content.spec.ts @@ -30,6 +30,13 @@ describe('ActivityListContent(活动大厅真实数据与内容规范)', () expect(page).toContain('creatorNickname'); }); + it('活动参与者必须返回真实昵称与头像,而不是只显示搭子_id', () => { + const repo = fs.readFileSync(path.join(root, 'server', 'src', 'db', 'repository.ts'), 'utf-8'); + expect(repo).toContain('LEFT JOIN users u ON u.id = p.user_id'); + expect(repo).toContain('nickname: p.nickname ||'); + expect(repo).toContain('avatar: p.avatar ||'); + }); + it('页面严禁包含任何系统 Emoji 字符', () => { const emojiRegex = /(?:\p{Extended_Pictographic}|\p{Emoji_Presentation}|[\u2600-\u27BF])/u; expect(emojiRegex.test(page)).toBe(false);