Skip to content

Commit

Permalink
fix: 操作审计初始化器支持设置时间
Browse files Browse the repository at this point in the history
  • Loading branch information
jianxuanbing committed Feb 8, 2022
1 parent 100a100 commit 056da79
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,24 @@ public sealed class CreationAuditedInitializer
/// </summary>
private readonly string _userName;

/// <summary>
/// 操作时间
/// </summary>
private readonly DateTime? _dateTime;

/// <summary>
/// 初始化一个<see cref="CreationAuditedInitializer"/>类型的实例
/// </summary>
/// <param name="entity">实体</param>
/// <param name="userId">用户标识</param>
/// <param name="userName">用户名称</param>
private CreationAuditedInitializer(object entity, string userId, string userName)
/// <param name="dateTime">操作时间</param>
private CreationAuditedInitializer(object entity, string userId, string userName, DateTime? dateTime)
{
_entity = entity;
_userId = userId;
_userName = userName;
_dateTime = dateTime;
}

/// <summary>
Expand All @@ -42,7 +49,16 @@ private CreationAuditedInitializer(object entity, string userId, string userName
/// <param name="entity">实体</param>
/// <param name="userId">用户标识</param>
/// <param name="userName">用户名称</param>
public static void Init(object entity, string userId, string userName) => new CreationAuditedInitializer(entity, userId, userName).Init();
public static void Init(object entity, string userId, string userName) => new CreationAuditedInitializer(entity, userId, userName, null).Init();

/// <summary>
/// 初始化
/// </summary>
/// <param name="entity">实体</param>
/// <param name="userId">用户标识</param>
/// <param name="userName">用户名称</param>
/// <param name="dateTime">操作时间</param>
public static void Init(object entity, string userId, string userName, DateTime? dateTime) => new CreationAuditedInitializer(entity, userId, userName,dateTime).Init();

/// <summary>
/// 初始化
Expand All @@ -62,7 +78,7 @@ public void Init()
private void InitCreationTime()
{
if (_entity is IHasCreationTime result)
result.CreationTime = DateTime.Now;
result.CreationTime = _dateTime.HasValue ? _dateTime.SafeValue() : DateTime.Now;
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,24 @@ public sealed class ModificationAuditedInitializer
/// </summary>
private readonly string _userName;

/// <summary>
/// 操作时间
/// </summary>
private readonly DateTime? _dateTime;

/// <summary>
/// 初始化一个<see cref="ModificationAuditedInitializer"/>类型的实例
/// </summary>
/// <param name="entity">实体</param>
/// <param name="userId">用户标识</param>
/// <param name="userName">用户名称</param>
private ModificationAuditedInitializer(object entity, string userId, string userName)
/// <param name="dateTime">操作时间</param>
private ModificationAuditedInitializer(object entity, string userId, string userName, DateTime? dateTime)
{
_entity = entity;
_userId = userId;
_userName = userName;
_dateTime = dateTime;
}

/// <summary>
Expand All @@ -42,7 +49,16 @@ private ModificationAuditedInitializer(object entity, string userId, string user
/// <param name="entity">实体</param>
/// <param name="userId">用户标识</param>
/// <param name="userName">用户名称</param>
public static void Init(object entity, string userId, string userName) => new ModificationAuditedInitializer(entity, userId, userName).Init();
public static void Init(object entity, string userId, string userName) => new ModificationAuditedInitializer(entity, userId, userName, null).Init();

/// <summary>
/// 初始化
/// </summary>
/// <param name="entity">实体</param>
/// <param name="userId">用户标识</param>
/// <param name="userName">用户名称</param>
/// <param name="dateTime">操作时间</param>
public static void Init(object entity, string userId, string userName, DateTime? dateTime) => new ModificationAuditedInitializer(entity, userId, userName, dateTime).Init();

/// <summary>
/// 初始化
Expand All @@ -62,7 +78,7 @@ public void Init()
private void InitLastModificationTime()
{
if (_entity is IHasModificationTime result)
result.LastModificationTime = DateTime.Now;
result.LastModificationTime = _dateTime.HasValue ? _dateTime.SafeValue() : DateTime.Now;
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ public class DependsOnModuleAttribute : Attribute
/// 初始化一个<see cref="DependsOnModuleAttribute"/>类型的实例
/// </summary>
/// <param name="dependedModuleTypes">依赖模块类型集合</param>
public DependsOnModuleAttribute(params Type[] dependedModuleTypes) => DependedModuleTypes = dependedModuleTypes;
public DependsOnModuleAttribute(params Type[] dependedModuleTypes) => DependedModuleTypes = dependedModuleTypes ?? new Type[0];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,11 @@ protected virtual void AddToServices(IServiceCollection services, Type implement
{
if (implementationType.IsAbstract || implementationType.IsInterface)
return;

var lifetime = GetLifetimeOrNull(implementationType);
if (lifetime == null)
return;

var dependencyAttribute = implementationType.GetAttribute<DependencyAttribute>();
var serviceTypes = GetImplementedInterfaces(implementationType);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@ public class DependencyTypeFinder : FinderBase<Type>, IDependencyTypeFinder
/// </summary>
protected override Type[] FindAllItems()
{
var baseTypes = new[]
{typeof(ISingletonDependency), typeof(IScopedDependency), typeof(ITransientDependency)};
var types = _allAssemblyFinder.FindAll(true).SelectMany(assembly => assembly.GetTypes().Where(type =>
type.IsClass && !type.IsAbstract && !type.IsInterface &&
!type.HasAttribute<IgnoreDependencyAttribute>() &&
(baseTypes.Any(b => b.IsAssignableFrom(type)) || type.HasAttribute<DependencyAttribute>()))).ToArray();
var baseTypes = new[] {typeof(ISingletonDependency), typeof(IScopedDependency), typeof(ITransientDependency)};
var types = _allAssemblyFinder.FindAll(true)
.SelectMany(assembly => assembly
.GetTypes()
.Where(type => type.IsClass && !type.IsAbstract && !type.IsInterface
&& !type.HasAttribute<IgnoreDependencyAttribute>()
&& (baseTypes.Any(b => b.IsAssignableFrom(type)) || type.HasAttribute<DependencyAttribute>())))
.ToArray();
return types;
}
}
Expand Down

0 comments on commit 056da79

Please sign in to comment.