diff --git a/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ClaimTenantReviewCommandHandler.cs b/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ClaimTenantReviewCommandHandler.cs index 0f10788..9c662b4 100644 --- a/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ClaimTenantReviewCommandHandler.cs +++ b/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ClaimTenantReviewCommandHandler.cs @@ -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; /// public sealed class ClaimTenantReviewCommandHandler( ITenantRepository tenantRepository, + IIdentityUserRepository identityUserRepository, ICurrentUserAccessor currentUserAccessor, IIdGenerator idGenerator, ILogger 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); diff --git a/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ForceClaimTenantReviewCommandHandler.cs b/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ForceClaimTenantReviewCommandHandler.cs index 8800ffa..ac92e10 100644 --- a/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ForceClaimTenantReviewCommandHandler.cs +++ b/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ForceClaimTenantReviewCommandHandler.cs @@ -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; /// public sealed class ForceClaimTenantReviewCommandHandler( ITenantRepository tenantRepository, + IIdentityUserRepository identityUserRepository, ICurrentUserAccessor currentUserAccessor, IIdGenerator idGenerator, ILogger 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); diff --git a/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ReleaseTenantReviewClaimCommandHandler.cs b/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ReleaseTenantReviewClaimCommandHandler.cs index d14b5b2..2986ca6 100644 --- a/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ReleaseTenantReviewClaimCommandHandler.cs +++ b/src/Application/TakeoutSaaS.Application/App/Tenants/Handlers/ReleaseTenantReviewClaimCommandHandler.cs @@ -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; /// public sealed class ReleaseTenantReviewClaimCommandHandler( ITenantRepository tenantRepository, + IIdentityUserRepository identityUserRepository, ICurrentUserAccessor currentUserAccessor, IIdGenerator idGenerator, ILogger 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);