39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
namespace TakeoutSaaS.Shared.Abstractions.Tenancy;
|
||
|
||
/// <summary>
|
||
/// 租户上下文:封装当前请求解析得到的租户标识、编号及解析来源。
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 初始化租户上下文。
|
||
/// </remarks>
|
||
/// <param name="tenantId">租户 ID</param>
|
||
/// <param name="tenantCode">租户编码(可选)</param>
|
||
/// <param name="source">解析来源</param>
|
||
public sealed class TenantContext(long tenantId, string? tenantCode, string source)
|
||
{
|
||
/// <summary>
|
||
/// 未解析到租户时的默认上下文。
|
||
/// </summary>
|
||
public static TenantContext Empty { get; } = new(0, null, "unresolved");
|
||
|
||
/// <summary>
|
||
/// 当前租户 ID,未解析时为 Guid.Empty。
|
||
/// </summary>
|
||
public long TenantId { get; } = tenantId;
|
||
|
||
/// <summary>
|
||
/// 当前租户编码(例如子域名或业务编码),可为空。
|
||
/// </summary>
|
||
public string? TenantCode { get; } = tenantCode;
|
||
|
||
/// <summary>
|
||
/// 租户解析来源(Header、Host、Token 等)。
|
||
/// </summary>
|
||
public string Source { get; } = source;
|
||
|
||
/// <summary>
|
||
/// 是否已成功解析到租户。
|
||
/// </summary>
|
||
public bool IsResolved => TenantId != 0;
|
||
}
|