fix: 审核领取显示用户真实姓名而非 ID
- ClaimTenantReviewCommandHandler 通过 IIdentityUserRepository 查询用户 DisplayName - ForceClaimTenantReviewCommandHandler 同步修改 - ReleaseTenantReviewClaimCommandHandler 同步修改 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user