From e9a64a816372c9bb0f52df2c6ca5713d75826a02 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 24 Dec 2025 00:46:45 -0800 Subject: [PATCH] =?UTF-8?q?fix(identity):=20=E4=BD=BF=E7=94=A8Prisma?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7=E8=AF=A6?= =?UTF-8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getUserDetailBySequence 方法改用 Prisma 直接查询数据库, 以获取 email 和 realName 等领域模型中未暴露的字段。 之前的实现通过领域模型 UserAccount 访问这些字段会导致编译错误, 因为领域模型没有直接暴露这些属性。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/api/controllers/internal.controller.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/backend/services/identity-service/src/api/controllers/internal.controller.ts b/backend/services/identity-service/src/api/controllers/internal.controller.ts index df1eca24..1f82a56f 100644 --- a/backend/services/identity-service/src/api/controllers/internal.controller.ts +++ b/backend/services/identity-service/src/api/controllers/internal.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiProperty } from '@nestjs/swagger import { IsArray, IsString } from 'class-validator'; import { Public } from '@/shared/guards/jwt-auth.guard'; import { UserAccountRepositoryImpl } from '@/infrastructure/persistence/repositories/user-account.repository.impl'; +import { PrismaService } from '@/infrastructure/persistence/prisma/prisma.service'; import { AccountSequence } from '@/domain/value-objects'; /** @@ -52,6 +53,7 @@ export class InternalController { constructor( private readonly userRepository: UserAccountRepositoryImpl, + private readonly prisma: PrismaService, ) {} @Public() @@ -119,22 +121,24 @@ export class InternalController { this.logger.debug(`[getUserDetailBySequence] 查询用户详情: ${accountSequence}`); try { - const sequence = AccountSequence.create(accountSequence); - const user = await this.userRepository.findByAccountSequence(sequence); + // 直接使用 Prisma 查询以获取所有字段(包括 email、realName 等领域模型中未暴露的字段) + const user = await this.prisma.userAccount.findUnique({ + where: { accountSequence }, + }); if (!user) { return null; } return { - userId: user.userId.value.toString(), - accountSequence: user.accountSequence.value, + userId: user.userId.toString(), + accountSequence: user.accountSequence, nickname: user.nickname, avatarUrl: user.avatarUrl || undefined, - phoneNumber: user.phoneNumber?.value || undefined, + phoneNumber: user.phoneNumber || undefined, email: user.email || undefined, registeredAt: user.registeredAt.toISOString(), - inviterSequence: user.inviterSequence?.value || undefined, + inviterSequence: user.inviterSequence || undefined, kycStatus: user.kycStatus, realName: user.realName || undefined, };