/**
*┌──────────────────────────────────────────────────────────────┐
*│ 描 述:操作日志拦截器
*│ 作 者:Dennyhui
*│ 版 本:1.0
*│ 创建时间: 2019年10月25日19:40:01
*└──────────────────────────────────────────────────────────────┘
*┌──────────────────────────────────────────────────────────────┐
*│ 命名空间:Fisk.DataWithReportBusiness
*│ 类 名:OperationLog
*└──────────────────────────────────────────────────────────────┘
*/
using Fisk.DataWithReportDataAccess;
using Fisk.DataWithReportUtilities.WebPage;
using System;
using System.Web;
using System.Web.Mvc;
namespace Fisk.DataWithReportBusiness
{
/// <summary>
/// 操作日志拦截器 2019年10月25日19:40:01
/// </summary>
public class OperationLog : FilterAttribute, IActionFilter
{
/// <summary>
/// 实例化EF
/// </summary>
private BIDBEntities BE = new BIDBEntities();
/// <summary>
/// 操作类型
/// </summary>
public enum operate { select = 0, add = 1, delete = 2, update = 3, login = 4, config = 5 };
/// <summary>
/// 日志关键字
/// </summary>
public operate Key { get; set; }
/// <summary>
/// 日志描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// Action执行后
/// </summary>
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
try
{
var Request= filterContext.RequestContext.HttpContext.Request;//获取控制器传入的参数
var result = ((System.Web.Mvc.JsonResult)filterContext.Result).Data.ToString();//获取控制器返回的结果
System_Log sl = new System_Log();
sl.Id = Guid.NewGuid().ToString();
sl.Tkey = Enum.GetName(typeof(operate), Key) ;
sl.UserAccount = CurrentUser.UserAccount;
sl.OperateResult = result;
sl.Description = Description;
sl.CreateTime = DateTime.Now;
sl.ActionName = filterContext.ActionDescriptor.ActionName;
sl.ControllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
sl.Parameters = HttpUtility.UrlDecode(Request.Form.ToString());
sl.UserHostAddress = Request.UserHostAddress;
sl.BrowserInformation = Request.Browser.Browser + "_" + Request.Browser.Version;
BE.System_Log.Add(sl);
BE.SaveChangesAsync();
}
catch (Exception ex)
{
//ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name);
//log.Error("OnActionExecuted() error detail:" + ex);
}
//logService.Save(model);
}
/// <summary>
/// Action执行前
/// </summary>
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
}