2023甬江杯投票

This commit is contained in:
范露尧
2023-09-14 20:09:02 +08:00
parent 39c2f98a09
commit d39d2f0589
16 changed files with 2395 additions and 79 deletions

View File

@@ -84,94 +84,94 @@ namespace Ewide.EntityFramework.Core
/// <param name="result"></param>
protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result)
{
var dbContext = eventData.Context;
//var dbContext = eventData.Context;
try
{
if (dbContext == null) return;
// 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
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();
//try
//{
// if (dbContext == null) return;
// // 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
// 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;
// if (entities == null || entities.Count < 1) return;
// 判断是否是演示环境
var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
if (demoEnvFlag)
{
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 demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
// if (demoEnvFlag)
// {
// 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 userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
// // 当前操作用户信息
// 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)))
{
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;
}
}
// 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;
// }
// }
//// 获取实体当前(现在)的值
//var currentValues = entity.CurrentValues;
//// 获取数据库中实体的值
//var databaseValues = entity.GetDatabaseValues();
// //// 获取实体当前(现在)的值
// //var currentValues = entity.CurrentValues;
// //// 获取数据库中实体的值
// //var databaseValues = entity.GetDatabaseValues();
//// 获取所有实体有效属性,排除 [NotMapper] 属性
//var props = entity.OriginalValues.Properties;
//foreach (var prop in props)
//{
// var propName = prop.Name; // 获取属性名
// var newValue = currentValues[propName]; // 获取现在的实体值
// //// 获取所有实体有效属性,排除 [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];
// // 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)
{
// // 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;
}
// throw;
//}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)