diff --git a/backend/services/authorization-service/src/domain/repositories/authorization-role.repository.ts b/backend/services/authorization-service/src/domain/repositories/authorization-role.repository.ts index 548fd7fa..e3b0e67d 100644 --- a/backend/services/authorization-service/src/domain/repositories/authorization-role.repository.ts +++ b/backend/services/authorization-service/src/domain/repositories/authorization-role.repository.ts @@ -96,4 +96,24 @@ export interface IAuthorizationRoleRepository { * 根据社区名称查找社区授权(用于社区名称全局唯一性校验) */ findCommunityByName(communityName: string): Promise + + // ============ 审计查询方法 (包含已软删除的记录) ============ + + /** + * 根据用户ID查询所有授权记录(包含已撤销/软删除的记录) + * 用于审计和历史记录查询 + */ + findAllByUserIdIncludeDeleted(userId: UserId): Promise + + /** + * 根据账号序列号查询所有授权记录(包含已撤销/软删除的记录) + * 用于审计和历史记录查询 + */ + findAllByAccountSequenceIncludeDeleted(accountSequence: string): Promise + + /** + * 根据ID查询授权记录(包含已软删除的记录) + * 用于审计和历史记录查询 + */ + findByIdIncludeDeleted(authorizationId: AuthorizationId): Promise } diff --git a/backend/services/authorization-service/src/infrastructure/persistence/repositories/authorization-role.repository.impl.ts b/backend/services/authorization-service/src/infrastructure/persistence/repositories/authorization-role.repository.impl.ts index 037aec79..fa6ef00e 100644 --- a/backend/services/authorization-service/src/infrastructure/persistence/repositories/authorization-role.repository.impl.ts +++ b/backend/services/authorization-service/src/infrastructure/persistence/repositories/authorization-role.repository.impl.ts @@ -422,6 +422,31 @@ export class AuthorizationRoleRepositoryImpl implements IAuthorizationRoleReposi return record ? this.toDomain(record) : null } + // ============ 审计查询方法 (包含已软删除的记录) ============ + + async findAllByUserIdIncludeDeleted(userId: UserId): Promise { + const records = await this.prisma.authorizationRole.findMany({ + where: { userId: userId.value }, + orderBy: { createdAt: 'desc' }, + }) + return records.map((record) => this.toDomain(record)) + } + + async findAllByAccountSequenceIncludeDeleted(accountSequence: string): Promise { + const records = await this.prisma.authorizationRole.findMany({ + where: { accountSequence: accountSequence }, + orderBy: { createdAt: 'desc' }, + }) + return records.map((record) => this.toDomain(record)) + } + + async findByIdIncludeDeleted(authorizationId: AuthorizationId): Promise { + const record = await this.prisma.authorizationRole.findUnique({ + where: { id: authorizationId.value }, + }) + return record ? this.toDomain(record) : null + } + private toDomain(record: any): AuthorizationRole { const props: AuthorizationRoleProps = { authorizationId: AuthorizationId.create(record.id),