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 EmailTemplateRepository : IEmailTemplateRepository { private readonly SqlSugarDbContext _dbContext; protected readonly ILogger _logger; private readonly IMapper _mapper; public EmailTemplateRepository(IMapper mapper, SqlSugarDbContext dbContext, ILogger logger) { _mapper = mapper; _dbContext = dbContext; _logger = logger; } /// /// 获取 SqlSugarClient 实例 /// protected SqlSugarClient Db { get { return _dbContext.GetInstance(); } } /// /// 异步根据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(EmailTemplate entity) { var dbEntity = _mapper.Map(entity); var result = await Db.Insertable(dbEntity) .ExecuteReturnEntityAsync(); return _mapper.Map(result); } /// /// 异步更新一个已存在的实体。 /// public async Task UpdateAsync(EmailTemplate entity) { var dbEntity = _mapper.Map(entity); return await Db.Updateable(dbEntity) .ExecuteCommandAsync(); } /// /// 异步根据ID删除一个实体。 /// public async Task DeleteAsync(EmailTemplate 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 insertedEntities = new List(); // 使用循环逐个插入实体,这样可以确保返回每个插入的实体 foreach (var entity in dbEntities) { var insertedEntity = await Db.Insertable(entity).ExecuteReturnEntityAsync(); insertedEntities.Add(insertedEntity); } return _mapper.Map>(insertedEntities); } /// /// 根据代码获取邮件模板 /// public async Task GetByCodeAsync(string code) { var dbEntity = await Db.Queryable() .Where(e => e.Code == code && e.IsActive) .FirstAsync(); return dbEntity != null ? _mapper.Map(dbEntity) : null; } /// /// 获取所有启用的邮件模板 /// public async Task> GetActiveTemplatesAsync() { var dbEntities = await Db.Queryable() .Where(e => e.IsActive) .ToListAsync(); return _mapper.Map>(dbEntities); } } }