Skip to content

Commit 056da79

Browse files
committed
fix: 操作审计初始化器支持设置时间
1 parent 100a100 commit 056da79

File tree

5 files changed

+49
-13
lines changed

5 files changed

+49
-13
lines changed

framework/src/Bing.Auditing/Bing/Auditing/CreationAuditedInitializer.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,24 @@ public sealed class CreationAuditedInitializer
2323
/// </summary>
2424
private readonly string _userName;
2525

26+
/// <summary>
27+
/// 操作时间
28+
/// </summary>
29+
private readonly DateTime? _dateTime;
30+
2631
/// <summary>
2732
/// 初始化一个<see cref="CreationAuditedInitializer"/>类型的实例
2833
/// </summary>
2934
/// <param name="entity">实体</param>
3035
/// <param name="userId">用户标识</param>
3136
/// <param name="userName">用户名称</param>
32-
private CreationAuditedInitializer(object entity, string userId, string userName)
37+
/// <param name="dateTime">操作时间</param>
38+
private CreationAuditedInitializer(object entity, string userId, string userName, DateTime? dateTime)
3339
{
3440
_entity = entity;
3541
_userId = userId;
3642
_userName = userName;
43+
_dateTime = dateTime;
3744
}
3845

3946
/// <summary>
@@ -42,7 +49,16 @@ private CreationAuditedInitializer(object entity, string userId, string userName
4249
/// <param name="entity">实体</param>
4350
/// <param name="userId">用户标识</param>
4451
/// <param name="userName">用户名称</param>
45-
public static void Init(object entity, string userId, string userName) => new CreationAuditedInitializer(entity, userId, userName).Init();
52+
public static void Init(object entity, string userId, string userName) => new CreationAuditedInitializer(entity, userId, userName, null).Init();
53+
54+
/// <summary>
55+
/// 初始化
56+
/// </summary>
57+
/// <param name="entity">实体</param>
58+
/// <param name="userId">用户标识</param>
59+
/// <param name="userName">用户名称</param>
60+
/// <param name="dateTime">操作时间</param>
61+
public static void Init(object entity, string userId, string userName, DateTime? dateTime) => new CreationAuditedInitializer(entity, userId, userName,dateTime).Init();
4662

4763
/// <summary>
4864
/// 初始化
@@ -62,7 +78,7 @@ public void Init()
6278
private void InitCreationTime()
6379
{
6480
if (_entity is IHasCreationTime result)
65-
result.CreationTime = DateTime.Now;
81+
result.CreationTime = _dateTime.HasValue ? _dateTime.SafeValue() : DateTime.Now;
6682
}
6783

6884
/// <summary>

framework/src/Bing.Auditing/Bing/Auditing/ModificationAuditedInitializer.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,24 @@ public sealed class ModificationAuditedInitializer
2323
/// </summary>
2424
private readonly string _userName;
2525

26+
/// <summary>
27+
/// 操作时间
28+
/// </summary>
29+
private readonly DateTime? _dateTime;
30+
2631
/// <summary>
2732
/// 初始化一个<see cref="ModificationAuditedInitializer"/>类型的实例
2833
/// </summary>
2934
/// <param name="entity">实体</param>
3035
/// <param name="userId">用户标识</param>
3136
/// <param name="userName">用户名称</param>
32-
private ModificationAuditedInitializer(object entity, string userId, string userName)
37+
/// <param name="dateTime">操作时间</param>
38+
private ModificationAuditedInitializer(object entity, string userId, string userName, DateTime? dateTime)
3339
{
3440
_entity = entity;
3541
_userId = userId;
3642
_userName = userName;
43+
_dateTime = dateTime;
3744
}
3845

3946
/// <summary>
@@ -42,7 +49,16 @@ private ModificationAuditedInitializer(object entity, string userId, string user
4249
/// <param name="entity">实体</param>
4350
/// <param name="userId">用户标识</param>
4451
/// <param name="userName">用户名称</param>
45-
public static void Init(object entity, string userId, string userName) => new ModificationAuditedInitializer(entity, userId, userName).Init();
52+
public static void Init(object entity, string userId, string userName) => new ModificationAuditedInitializer(entity, userId, userName, null).Init();
53+
54+
/// <summary>
55+
/// 初始化
56+
/// </summary>
57+
/// <param name="entity">实体</param>
58+
/// <param name="userId">用户标识</param>
59+
/// <param name="userName">用户名称</param>
60+
/// <param name="dateTime">操作时间</param>
61+
public static void Init(object entity, string userId, string userName, DateTime? dateTime) => new ModificationAuditedInitializer(entity, userId, userName, dateTime).Init();
4662

4763
/// <summary>
4864
/// 初始化
@@ -62,7 +78,7 @@ public void Init()
6278
private void InitLastModificationTime()
6379
{
6480
if (_entity is IHasModificationTime result)
65-
result.LastModificationTime = DateTime.Now;
81+
result.LastModificationTime = _dateTime.HasValue ? _dateTime.SafeValue() : DateTime.Now;
6682
}
6783

6884
/// <summary>

framework/src/Bing/Bing/Core/Modularity/DependsOnModuleAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ public class DependsOnModuleAttribute : Attribute
1717
/// 初始化一个<see cref="DependsOnModuleAttribute"/>类型的实例
1818
/// </summary>
1919
/// <param name="dependedModuleTypes">依赖模块类型集合</param>
20-
public DependsOnModuleAttribute(params Type[] dependedModuleTypes) => DependedModuleTypes = dependedModuleTypes;
20+
public DependsOnModuleAttribute(params Type[] dependedModuleTypes) => DependedModuleTypes = dependedModuleTypes ?? new Type[0];
2121
}
2222
}

