using TakeoutSaaS.Domain.Billings.Entities; using TakeoutSaaS.Domain.Tenants.Entities; namespace TakeoutSaaS.Domain.Tenants.Repositories; /// /// 租户只读仓储(AdminApi 使用)。 /// public interface ITenantRepository { /// /// 依据 ID 获取租户。 /// /// 租户 ID(雪花算法)。 /// 取消标记。 /// 租户实体,未找到返回 null。 Task FindByIdAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 批量获取租户。 /// /// 租户 ID 列表。 /// 取消标记。 /// 租户列表(仅返回找到的租户)。 Task> FindByIdsAsync(IReadOnlyCollection tenantIds, CancellationToken cancellationToken = default); /// /// 获取所有租户列表(用于下拉选择器)。 /// /// 关键字(租户名称/编码)。 /// 取消标记。 /// 租户列表。 Task> GetAllAsync(string? keyword, CancellationToken cancellationToken = default); /// /// 获取租户详情(包含认证、订阅、套餐信息)。 /// /// 租户 ID。 /// 取消标记。 /// 租户详情元组,未找到返回 null。 Task GetDetailAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 获取租户配额使用情况列表。 /// /// 租户 ID。 /// 取消标记。 /// 配额使用情况列表。 Task> GetQuotaUsagesAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 获取租户账单列表(分页)。 /// /// 租户 ID。 /// 页码(从 1 开始)。 /// 每页条数。 /// 取消标记。 /// 账单列表和总数。 Task<(IReadOnlyList Items, int TotalCount)> GetBillingsAsync( long tenantId, int page, int pageSize, CancellationToken cancellationToken = default); } /// /// 租户详情查询结果。 /// public sealed record TenantDetailResult( Tenant Tenant, TenantVerificationProfile? Verification, TenantSubscription? Subscription, TenantPackage? Package);