feat: 新增租户上下文作用域扩展

This commit is contained in:
root
2026-01-30 01:03:59 +00:00
parent bcf0a6bd7d
commit 5b07973a39

View File

@@ -0,0 +1,34 @@
namespace TakeoutSaaS.Shared.Abstractions.Tenancy;
/// <summary>
/// <see cref="ITenantContextAccessor"/> 扩展方法。
/// </summary>
public static class TenantContextAccessorExtensions
{
/// <summary>
/// 进入指定租户上下文作用域,释放后自动恢复之前的上下文。
/// </summary>
/// <param name="accessor">租户上下文访问器。</param>
/// <param name="tenantId">租户 ID。</param>
/// <param name="source">上下文来源标识(例如 scheduler、seed、admin。</param>
/// <param name="tenantCode">租户编码(可选)。</param>
/// <returns>作用域对象。</returns>
public static IDisposable EnterTenantScope(
this ITenantContextAccessor accessor,
long tenantId,
string source,
string? tenantCode = null)
{
var previous = accessor.Current;
accessor.Current = new TenantContext(tenantId, tenantCode, source);
return new TenantContextScope(accessor, previous);
}
private sealed class TenantContextScope(ITenantContextAccessor accessor, TenantContext? previous) : IDisposable
{
public void Dispose()
{
accessor.Current = previous;
}
}
}