fix: 审核领取显示用户真实姓名而非 ID

- ClaimTenantReviewCommandHandler 通过 IIdentityUserRepository 查询用户 DisplayName
- ForceClaimTenantReviewCommandHandler 同步修改
- ReleaseTenantReviewClaimCommandHandler 同步修改

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
MSuMshk
2026-02-02 20:54:14 +08:00
parent abeb352b04
commit cfb20ca0d7
3 changed files with 37 additions and 17 deletions

View File

@@ -2,6 +2,7 @@ using MediatR;
using Microsoft.Extensions.Logging;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Contracts;
using TakeoutSaaS.Domain.Identity.Repositories;
using TakeoutSaaS.Domain.Tenants.Entities;
using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Domain.Tenants.Repositories;
@@ -17,6 +18,7 @@ namespace TakeoutSaaS.Application.App.Tenants.Handlers;
/// </summary>
public sealed class ClaimTenantReviewCommandHandler(
ITenantRepository tenantRepository,
IIdentityUserRepository identityUserRepository,
ICurrentUserAccessor currentUserAccessor,
IIdGenerator idGenerator,
ILogger<ClaimTenantReviewCommandHandler> logger)
@@ -54,9 +56,14 @@ public sealed class ClaimTenantReviewCommandHandler(
// 6. 创建新的领取记录
var now = DateTime.UtcNow;
var actorName = currentUserAccessor.IsAuthenticated
? $"user:{currentUserAccessor.UserId}"
: "system";
// 7. 查询当前用户的显示名称
var actorName = "system";
if (currentUserAccessor.IsAuthenticated && currentUserAccessor.UserId != 0)
{
var user = await identityUserRepository.FindByIdAsync(currentUserAccessor.UserId, cancellationToken);
actorName = user?.DisplayName ?? $"用户{currentUserAccessor.UserId}";
}
var claim = new TenantReviewClaim
{
@@ -67,10 +74,10 @@ public sealed class ClaimTenantReviewCommandHandler(
ClaimedAt = now
};
// 7. 保存领取记录
// 8. 保存领取记录
await tenantRepository.AddReviewClaimAsync(claim, cancellationToken);
// 8. 添加审核日志
// 9. 添加审核日志
await tenantRepository.AddAuditLogAsync(new TenantAuditLog
{
Id = idGenerator.NextId(),
@@ -83,7 +90,7 @@ public sealed class ClaimTenantReviewCommandHandler(
CurrentStatus = tenant.Status
}, cancellationToken);
// 9. 保存变更
// 10. 保存变更
await tenantRepository.SaveChangesAsync(cancellationToken);
logger.LogInformation("租户 {TenantId} 审核已被 {UserId} 领取", request.TenantId, currentUserAccessor.UserId);

View File

@@ -2,6 +2,7 @@ using MediatR;
using Microsoft.Extensions.Logging;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Contracts;
using TakeoutSaaS.Domain.Identity.Repositories;
using TakeoutSaaS.Domain.Tenants.Entities;
using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Domain.Tenants.Repositories;
@@ -17,6 +18,7 @@ namespace TakeoutSaaS.Application.App.Tenants.Handlers;
/// </summary>
public sealed class ForceClaimTenantReviewCommandHandler(
ITenantRepository tenantRepository,
IIdentityUserRepository identityUserRepository,
ICurrentUserAccessor currentUserAccessor,
IIdGenerator idGenerator,
ILogger<ForceClaimTenantReviewCommandHandler> logger)
@@ -47,9 +49,14 @@ public sealed class ForceClaimTenantReviewCommandHandler(
// 4. 创建新的领取记录
var now = DateTime.UtcNow;
var actorName = currentUserAccessor.IsAuthenticated
? $"user:{currentUserAccessor.UserId}"
: "system";
// 5. 查询当前用户的显示名称
var actorName = "system";
if (currentUserAccessor.IsAuthenticated && currentUserAccessor.UserId != 0)
{
var user = await identityUserRepository.FindByIdAsync(currentUserAccessor.UserId, cancellationToken);
actorName = user?.DisplayName ?? $"用户{currentUserAccessor.UserId}";
}
var claim = new TenantReviewClaim
{
@@ -60,10 +67,10 @@ public sealed class ForceClaimTenantReviewCommandHandler(
ClaimedAt = now
};
// 5. 保存领取记录
// 6. 保存领取记录
await tenantRepository.AddReviewClaimAsync(claim, cancellationToken);
// 6. 添加审核日志
// 7. 添加审核日志
var previousClaimInfo = existingClaim is not null ? $",原领取人:{existingClaim.ClaimedByName}" : "";
await tenantRepository.AddAuditLogAsync(new TenantAuditLog
{
@@ -77,7 +84,7 @@ public sealed class ForceClaimTenantReviewCommandHandler(
CurrentStatus = tenant.Status
}, cancellationToken);
// 7. 保存变更
// 8. 保存变更
await tenantRepository.SaveChangesAsync(cancellationToken);
logger.LogInformation("租户 {TenantId} 审核已被 {UserId} 强制接管", request.TenantId, currentUserAccessor.UserId);

View File

@@ -1,6 +1,7 @@
using MediatR;
using Microsoft.Extensions.Logging;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Domain.Identity.Repositories;
using TakeoutSaaS.Domain.Tenants.Entities;
using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Domain.Tenants.Repositories;
@@ -16,6 +17,7 @@ namespace TakeoutSaaS.Application.App.Tenants.Handlers;
/// </summary>
public sealed class ReleaseTenantReviewClaimCommandHandler(
ITenantRepository tenantRepository,
IIdentityUserRepository identityUserRepository,
ICurrentUserAccessor currentUserAccessor,
IIdGenerator idGenerator,
ILogger<ReleaseTenantReviewClaimCommandHandler> logger)
@@ -47,11 +49,15 @@ public sealed class ReleaseTenantReviewClaimCommandHandler(
// 4. 释放领取
existingClaim.ReleasedAt = DateTime.UtcNow;
// 5. 添加审核日志
var actorName = currentUserAccessor.IsAuthenticated
? $"user:{currentUserAccessor.UserId}"
: "system";
// 5. 查询当前用户的显示名称
var actorName = "system";
if (currentUserAccessor.IsAuthenticated && currentUserAccessor.UserId != 0)
{
var user = await identityUserRepository.FindByIdAsync(currentUserAccessor.UserId, cancellationToken);
actorName = user?.DisplayName ?? $"用户{currentUserAccessor.UserId}";
}
// 6. 添加审核日志
await tenantRepository.AddAuditLogAsync(new TenantAuditLog
{
Id = idGenerator.NextId(),
@@ -64,7 +70,7 @@ public sealed class ReleaseTenantReviewClaimCommandHandler(
CurrentStatus = tenant.Status
}, cancellationToken);
// 6. 保存变更
// 7. 保存变更
await tenantRepository.SaveChangesAsync(cancellationToken);
logger.LogInformation("租户 {TenantId} 审核已被 {UserId} 释放", request.TenantId, currentUserAccessor.UserId);