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