public async Task SaveAudit(AuditChangeInputDto audit) { List <AuditEntry> auditEntry = new List <AuditEntry>(); List <AuditPropertysEntry> auditpropertyentry = new List <AuditPropertysEntry>(); AuditLog auditLog = new AuditLog(); auditLog.BrowserInformation = audit.BrowserInformation; auditLog.Action = audit.Action; auditLog.Ip = audit.Ip; auditLog.FunctionName = audit.FunctionName; auditLog.ExecutionDuration = audit.ExecutionDuration; //auditLog.UserId = audit.UserId; auditLog.ResultType = audit.ResultType; auditLog.Message = audit.Message; foreach (var item in audit.AuditEntryInputDtos) { var model = item.MapTo <AuditEntry>(); model.AuditLogId = auditLog.Id; foreach (var Property in item.PropertysEntryInputDto) { var propertymodel = Property.MapTo <AuditPropertysEntry>(); propertymodel.AuditEntryId = model.Id; auditpropertyentry.Add(propertymodel); } auditEntry.Add(model); } await _auditLogRepository.InsertAsync(auditLog); await _auditEntryRepository.InsertAsync(auditEntry.ToArray()); await _auditPropertysEntryRepository.InsertAsync(auditpropertyentry.ToArray()); }
/// <summary> /// 方法执行中 /// </summary> /// <param name="context"></param> public void OnActionExecuting(ActionExecutingContext context) { IServiceProvider serviceProvider = context.HttpContext.RequestServices; var controllerAction = context.ActionDescriptor as ControllerActionDescriptor; var isAuditEnabled = serviceProvider.GetAppSettings().AuditEnabled; if (isAuditEnabled) { AuditEntryDictionaryScoped auditEntryDictionaryScoped = serviceProvider.GetService <AuditEntryDictionaryScoped>(); AuditChangeInputDto auditChange = new AuditChangeInputDto(); auditChange.BrowserInformation = context.HttpContext.Request.Headers["User-Agent"].ToString(); auditChange.Ip = context.HttpContext.GetClientIP(); auditChange.FunctionName = $"{context.Controller.GetType().ToDescription()}-{controllerAction.MethodInfo.ToDescription()}"; auditChange.Action = context.HttpContext.Request.Path; auditChange.StartTime = DateTime.Now; auditEntryDictionaryScoped.AuditChange = auditChange; } }