1
This commit is contained in:
@@ -86,80 +86,90 @@ namespace Ewide.EntityFramework.Core
|
||||
{
|
||||
var dbContext = eventData.Context;
|
||||
|
||||
// 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
|
||||
var entities = dbContext.ChangeTracker.Entries()
|
||||
.Where(u => u.Entity.GetType() != typeof(SysLogAudit) && u.Entity.GetType() != typeof(SysLogOp) && u.Entity.GetType() != typeof(SysLogVis) &&
|
||||
(u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))
|
||||
.ToList();
|
||||
if (entities == null || entities.Count < 1) return;
|
||||
|
||||
// 判断是否是演示环境
|
||||
var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
|
||||
if (demoEnvFlag)
|
||||
try
|
||||
{
|
||||
var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
|
||||
if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 排除登录
|
||||
throw Oops.Oh(ErrorCode.D1200);
|
||||
}
|
||||
// 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
|
||||
var entities = dbContext.ChangeTracker.Entries()
|
||||
.Where(u => u.Entity.GetType() != typeof(SysLogAudit) && u.Entity.GetType() != typeof(SysLogOp) && u.Entity.GetType() != typeof(SysLogVis) &&
|
||||
(u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))
|
||||
.ToList();
|
||||
|
||||
// 当前操作用户信息
|
||||
var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
|
||||
var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
|
||||
|
||||
foreach (var entity in entities)
|
||||
{
|
||||
if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase)))
|
||||
if (entities == null || entities.Count < 1) return;
|
||||
|
||||
// 判断是否是演示环境
|
||||
var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
|
||||
if (demoEnvFlag)
|
||||
{
|
||||
var obj = entity.Entity as DEntityBase;
|
||||
if (entity.State == EntityState.Added)
|
||||
{
|
||||
obj.Id = string.IsNullOrEmpty(obj.Id) ? Guid.NewGuid().ToString() : obj.Id;
|
||||
obj.CreatedTime = DateTime.Now;
|
||||
if (!string.IsNullOrEmpty(userId))
|
||||
{
|
||||
obj.CreatedUserId = userId;
|
||||
obj.CreatedUserName = userName;
|
||||
}
|
||||
}
|
||||
else if (entity.State == EntityState.Modified)
|
||||
{
|
||||
obj.UpdatedTime = DateTime.Now;
|
||||
obj.UpdatedUserId = userId;
|
||||
obj.UpdatedUserName = userName;
|
||||
}
|
||||
var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
|
||||
if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 排除登录
|
||||
throw Oops.Oh(ErrorCode.D1200);
|
||||
}
|
||||
|
||||
//// 获取实体当前(现在)的值
|
||||
//var currentValues = entity.CurrentValues;
|
||||
//// 获取数据库中实体的值
|
||||
//var databaseValues = entity.GetDatabaseValues();
|
||||
// 当前操作用户信息
|
||||
var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
|
||||
var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
|
||||
|
||||
//// 获取所有实体有效属性,排除 [NotMapper] 属性
|
||||
//var props = entity.OriginalValues.Properties;
|
||||
//foreach (var prop in props)
|
||||
//{
|
||||
// var propName = prop.Name; // 获取属性名
|
||||
// var newValue = currentValues[propName]; // 获取现在的实体值
|
||||
foreach (var entity in entities)
|
||||
{
|
||||
if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase)))
|
||||
{
|
||||
var obj = entity.Entity as DEntityBase;
|
||||
if (entity.State == EntityState.Added)
|
||||
{
|
||||
obj.Id = string.IsNullOrEmpty(obj.Id) ? Guid.NewGuid().ToString() : obj.Id;
|
||||
obj.CreatedTime = DateTime.Now;
|
||||
if (!string.IsNullOrEmpty(userId))
|
||||
{
|
||||
obj.CreatedUserId = userId;
|
||||
obj.CreatedUserName = userName;
|
||||
}
|
||||
}
|
||||
else if (entity.State == EntityState.Modified)
|
||||
{
|
||||
obj.UpdatedTime = DateTime.Now;
|
||||
obj.UpdatedUserId = userId;
|
||||
obj.UpdatedUserName = userName;
|
||||
}
|
||||
}
|
||||
|
||||
// object oldValue = null;
|
||||
// // 如果是新增数据,则 databaseValues 为空,所以需要判断一下
|
||||
// if (databaseValues != null)
|
||||
// oldValue = databaseValues[propName];
|
||||
//// 获取实体当前(现在)的值
|
||||
//var currentValues = entity.CurrentValues;
|
||||
//// 获取数据库中实体的值
|
||||
//var databaseValues = entity.GetDatabaseValues();
|
||||
|
||||
// if ((newValue == oldValue) || (newValue != null && newValue.Equals(oldValue))) continue;
|
||||
// // 插入审计日志表
|
||||
// dbContext.AddAsync(new SysLogAudit
|
||||
// {
|
||||
// TableName = entity.Entity.GetType().Name, // 获取实体类型(表名)
|
||||
// ColumnName = propName,
|
||||
// NewValue = newValue?.ToString(),
|
||||
// OldValue = oldValue?.ToString(),
|
||||
// CreatedTime = DateTime.Now,
|
||||
// UserId = userId,
|
||||
// UserName = userName,
|
||||
// Operate = entity.State.ToString() // 操作方式:新增、更新、删除
|
||||
// });
|
||||
//}
|
||||
//// 获取所有实体有效属性,排除 [NotMapper] 属性
|
||||
//var props = entity.OriginalValues.Properties;
|
||||
//foreach (var prop in props)
|
||||
//{
|
||||
// var propName = prop.Name; // 获取属性名
|
||||
// var newValue = currentValues[propName]; // 获取现在的实体值
|
||||
|
||||
// object oldValue = null;
|
||||
// // 如果是新增数据,则 databaseValues 为空,所以需要判断一下
|
||||
// if (databaseValues != null)
|
||||
// oldValue = databaseValues[propName];
|
||||
|
||||
// if ((newValue == oldValue) || (newValue != null && newValue.Equals(oldValue))) continue;
|
||||
// // 插入审计日志表
|
||||
// dbContext.AddAsync(new SysLogAudit
|
||||
// {
|
||||
// TableName = entity.Entity.GetType().Name, // 获取实体类型(表名)
|
||||
// ColumnName = propName,
|
||||
// NewValue = newValue?.ToString(),
|
||||
// OldValue = oldValue?.ToString(),
|
||||
// CreatedTime = DateTime.Now,
|
||||
// UserId = userId,
|
||||
// UserName = userName,
|
||||
// Operate = entity.State.ToString() // 操作方式:新增、更新、删除
|
||||
// });
|
||||
//}
|
||||
}
|
||||
}
|
||||
catch (System.ObjectDisposedException ex)
|
||||
{
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user