using Furion.DynamicApiController; using Newtonsoft.Json.Linq; namespace Cis.Core.Common; [NonController] public class ServiceBase : IDynamicApiController where T : EntityBase, new() { protected readonly SqlSugarRepository _baseRep; public ServiceBase(SqlSugarRepository baseRep) { _baseRep = baseRep; } /// /// /// /// /// [HttpPost] public virtual async Task Add([FromForm] T entity) { return await _baseRep.InsertAsync(entity); } /// /// /// /// /// [HttpPost] public virtual async Task AddReturnId([FromForm] T entity) { bool ret = await _baseRep.InsertAsync(entity); if (!ret) return 0; return entity.Id; } /// /// /// /// /// [HttpPost] public virtual async Task AddArray([FromForm] T[] array) { return await _baseRep.InsertRangeAsync(array); } /// /// /// /// /// [HttpPost] public virtual async Task Update([FromForm] T entity) { return await _baseRep.UpdateAsync(entity); } /// /// /// /// /// [HttpPost] public virtual async Task UpdateArray([FromForm] T[] array) { return await _baseRep.UpdateRangeAsync(array); } /// /// /// /// /// [HttpPost] public virtual async Task Delete(long id) { return await _baseRep.DeleteByIdAsync(id); } /// /// /// /// /// [HttpPost] public virtual async Task DeleteArray(T[] array) { return await _baseRep.DeleteByIdsAsync(array); } /// /// /// /// /// [HttpPost] public virtual async Task FakeDelete(long id) { return await _baseRep.AsUpdateable(new T { Id = id, IsDelete = true }) .UpdateColumns(it => it.IsDelete) .ExecuteCommandAsync() > 0; } /// /// /// /// /// [HttpGet] public virtual async Task Get(long id) { T entity = await _baseRep.GetByIdAsync(id); return entity; } /// /// /// /// equal:isDelete; between:[startTime,endTime]; /// [HttpGet] public virtual async Task GetQ(string queryJson) { JObject queryObj = queryJson.ToJObject(); var exp = Expressionable.Create(); if (queryObj.TryGetValue("IsDelete", StringComparison.OrdinalIgnoreCase, out JToken isDelete)) exp.And(it => it.IsDelete.Equals(isDelete)); if (queryObj.TryGetValue("StartTime", StringComparison.OrdinalIgnoreCase, out JToken startTime) && queryObj.TryGetValue("EndTime", StringComparison.OrdinalIgnoreCase, out JToken endTime)) exp.And(it => it.CreateTime >= startTime.ToDateTime() && it.CreateTime <= endTime.ToDateTime()); var entity = await _baseRep.AsQueryable() .Where(exp.ToExpression()) .FirstAsync(); return entity; } /// /// /// /// equal:isDelete; between:[startTime,endTime]; /// [HttpGet] public virtual async Task> GetList(string queryJson = "") { JObject queryObj = queryJson.ToJObject(); var exp = Expressionable.Create(); if (queryObj.TryGetValue("IsDelete", StringComparison.OrdinalIgnoreCase, out JToken isDelete)) exp.And(it => it.IsDelete.Equals(isDelete)); if (queryObj.TryGetValue("StartTime", StringComparison.OrdinalIgnoreCase, out JToken startTime) && queryObj.TryGetValue("EndTime", StringComparison.OrdinalIgnoreCase, out JToken endTime)) exp.And(it => it.CreateTime >= startTime.ToDateTime() && it.CreateTime <= endTime.ToDateTime()); var list = await _baseRep.AsQueryable() .Where(exp.ToExpression()) .ToListAsync(); return list; } /// /// /// /// equal:isDelete; between:[startTime,endTime]; /// index,size /// [HttpGet] public virtual async Task> GetPageList(string queryJson, string pagination) { JObject queryObj = queryJson.ToJObject(); Pagination pageObj = pagination.ToObject(); var exp = Expressionable.Create(); if (queryObj.TryGetValue("IsDelete", StringComparison.OrdinalIgnoreCase, out JToken isDelete)) exp.And(it => it.IsDelete.Equals(isDelete)); if (queryObj.TryGetValue("StartTime", StringComparison.OrdinalIgnoreCase, out JToken startTime) && queryObj.TryGetValue("EndTime", StringComparison.OrdinalIgnoreCase, out JToken endTime)) exp.And(it => it.CreateTime >= startTime.ToDateTime() && it.CreateTime <= endTime.ToDateTime()); var list = await _baseRep.AsQueryable() .Where(exp.ToExpression()) .ToPageListAsync(pageObj.Index, pageObj.Size); return list; } }