using AutoMapper; using DMS.Core.Interfaces.Repositories; using DMS.Core.Models; using DMS.Infrastructure.Data; using DMS.Infrastructure.Entities; using Microsoft.Extensions.Logging; using SqlSugar; namespace DMS.Infrastructure.Repositories { /// /// 邮件账户仓储实现 /// public class EmailAccountRepository : IEmailAccountRepository { private readonly SqlSugarDbContext _dbContext; protected readonly ILogger _logger; private readonly IMapper _mapper; public EmailAccountRepository(IMapper mapper, SqlSugarDbContext dbContext, ILogger logger) { _mapper = mapper; _dbContext = dbContext; _logger = logger; } /// /// 获取 SqlSugarClient 实例 /// protected SqlSugarClient Db { get { return _dbContext.GetInstance(); } } /// /// 获取默认邮件账户 /// public async Task GetDefaultAccountAsync() { var dbEntity = await Db.Queryable() .Where(e => e.IsDefault && e.IsActive) .FirstAsync(); return dbEntity != null ? _mapper.Map(dbEntity) : null; } /// /// 获取所有启用的邮件账户 /// public async Task> GetActiveAccountsAsync() { var dbEntities = await Db.Queryable() .Where(e => e.IsActive) .ToListAsync(); return _mapper.Map>(dbEntities); } /// /// 异步根据ID获取单个实体。 /// public async Task GetByIdAsync(int id) { var dbEntity = await Db.Queryable() .In(id) .FirstAsync(); return dbEntity != null ? _mapper.Map(dbEntity) : null; } /// /// 异步获取所有实体。 /// public async Task> GetAllAsync() { var dbEntities = await Db.Queryable() .ToListAsync(); return _mapper.Map>(dbEntities); } /// /// 异步添加一个新实体。 /// public async Task AddAsync(EmailAccount entity) { var dbEntity = _mapper.Map(entity); var result = await Db.Insertable(dbEntity) .ExecuteReturnEntityAsync(); return _mapper.Map(result); } /// /// 异步更新一个已存在的实体。 /// public async Task UpdateAsync(EmailAccount entity) { var dbEntity = _mapper.Map(entity); return await Db.Updateable(dbEntity) .ExecuteCommandAsync(); } /// /// 异步根据ID删除一个实体。 /// public async Task DeleteAsync(EmailAccount entity) { var dbEntity = _mapper.Map(entity); return await Db.Deleteable(dbEntity) .ExecuteCommandAsync(); } /// /// 异步根据ID删除一个实体。 /// public async Task DeleteByIdAsync(int id) { return await Db.Deleteable() .In(id) .ExecuteCommandAsync(); } /// /// 异步根据ID列表批量删除实体。 /// public async Task DeleteByIdsAsync(List ids) { return await Db.Deleteable() .In(ids) .ExecuteCommandAsync(); } /// /// 从数据库获取数据。 /// public async Task> TakeAsync(int number) { var dbEntities = await Db.Queryable() .Take(number) .ToListAsync(); return _mapper.Map>(dbEntities); } /// /// 异步批量添加实体。 /// public async Task AddBatchAsync(List entities) { var dbEntities = _mapper.Map>(entities); var result = await Db.Insertable(dbEntities) .ExecuteCommandAsync(); return result > 0; } } }