fix(identity): 使用Prisma直接查询用户详情

getUserDetailBySequence 方法改用 Prisma 直接查询数据库,
以获取 email 和 realName 等领域模型中未暴露的字段。

之前的实现通过领域模型 UserAccount 访问这些字段会导致编译错误,
因为领域模型没有直接暴露这些属性。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-24 00:46:45 -08:00
parent 93f6a53bdb
commit e9a64a8163
1 changed files with 10 additions and 6 deletions

View File

@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiProperty } from '@nestjs/swagger
import { IsArray, IsString } from 'class-validator'; import { IsArray, IsString } from 'class-validator';
import { Public } from '@/shared/guards/jwt-auth.guard'; import { Public } from '@/shared/guards/jwt-auth.guard';
import { UserAccountRepositoryImpl } from '@/infrastructure/persistence/repositories/user-account.repository.impl'; import { UserAccountRepositoryImpl } from '@/infrastructure/persistence/repositories/user-account.repository.impl';
import { PrismaService } from '@/infrastructure/persistence/prisma/prisma.service';
import { AccountSequence } from '@/domain/value-objects'; import { AccountSequence } from '@/domain/value-objects';
/** /**
@ -52,6 +53,7 @@ export class InternalController {
constructor( constructor(
private readonly userRepository: UserAccountRepositoryImpl, private readonly userRepository: UserAccountRepositoryImpl,
private readonly prisma: PrismaService,
) {} ) {}
@Public() @Public()
@ -119,22 +121,24 @@ export class InternalController {
this.logger.debug(`[getUserDetailBySequence] 查询用户详情: ${accountSequence}`); this.logger.debug(`[getUserDetailBySequence] 查询用户详情: ${accountSequence}`);
try { try {
const sequence = AccountSequence.create(accountSequence); // 直接使用 Prisma 查询以获取所有字段(包括 email、realName 等领域模型中未暴露的字段)
const user = await this.userRepository.findByAccountSequence(sequence); const user = await this.prisma.userAccount.findUnique({
where: { accountSequence },
});
if (!user) { if (!user) {
return null; return null;
} }
return { return {
userId: user.userId.value.toString(), userId: user.userId.toString(),
accountSequence: user.accountSequence.value, accountSequence: user.accountSequence,
nickname: user.nickname, nickname: user.nickname,
avatarUrl: user.avatarUrl || undefined, avatarUrl: user.avatarUrl || undefined,
phoneNumber: user.phoneNumber?.value || undefined, phoneNumber: user.phoneNumber || undefined,
email: user.email || undefined, email: user.email || undefined,
registeredAt: user.registeredAt.toISOString(), registeredAt: user.registeredAt.toISOString(),
inviterSequence: user.inviterSequence?.value || undefined, inviterSequence: user.inviterSequence || undefined,
kycStatus: user.kycStatus, kycStatus: user.kycStatus,
realName: user.realName || undefined, realName: user.realName || undefined,
}; };