QmsTenantScope.cs 1.1 KB

123456789101112131415161718192021222324252627
  1. namespace Admin.NET.Plugin.AiDOP.Infrastructure;
  2. /// <summary>
  3. /// WP0-D4:qms_* 表 tenant_id 解析(优先入参,其次登录 JWT;无有效租户则抛异常,与 <see cref="AidopTenantScope.ResolveOrThrow"/> 对齐)。
  4. /// </summary>
  5. public static class QmsTenantScope
  6. {
  7. /// <summary>框架默认租户哨兵(仅作常量引用,不作为业务数据归属)。</summary>
  8. public const long DefaultTenantId = 1300000000001L;
  9. public static long Resolve(long? inputTenantId, long? userTenantId = null)
  10. {
  11. if (inputTenantId is > 0) return inputTenantId.Value;
  12. if (userTenantId is > 0) return userTenantId.Value;
  13. throw Oops.Oh("无法确定当前租户,请重新登录或选择目标租户");
  14. }
  15. /// <summary>从当前请求 UserManager 解析租户;无有效租户则抛异常。</summary>
  16. public static long Current()
  17. {
  18. var um = App.GetRequiredService<UserManager>();
  19. return Resolve(null, um.TenantId);
  20. }
  21. /// <summary>优先使用显式入参租户;无效则抛异常。</summary>
  22. public static long Current(long inputTenantId) => Resolve(inputTenantId, null);
  23. }