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 { 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,
};