using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using SqlSugar; using WMS.Entity; using WMS.Entity.Context; using WMS.IDAL; namespace WMS.DAL { public class BaseRepository<T> : IBaseRepository<T> where T : BaseEntity, new() { private readonly SqlSugarScope _db; public BaseRepository(SqlSugarScope db) { _db = db; } public int Add(T t) { return _db.Insertable(t).ExecuteCommand(); } public async Task<int> AddAsync(T t) { return await _db.Insertable(t).ExecuteCommandAsync(); } public int Edit(T t) { return _db.Updateable(t).IgnoreColumns(m => new { m.CreateTime,m.CreateUser}).ExecuteCommand(); } public async Task<int> EditAsync(T t) { return await _db.Updateable(t).IgnoreColumns(m => new { m.CreateTime, m.CreateUser }).ExecuteCommandAsync(); } public int Remove(int id,int userId = 0) { var data = GetOneById(id); data.IsDel = "1"; data.UpdateTime = DateTime.Now; data.UpdateUser = userId; return _db.Updateable(data).UpdateColumns(m => new { m.IsDel }).ExecuteCommand(); } public async Task<int> RemoveAsync(int id,int userId = 0) { var data = await GetOneByIdAsync(id); data.IsDel = "1"; data.UpdateTime = DateTime.Now; data.UpdateUser = userId; return await _db.Updateable(data).UpdateColumns(m => new { m.IsDel }).ExecuteCommandAsync(); } public int Remove(T t, int userId = 0) { t.IsDel = "1"; t.UpdateTime = DateTime.Now; t.UpdateUser = userId; return _db.Updateable(t).UpdateColumns(m => new { m.IsDel }).ExecuteCommand(); } public async Task<int> RemoveAsync(T t,int userId = 0) { t.IsDel = "1"; t.UpdateTime = DateTime.Now; t.UpdateUser = userId; return await _db.Updateable(t).UpdateColumns(m => new { m.IsDel }).ExecuteCommandAsync(); } public int RemoveAll(List<T> t,int userId = 0) { foreach (var item in t) { item.IsDel = "1"; item.UpdateTime = DateTime.Now; item.UpdateUser = userId; } return _db.Updateable(t).UpdateColumns(m => new { m.IsDel }).ExecuteCommand(); } public async Task<int> RemoveAllAsync(List<T> t,int userId = 0) { foreach (var item in t) { item.IsDel = "1"; item.UpdateTime = DateTime.Now; item.UpdateUser = userId; } return await _db.Updateable(t).UpdateColumns(m => new { m.IsDel }).ExecuteCommandAsync(); } public void Save() { _db.SaveQueues(); } public async Task SaveAsync() { await _db.SaveQueuesAsync(); } public T GetOneById(int id) { var data = _db.Queryable<T>().First(m => m.Id == id && m.IsDel == "0"); return data; } public async Task<T> GetOneByIdAsync(int id) { var data = await _db.Queryable<T>().FirstAsync(m => m.Id == id && m.IsDel == "0"); return data; } public List<T> GetModels(string sqlString) { var models = _db.Ado.SqlQuery<T>(sqlString); return models; } public T GetModel(string sqlString) { var model = _db.Ado.SqlQuery<T>(sqlString); return model.FirstOrDefault(); } public SqlSugar.ISugarQueryable<T> GetAllAsync() { var data =_db.Queryable<T>().Where(m=>m.IsDel =="0"); return data; } public SqlSugar.ISugarQueryable<T> GetAllWhereAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate) { var data = GetAllAsync().Where(predicate); return data; } public SqlSugar.ISugarQueryable<T> GetAllByOrderAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate, bool asc = true) { var type = OrderByType.Asc; if (!asc) { type = OrderByType.Desc; } var data = GetAllWhereAsync(predicate).OrderBy(m => m.CreateTime, type); return data; } public SqlSugar.ISugarQueryable<T> GeTAllByPageAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate, int pageSize, int pageIndex,out int count ) { var list = GetAllWhereAsync(predicate); count = list.Count(); var data = list.Skip(pageSize * (pageIndex - 1)).Take(pageSize); return data; } public SqlSugar.ISugarQueryable<T> GetAllByOrderPageAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate, int pageSize, int pageIndex, out int count , bool asc = true) { var list = GetAllByOrderAsync(predicate, asc); count = list.Count(); var data = list.Skip(pageSize * (pageIndex-1)).Take(pageSize); return data; } } }