framework/src/Bing/Bing/DependencyInjection/DependencyModule.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,11 @@ protected virtual void AddToServices(IServiceCollection services, Type implement
6565
{
6666
if (implementationType.IsAbstract || implementationType.IsInterface)
6767
return;
68+
6869
var lifetime = GetLifetimeOrNull(implementationType);
6970
if (lifetime == null)
7071
return;
72+
7173
var dependencyAttribute = implementationType.GetAttribute<DependencyAttribute>();
7274
var serviceTypes = GetImplementedInterfaces(implementationType);
7375

framework/src/Bing/Bing/DependencyInjection/DependencyTypeFinder.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ public class DependencyTypeFinder : FinderBase<Type>, IDependencyTypeFinder
2727
/// </summary>
2828
protected override Type[] FindAllItems()
2929
{
30-
var baseTypes = new[]
31-
{typeof(ISingletonDependency), typeof(IScopedDependency), typeof(ITransientDependency)};
32-
var types = _allAssemblyFinder.FindAll(true).SelectMany(assembly => assembly.GetTypes().Where(type =>
33-
type.IsClass && !type.IsAbstract && !type.IsInterface &&
34-
!type.HasAttribute<IgnoreDependencyAttribute>() &&
35-
(baseTypes.Any(b => b.IsAssignableFrom(type)) || type.HasAttribute<DependencyAttribute>()))).ToArray();
30+
var baseTypes = new[] {typeof(ISingletonDependency), typeof(IScopedDependency), typeof(ITransientDependency)};
31+
var types = _allAssemblyFinder.FindAll(true)
32+
.SelectMany(assembly => assembly
33+
.GetTypes()
34+
.Where(type => type.IsClass && !type.IsAbstract && !type.IsInterface
35+
&& !type.HasAttribute<IgnoreDependencyAttribute>()
36+
&& (baseTypes.Any(b => b.IsAssignableFrom(type)) || type.HasAttribute<DependencyAttribute>())))
37+
.ToArray();
3638
return types;
3739
}
3840
}

0 commit comments

Comments
 (0)