using TakeoutSaaS.Domain.Tenants.Entities; using TakeoutSaaS.Domain.Tenants.Enums; namespace TakeoutSaaS.Domain.Tenants.Repositories; /// /// 租户聚合仓储。 /// public interface ITenantRepository { /// /// 依据 ID 获取租户。 /// /// 租户 ID(雪花算法)。 /// 取消标记。 /// 租户实体,未找到返回 null。 Task FindByIdAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 按状态与关键词查询租户列表。 /// /// 租户状态,为空不按状态过滤。 /// 名称或编码关键字,为空不按关键字过滤。 /// 取消标记。 /// 符合条件的租户列表。 Task> SearchAsync( TenantStatus? status, string? keyword, CancellationToken cancellationToken = default); /// /// 分页查询租户(支持多条件过滤)。 /// /// 租户状态,为空不按状态过滤。 /// 实名认证状态,为空不按认证状态过滤。 /// 租户名称,为空不按名称过滤。 /// 联系人姓名,为空不按联系人过滤。 /// 联系电话,为空不按电话过滤。 /// 兼容关键词:名称/编码/联系人/电话,为空不按关键字过滤。 /// 页码(从 1 开始)。 /// 每页大小。 /// 取消标记。 /// 分页数据与总数。 Task<(IReadOnlyList Items, int Total)> SearchPagedAsync( TenantStatus? status, TenantVerificationStatus? verificationStatus, string? name, string? contactName, string? contactPhone, string? keyword, int page, int pageSize, CancellationToken cancellationToken = default); /// /// 新增租户。 /// /// 租户实体。 /// 取消标记。 /// 异步任务。 Task AddTenantAsync(Tenant tenant, CancellationToken cancellationToken = default); /// /// 更新租户。 /// /// 租户实体。 /// 取消标记。 /// 异步任务。 Task UpdateTenantAsync(Tenant tenant, CancellationToken cancellationToken = default); /// /// 判断编码是否存在。 /// /// 租户编码。 /// 取消标记。 /// 存在返回 true,否则 false。 Task ExistsByCodeAsync(string code, CancellationToken cancellationToken = default); /// /// 判断联系人手机号是否存在。 /// /// 联系人手机号。 /// 取消标记。 /// 存在返回 true,否则 false。 Task ExistsByContactPhoneAsync(string phone, CancellationToken cancellationToken = default); /// /// 依据联系人手机号查询租户 ID。 /// /// 联系人手机号。 /// 取消标记。 /// 租户 ID,未找到返回 null。 Task FindTenantIdByContactPhoneAsync(string phone, CancellationToken cancellationToken = default); /// /// 获取实名资料。 /// /// 租户 ID(雪花算法)。 /// 取消标记。 /// 实名资料实体,未提交返回 null。 Task GetVerificationProfileAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 批量获取实名资料。 /// /// 租户 ID 列表。 /// 取消标记。 /// 实名资料列表(未提交的不返回)。 Task> GetVerificationProfilesAsync( IReadOnlyCollection tenantIds, CancellationToken cancellationToken = default); /// /// 新增或更新实名资料。 /// /// 实名资料实体。 /// 取消标记。 /// 异步任务。 Task UpsertVerificationProfileAsync(TenantVerificationProfile profile, CancellationToken cancellationToken = default); /// /// 获取当前订阅。 /// /// 租户 ID(雪花算法)。 /// 取消标记。 /// 当前有效订阅,若无则 null。 Task GetActiveSubscriptionAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 批量获取当前订阅。 /// /// 租户 ID 列表。 /// 取消标记。 /// 订阅列表(可能包含同一租户的多条订阅记录)。 Task> GetSubscriptionsAsync( IReadOnlyCollection tenantIds, CancellationToken cancellationToken = default); /// /// 依据订阅 ID 查询。 /// /// 租户 ID(雪花算法)。 /// 订阅 ID(雪花算法)。 /// 取消标记。 /// 订阅实体,未找到返回 null。 Task FindSubscriptionByIdAsync(long tenantId, long subscriptionId, CancellationToken cancellationToken = default); /// /// 新增订阅。 /// /// 订阅实体。 /// 取消标记。 /// 异步任务。 Task AddSubscriptionAsync(TenantSubscription subscription, CancellationToken cancellationToken = default); /// /// 更新订阅。 /// /// 订阅实体。 /// 取消标记。 /// 异步任务。 Task UpdateSubscriptionAsync(TenantSubscription subscription, CancellationToken cancellationToken = default); /// /// 记录订阅历史。 /// /// 订阅历史实体。 /// 取消标记。 /// 异步任务。 Task AddSubscriptionHistoryAsync(TenantSubscriptionHistory history, CancellationToken cancellationToken = default); /// /// 获取订阅历史。 /// /// 租户 ID(雪花算法)。 /// 取消标记。 /// 订阅历史列表。 Task> GetSubscriptionHistoryAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 新增审核日志。 /// /// 审核日志实体。 /// 取消标记。 /// 异步任务。 Task AddAuditLogAsync(TenantAuditLog log, CancellationToken cancellationToken = default); /// /// 查询审核日志。 /// /// 租户 ID(雪花算法)。 /// 取消标记。 /// 审核日志列表。 Task> GetAuditLogsAsync(long tenantId, CancellationToken cancellationToken = default); /// /// 持久化。 /// /// 取消标记。 /// 异步任务。 Task SaveChangesAsync(CancellationToken cancellationToken = default); }