QmsTenantScope.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. namespace Admin.NET.Plugin.AiDOP.Infrastructure;
  2. /// <summary>
  3. /// WP0-D4:qms_* 表 tenant_id 解析(优先入参,其次登录租户,最后系统默认)。
  4. /// </summary>
  5. public static class QmsTenantScope
  6. {
  7. public const long DefaultTenantId = 1300000000001L;
  8. public static long Resolve(long? inputTenantId, long? userTenantId = null)
  9. {
  10. if (inputTenantId is > 0) return inputTenantId.Value;
  11. if (userTenantId is > 0) return userTenantId.Value;
  12. return DefaultTenantId;
  13. }
  14. /// <summary>从当前请求 UserManager 解析租户(无登录时回落默认)。无可选参数,可安全用于表达式树外局部变量。</summary>
  15. public static long Current()
  16. {
  17. try
  18. {
  19. var um = App.GetRequiredService<UserManager>();
  20. return Resolve(null, um.TenantId);
  21. }
  22. catch
  23. {
  24. return Resolve(null, null);
  25. }
  26. }
  27. /// <summary>优先使用显式入参租户。</summary>
  28. public static long Current(long inputTenantId) => Resolve(inputTenantId, null);
  29. }