using Longbow.Web.Mvc; using PetaPoco; using System; using System.Collections.Generic; namespace Bootstrap.DataAccess { /// /// 操作日志实体类 /// [TableName("Logs")] public class Log : Trace { /// /// 获得/设置 操作类型 /// public string CRUD { get; set; } /// /// 获得/设置 请求数据 /// public string RequestData { get; set; } /// /// 查询所有操作日志信息 /// /// /// /// /// /// public virtual new Page RetrievePages(PaginationOption po, DateTime? startTime, DateTime? endTime, string opType) { var sql = new Sql("select * from Logs"); if (startTime.HasValue) sql.Where("LogTime >= @0", startTime.Value); if (endTime.HasValue) sql.Where("LogTime < @0", endTime.Value.AddDays(1).AddSeconds(-1)); if (startTime == null && endTime == null) sql.Where("LogTime > @0", DateTime.Today.AddMonths(0 - DictHelper.RetrieveExceptionsLogPeriod())); if (!string.IsNullOrEmpty(opType)) sql.Where("CRUD = @0", opType); sql.OrderBy($"{po.Sort} {po.Order}"); return DbManager.Create().Page(po.PageIndex, po.Limit, sql); } /// /// 查询所有操作日志 /// /// /// /// /// public virtual new IEnumerable RetrieveAll(DateTime? startTime, DateTime? endTime, string opType) { var sql = new Sql("select CRUD, UserName, LogTime, Ip, Browser, OS, City, RequestUrl, RequestData from Logs"); if (startTime.HasValue) sql.Where("LogTime >= @0", startTime.Value); if (endTime.HasValue) sql.Where("LogTime < @0", endTime.Value.AddDays(1).AddSeconds(-1)); if (!string.IsNullOrEmpty(opType)) sql.Where("CRUD = @0", opType); sql.OrderBy("LogTime"); return DbManager.Create().Fetch(sql); } /// /// 删除日志信息 /// /// private static void DeleteLogAsync() { System.Threading.Tasks.Task.Run(() => { var dtm = DateTime.Now.AddMonths(0 - DictHelper.RetrieveLogsPeriod()); DbManager.Create().Execute("delete from Logs where LogTime < @0", dtm); }); } /// /// 保存新增的日志信息 /// /// /// public virtual bool Save(Log p) { if (p == null) throw new ArgumentNullException(nameof(p)); DeleteLogAsync(); DbManager.Create().Save(p); return true; } } }