using Fengling.Member.Domain.Aggregates.PointsModel; using Microsoft.EntityFrameworkCore; namespace Fengling.Member.Infrastructure.Repositories; /// /// 积分历史仓储实现 /// public class PointsHistoryRepository : IPointsHistoryRepository { private readonly ApplicationDbContext _context; public PointsHistoryRepository(ApplicationDbContext context) { _context = context; } public async Task ExistsBySourceIdAsync(string sourceId, CancellationToken cancellationToken = default) { return await _context.PointsTransactions .AnyAsync(t => t.SourceId == sourceId, cancellationToken); } public async Task> GetByMemberIdAsync( long memberId, int page = 1, int pageSize = 20, CancellationToken cancellationToken = default) { return await _context.PointsTransactions .Where(t => t.MemberId == memberId) .OrderByDescending(t => t.CreatedAt) .Skip((page - 1) * pageSize) .Take(pageSize) .ToListAsync(cancellationToken); } public async Task CountByMemberIdAsync(long memberId, CancellationToken cancellationToken = default) { return await _context.PointsTransactions .CountAsync(t => t.MemberId == memberId, cancellationToken); } public async Task GetByIdAsync(long id, CancellationToken cancellationToken = default) { return await _context.PointsTransactions.FindAsync(new object[] { id }, cancellationToken); } public async Task AddAsync(PointsTransaction transaction, CancellationToken cancellationToken = default) { _context.PointsTransactions.Add(transaction); await _context.SaveChangesAsync(cancellationToken); } }