diff --git a/.gitignore b/.gitignore index 9491a2f..11b826c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,8 +30,7 @@ bld/ [Bb]in/ [Oo]bj/ [Oo]ut/ -[Ll]og/ -[Ll]ogs/ + # Visual Studio 2015/2017 cache/options directory .vs/ diff --git a/Magic.Core/Service/Log/Dto/ExLogInput.cs b/Magic.Core/Service/Log/Dto/ExLogInput.cs new file mode 100644 index 0000000..1579780 --- /dev/null +++ b/Magic.Core/Service/Log/Dto/ExLogInput.cs @@ -0,0 +1,46 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace Magic.Core.Service; + +/// +/// 异常日志参数 +/// +public class ExLogInput : PageInputBase +{ + /// + /// 操作人 + /// + public string Account { get; set; } + + /// + /// 名称 + /// + public string Name { get; set; } + + /// + /// 类名 + /// + public string ClassName { get; set; } + + /// + /// 方法名 + /// + public string MethodName { get; set; } + + /// + /// 异常名称 + /// + public string ExceptionName { get; set; } + + /// + /// 异常信息 + /// + [MaxLength(2000)] + public string ExceptionMsg { get; set; } + + /// + /// 异常时间 + /// + public DateTime ExceptionTime { get; set; } +} diff --git a/Magic.Core/Service/Log/Dto/ExLogOutput.cs b/Magic.Core/Service/Log/Dto/ExLogOutput.cs new file mode 100644 index 0000000..c2a9dd3 --- /dev/null +++ b/Magic.Core/Service/Log/Dto/ExLogOutput.cs @@ -0,0 +1,9 @@ +namespace Magic.Core.Service; + +/// +/// 异常日志参数 +/// +public class ExLogOutput : ExLogInput +{ + +} diff --git a/Magic.Core/Service/Log/Dto/OpLogInput.cs b/Magic.Core/Service/Log/Dto/OpLogInput.cs new file mode 100644 index 0000000..bce4be1 --- /dev/null +++ b/Magic.Core/Service/Log/Dto/OpLogInput.cs @@ -0,0 +1,89 @@ +using System; + +namespace Magic.Core.Service; + +/// +/// 请求日志参数 +/// +public class OpLogInput : PageInputBase +{ + /// + /// 名称 + /// + public string Name { get; set; } + + /// + /// 是否执行成功(Y-是,N-否) + /// + public YesOrNot Success { get; set; } + + /// + /// 具体消息 + /// + public string Message { get; set; } + + /// + /// ip + /// + public string Ip { get; set; } + + /// + /// 地址 + /// + public string Location { get; set; } + + /// + /// 浏览器 + /// + public string Browser { get; set; } + + /// + /// 操作系统 + /// + public string Os { get; set; } + + /// + /// 请求地址 + /// + public string Url { get; set; } + + /// + /// 类名称 + /// + public string ClassName { get; set; } + + /// + /// 方法名称 + /// + public string MethodName { get; set; } + + /// + /// 请求方式(GET POST PUT DELETE) + /// + public string ReqMethod { get; set; } + + /// + /// 请求参数 + /// + public string Param { get; set; } + + /// + /// 返回结果 + /// + public string Result { get; set; } + + /// + /// 耗时(毫秒) + /// + public long ElapsedTime { get; set; } + + /// + /// 操作时间 + /// + public DateTime OpTime { get; set; } + + /// + /// 操作人 + /// + public string Account { get; set; } +} diff --git a/Magic.Core/Service/Log/Dto/OpLogOutput.cs b/Magic.Core/Service/Log/Dto/OpLogOutput.cs new file mode 100644 index 0000000..b395ee3 --- /dev/null +++ b/Magic.Core/Service/Log/Dto/OpLogOutput.cs @@ -0,0 +1,9 @@ +namespace Magic.Core.Service; + +/// +/// 请求日志参数 +/// +public class OpLogOutput : OpLogInput +{ + +} diff --git a/Magic.Core/Service/Log/Dto/VisLogInput.cs b/Magic.Core/Service/Log/Dto/VisLogInput.cs new file mode 100644 index 0000000..5cc57e9 --- /dev/null +++ b/Magic.Core/Service/Log/Dto/VisLogInput.cs @@ -0,0 +1,59 @@ +using System; + +namespace Magic.Core.Service; + +/// +/// 访问日志参数 +/// +public class VisLogInput : PageInputBase +{ + /// + /// 名称 + /// + public string Name { get; set; } + + /// + /// 是否执行成功(Y-是,N-否) + /// + public YesOrNot? Success { get; set; } + + /// + /// 具体消息 + /// + public string Message { get; set; } + + /// + /// IP + /// + public string Ip { get; set; } + + /// + /// 地址 + /// + public string Location { get; set; } + + /// + /// 浏览器 + /// + public string Browser { get; set; } + + /// + /// 操作系统 + /// + public string Os { get; set; } + + /// + /// 访问类型 + /// + public LoginType VisType { get; set; } + + /// + /// 访问时间 + /// + public DateTime VisTime { get; set; } + + /// + /// 访问人 + /// + public string Account { get; set; } +} diff --git a/Magic.Core/Service/Log/Dto/VisLogOutput.cs b/Magic.Core/Service/Log/Dto/VisLogOutput.cs new file mode 100644 index 0000000..173201c --- /dev/null +++ b/Magic.Core/Service/Log/Dto/VisLogOutput.cs @@ -0,0 +1,9 @@ +namespace Magic.Core.Service; + +/// +/// 访问日志参数 +/// +public class VisLogOutput : VisLogInput +{ + +} diff --git a/Magic.Core/Service/Log/ISysExLogService.cs b/Magic.Core/Service/Log/ISysExLogService.cs new file mode 100644 index 0000000..9ebb15d --- /dev/null +++ b/Magic.Core/Service/Log/ISysExLogService.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; + +namespace Magic.Core.Service; + +public interface ISysExLogService +{ + Task ClearExLog(); + Task QueryExLogPageList([FromQuery] ExLogInput input); +} diff --git a/Magic.Core/Service/Log/ISysOpLogService.cs b/Magic.Core/Service/Log/ISysOpLogService.cs new file mode 100644 index 0000000..f43406a --- /dev/null +++ b/Magic.Core/Service/Log/ISysOpLogService.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; + +namespace Magic.Core.Service; + +public interface ISysOpLogService +{ + Task ClearOpLog(); + Task QueryOpLogPageList([FromQuery] OpLogInput input); +} diff --git a/Magic.Core/Service/Log/ISysVisLogService.cs b/Magic.Core/Service/Log/ISysVisLogService.cs new file mode 100644 index 0000000..06c87e5 --- /dev/null +++ b/Magic.Core/Service/Log/ISysVisLogService.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; + +namespace Magic.Core.Service; + +public interface ISysVisLogService +{ + Task ClearVisLog(); + Task QueryVisLogPageList([FromQuery] VisLogInput input); +} diff --git a/Magic.Core/Service/Log/SysExLogService.cs b/Magic.Core/Service/Log/SysExLogService.cs new file mode 100644 index 0000000..986d4a3 --- /dev/null +++ b/Magic.Core/Service/Log/SysExLogService.cs @@ -0,0 +1,56 @@ + + +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Magic.Core.Entity; +using Microsoft.AspNetCore.Mvc; +using SqlSugar; +using System; +using System.Threading.Tasks; + +namespace Magic.Core.Service; + +/// +/// 异常日志服务 +/// +[ApiDescriptionSettings(Name = "ExLog", Order = 100)] +public class SysExLogService : ISysExLogService, IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository _sysExLogRep; // 操作日志表仓储 + + public SysExLogService(SqlSugarRepository sysExLogRep) + { + _sysExLogRep = sysExLogRep; + } + + /// + /// 分页查询异常日志 + /// + /// + /// + [HttpGet("/sysExLog/page")] + public async Task QueryExLogPageList([FromQuery] ExLogInput input) + { + var exLogs = await _sysExLogRep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.ClassName), u => u.ClassName == input.ClassName) + .WhereIF(!string.IsNullOrWhiteSpace(input.MethodName), u => u.MethodName == input.MethodName) + .WhereIF(!string.IsNullOrWhiteSpace(input.ExceptionMsg), u => u.ExceptionMsg.Contains(input.ExceptionMsg.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.SearchBeginTime), u => u.ExceptionTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && + u.ExceptionTime <= DateTime.Parse(input.SearchEndTime.Trim())) + .OrderBy(u => u.Id, OrderByType.Desc) + .Select() + .ToPagedListAsync(input.PageNo, input.PageSize); + return exLogs.XnPagedResult(); + } + + /// + /// 清空异常日志 + /// + /// + [HttpPost("/sysExLog/delete")] + public async Task ClearExLog() + { + await _sysExLogRep.DeleteAsync(m => true); + } +} diff --git a/Magic.Core/Service/Log/SysOpLogService.cs b/Magic.Core/Service/Log/SysOpLogService.cs new file mode 100644 index 0000000..bfd5fd2 --- /dev/null +++ b/Magic.Core/Service/Log/SysOpLogService.cs @@ -0,0 +1,55 @@ + + +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Magic.Core.Entity; +using Microsoft.AspNetCore.Mvc; + +using SqlSugar; +using System; +using System.Threading.Tasks; + +namespace Magic.Core.Service; + +/// +/// 操作日志服务 +/// +[ApiDescriptionSettings(Name = "OpLog", Order = 100)] +public class SysOpLogService : ISysOpLogService, IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository _sysOpLogRep; // 操作日志表仓储 + + public SysOpLogService(SqlSugarRepository sysOpLogRep) + { + _sysOpLogRep = sysOpLogRep; + } + + /// + /// 分页查询操作日志 + /// + /// + /// + [HttpGet("/sysOpLog/page")] + public async Task QueryOpLogPageList([FromQuery] OpLogInput input) + { + var opLogs = await _sysOpLogRep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim())) + .WhereIF(Enum.IsDefined(typeof(YesOrNot),input.Success), u => u.Success == input.Success) + .WhereIF(!string.IsNullOrWhiteSpace(input.SearchBeginTime), u => u.OpTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && u.OpTime <= DateTime.Parse(input.SearchEndTime.Trim())) + .OrderBy(u => u.Id, OrderByType.Desc) + .Select() + .ToPagedListAsync(input.PageNo, input.PageSize); + + return opLogs.XnPagedResult(); + } + + /// + /// 清空操作日志 + /// + /// + [HttpPost("/sysOpLog/delete")] + public async Task ClearOpLog() + { + await _sysOpLogRep.DeleteAsync(m => true); + } +} diff --git a/Magic.Core/Service/Log/SysVisLogService.cs b/Magic.Core/Service/Log/SysVisLogService.cs new file mode 100644 index 0000000..6d78d31 --- /dev/null +++ b/Magic.Core/Service/Log/SysVisLogService.cs @@ -0,0 +1,55 @@ + + +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Magic.Core.Entity; +using Microsoft.AspNetCore.Mvc; + +using SqlSugar; +using System; +using System.Threading.Tasks; + +namespace Magic.Core.Service; + +/// +/// 访问日志服务 +/// +[ApiDescriptionSettings(Name = "VisLog", Order = 100)] +public class SysVisLogService : ISysVisLogService, IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository _sysVisLogRep; // 访问日志表仓储 + + public SysVisLogService(SqlSugarRepository sysVisLogRep) + { + _sysVisLogRep = sysVisLogRep; + } + + /// + /// 分页查询访问日志 + /// + /// + /// + [HttpGet("/sysVisLog/page")] + public async Task QueryVisLogPageList([FromQuery] VisLogInput input) + { + var visLogs = await _sysVisLogRep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name)) + .WhereIF(input.VisType > 0, u => u.VisType == input.VisType) + .WhereIF(input.Success != null && Enum.IsDefined(typeof(YesOrNot), input.Success), u => u.Success == input.Success) + .WhereIF(!string.IsNullOrWhiteSpace(input.SearchBeginTime), u => u.VisTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && u.VisTime <= DateTime.Parse(input.SearchEndTime.Trim())) + .OrderBy(u => u.Id, OrderByType.Desc) + .Select() + .ToPagedListAsync(input.PageNo, input.PageSize); + return visLogs.XnPagedResult(); + } + + /// + /// 清空访问日志 + /// + /// + [HttpPost("/sysVisLog/delete")] + public async Task ClearVisLog() + { + await _sysVisLogRep.DeleteAsync(m => true); + } +}