using QYZH.InteractiveMagazine.Models.Dto; using SqlSugar; using System.Linq.Expressions; namespace QYZH.InteractiveMagazine.Repository; /// /// 基础仓储实现 /// /// 实体类型 public class BaseRepository : IBaseRepository where T : class, new() { /// /// SqlSugar 数据库实例 /// protected SqlSugarClient Db => SqlSugarDbContext.GetDb(); /// /// 根据Id获取实体(自动过滤已删除数据) /// /// 主键Id /// 实体对象 public async Task GetByIdAsync(long id) { return await Db.Queryable().In(id).FirstAsync(); } /// /// 获取所有列表(自动过滤已删除数据) /// /// 实体列表 public async Task> GetListAsync() { return await Db.Queryable().ToListAsync(); } /// /// 根据条件获取列表(自动过滤已删除数据) /// /// 查询条件 /// 实体列表 public async Task> GetListByWhereAsync(Expression> where) { return await Db.Queryable().Where(where).ToListAsync(); } /// /// 分页查询(自动过滤已删除数据) /// /// 查询条件 /// 分页参数 /// 分页结果 public async Task> GetPageListAsync(Expression> where, PageQueryModel pageQuery) { RefAsync total = 0; var query = Db.Queryable().Where(where); // 处理排序 if (!string.IsNullOrEmpty(pageQuery.SortField)) { var isAsc = string.IsNullOrEmpty(pageQuery.SortOrder) || pageQuery.SortOrder.ToLower() == "asc"; query = isAsc ? query.OrderBy($"{pageQuery.SortField} asc") : query.OrderBy($"{pageQuery.SortField} desc"); } var list = await query.ToPageListAsync(pageQuery.PageIndex, pageQuery.PageSize, total); return new PageListModel { PageIndex = pageQuery.PageIndex, PageSize = pageQuery.PageSize, TotalCount = total, List = list }; } /// /// 插入单条记录 /// /// 实体对象 /// 是否成功 public async Task InsertAsync(T entity) { return await Db.Insertable(entity).ExecuteCommandAsync() > 0; } /// /// 批量插入记录 /// /// 实体列表 /// 是否成功 public async Task InsertRangeAsync(List entities) { return await Db.Insertable(entities).ExecuteCommandAsync() > 0; } /// /// 更新单条记录 /// /// 实体对象 /// 是否成功 public async Task UpdateAsync(T entity) { return await Db.Updateable(entity).ExecuteCommandAsync() > 0; } /// /// 批量更新记录 /// /// 实体列表 /// 是否成功 public async Task UpdateRangeAsync(List entities) { return await Db.Updateable(entities).ExecuteCommandAsync() > 0; } /// /// 根据Id删除记录(软删除,设置 IsDeleted = true) /// /// 主键Id /// 是否成功 public async Task DeleteByIdAsync(long id) { return await Db.Deleteable().In(id).IsLogic().ExecuteCommandAsync() > 0; } /// /// 根据条件删除记录(软删除,设置 IsDeleted = true) /// /// 删除条件 /// 是否成功 public async Task DeleteByWhereAsync(Expression> where) { return await Db.Deleteable().Where(where).IsLogic().ExecuteCommandAsync() > 0; } /// /// 根据条件获取记录数(自动过滤已删除数据) /// /// 查询条件 /// 记录数 public async Task GetCountAsync(Expression> where) { return await Db.Queryable().Where(where).CountAsync(); } public ISugarQueryable Queryable() { return Db.Queryable(); } }