using TakeoutSaaS.Domain.Tenants.Entities; using TakeoutSaaS.Domain.Tenants.Enums; namespace TakeoutSaaS.Domain.Tenants.Repositories; /// /// 租户公告仓储。 /// public interface ITenantAnnouncementRepository { /// /// 查询公告列表(包含平台公告 TenantId=0),按类型、状态与生效时间筛选。 /// /// 租户 ID。 /// 公告状态。 /// 公告类型。 /// 启用状态。 /// 生效开始时间筛选。 /// 生效结束时间筛选。 /// 生效时间点,为空不限制。 /// 是否按优先级降序和生效时间降序排序,默认 false。 /// 限制返回数量,为空不限制。 /// 取消标记。 /// 公告集合。 Task> SearchAsync( long tenantId, AnnouncementStatus? status, TenantAnnouncementType? type, bool? isActive, DateTime? effectiveFrom, DateTime? effectiveTo, DateTime? effectiveAt, bool orderByPriority = false, int? limit = null, CancellationToken cancellationToken = default); /// /// 按 ID 获取公告(包含平台公告 TenantId=0)。 /// /// 租户 ID。 /// 公告 ID。 /// 取消标记。 /// 公告实体或 null。 Task FindByIdInScopeAsync(long tenantId, long announcementId, CancellationToken cancellationToken = default); /// /// 查询未读公告(包含平台公告 TenantId=0)。 /// /// 租户 ID。 /// 用户 ID。 /// 公告状态。 /// 启用状态。 /// 生效时间点,为空不限制。 /// 取消标记。 /// 未读公告集合。 Task> SearchUnreadAsync( long tenantId, long? userId, AnnouncementStatus? status, bool? isActive, DateTime? effectiveAt, CancellationToken cancellationToken = default); /// /// 按 ID 获取公告。 /// /// 租户 ID。 /// 公告 ID。 /// 取消标记。 /// 公告实体或 null。 Task FindByIdAsync(long tenantId, long announcementId, CancellationToken cancellationToken = default); /// /// 新增公告。 /// /// 公告实体。 /// 取消标记。 /// 异步任务。 Task AddAsync(TenantAnnouncement announcement, CancellationToken cancellationToken = default); /// /// 更新公告。 /// /// 公告实体。 /// 取消标记。 /// 异步任务。 Task UpdateAsync(TenantAnnouncement announcement, CancellationToken cancellationToken = default); /// /// 删除公告。 /// /// 租户 ID。 /// 公告 ID。 /// 取消标记。 /// 异步任务。 Task DeleteAsync(long tenantId, long announcementId, CancellationToken cancellationToken = default); /// /// 保存变更。 /// /// 取消标记。 /// 异步任务。 Task SaveChangesAsync(CancellationToken cancellationToken = default); }