using Microsoft.EntityFrameworkCore; using TakeoutSaaS.Domain.Coupons.Entities; using TakeoutSaaS.Domain.Coupons.Enums; using TakeoutSaaS.Domain.Coupons.Repositories; using TakeoutSaaS.Infrastructure.App.Persistence; namespace TakeoutSaaS.Infrastructure.App.Repositories; /// /// 营销活动仓储 EF Core 实现。 /// public sealed class EfPromotionCampaignRepository(TakeoutAppDbContext context) : IPromotionCampaignRepository { /// public async Task> GetByPromotionTypeAsync( long tenantId, PromotionType promotionType, CancellationToken cancellationToken = default) { return await context.PromotionCampaigns .AsNoTracking() .Where(x => x.TenantId == tenantId && x.PromotionType == promotionType) .OrderByDescending(x => x.UpdatedAt ?? x.CreatedAt) .ThenByDescending(x => x.Id) .ToListAsync(cancellationToken); } /// public Task FindByIdAsync( long campaignId, long tenantId, PromotionType promotionType, CancellationToken cancellationToken = default) { return context.PromotionCampaigns .Where(x => x.TenantId == tenantId && x.PromotionType == promotionType && x.Id == campaignId) .FirstOrDefaultAsync(cancellationToken); } /// public Task AddAsync(PromotionCampaign campaign, CancellationToken cancellationToken = default) { return context.PromotionCampaigns.AddAsync(campaign, cancellationToken).AsTask(); } /// public Task UpdateAsync(PromotionCampaign campaign, CancellationToken cancellationToken = default) { context.PromotionCampaigns.Update(campaign); return Task.CompletedTask; } /// public Task DeleteAsync(PromotionCampaign campaign, CancellationToken cancellationToken = default) { context.PromotionCampaigns.Remove(campaign); return Task.CompletedTask; } /// public Task SaveChangesAsync(CancellationToken cancellationToken = default) { return context.SaveChangesAsync(cancellationToken); } }