using TakeoutSaaS.Domain.Coupons.Entities; namespace TakeoutSaaS.Domain.Coupons.Repositories; /// /// 新客有礼仓储契约。 /// public interface INewCustomerGiftRepository { /// /// 查询门店配置。 /// Task FindSettingByStoreIdAsync( long tenantId, long storeId, CancellationToken cancellationToken = default); /// /// 新增门店配置。 /// Task AddSettingAsync(NewCustomerGiftSetting entity, CancellationToken cancellationToken = default); /// /// 更新门店配置。 /// Task UpdateSettingAsync(NewCustomerGiftSetting entity, CancellationToken cancellationToken = default); /// /// 查询门店全部券规则。 /// Task> GetCouponRulesByStoreIdAsync( long tenantId, long storeId, CancellationToken cancellationToken = default); /// /// 替换门店券规则集合。 /// Task ReplaceCouponRulesAsync( long tenantId, long storeId, IReadOnlyCollection entities, CancellationToken cancellationToken = default); /// /// 分页查询邀请记录。 /// Task<(IReadOnlyList Items, int TotalCount)> GetInviteRecordsAsync( long tenantId, long storeId, int page, int pageSize, CancellationToken cancellationToken = default); /// /// 新增邀请记录。 /// Task AddInviteRecordAsync(NewCustomerInviteRecord entity, CancellationToken cancellationToken = default); /// /// 按业务键查询成长记录。 /// Task FindGrowthRecordByCustomerKeyAsync( long tenantId, long storeId, string customerKey, CancellationToken cancellationToken = default); /// /// 新增成长记录。 /// Task AddGrowthRecordAsync(NewCustomerGrowthRecord entity, CancellationToken cancellationToken = default); /// /// 更新成长记录。 /// Task UpdateGrowthRecordAsync(NewCustomerGrowthRecord entity, CancellationToken cancellationToken = default); /// /// 统计时间范围内注册新客数。 /// Task CountRegisteredCustomersAsync( long tenantId, long storeId, DateTime startAt, DateTime endAt, CancellationToken cancellationToken = default); /// /// 统计时间范围内礼包已领取数。 /// Task CountGiftClaimedCustomersAsync( long tenantId, long storeId, DateTime startAt, DateTime endAt, CancellationToken cancellationToken = default); /// /// 统计时间范围内首单完成数。 /// Task CountFirstOrderedCustomersAsync( long tenantId, long storeId, DateTime startAt, DateTime endAt, CancellationToken cancellationToken = default); /// /// 持久化变更。 /// Task SaveChangesAsync(CancellationToken cancellationToken = default); }