Blame view

Yi.Abp.Net8/module/audit-logging/Yi.Framework.AuditLogging.Domain/Entities/EntityChangeEntity.cs 2.46 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  using System.Reflection;
  using SqlSugar;
  using Volo.Abp.Auditing;
  using Volo.Abp.Domain.Entities;
  using Volo.Abp.Guids;
  using Volo.Abp.MultiTenancy;
  using Yi.Framework.AuditLogging.Domain.Shared.Consts;
  
  namespace Yi.Framework.AuditLogging.Domain.Entities
  {
      [SugarTable("YiEntityChange")]
      [SugarIndex($"index_{nameof(AuditLogId)}", nameof(AuditLogId), OrderByType.Asc)]
      [SugarIndex($"index_{nameof(TenantId)}_{nameof(EntityId)}", nameof(TenantId), OrderByType.Asc, nameof(EntityTypeFullName), OrderByType.Asc, nameof(EntityId), OrderByType.Asc)]
      public class EntityChangeEntity : Entity<Guid>, IMultiTenant
      {
          public EntityChangeEntity() { }
  
          [SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
          public override Guid Id { get; protected set; }
          public virtual Guid AuditLogId { get; protected set; }
  
          public virtual Guid? TenantId { get; protected set; }
  
          public virtual DateTime? ChangeTime { get; protected set; }
  
          public virtual EntityChangeType? ChangeType { get; protected set; }
  
          public virtual Guid? EntityTenantId { get; protected set; }
  
          public virtual string? EntityId { get; protected set; }
  
          public virtual string? EntityTypeFullName { get; protected set; }
          [Navigate(NavigateType.OneToMany, nameof(EntityPropertyChangeEntity.EntityChangeId))]
          public virtual List<EntityPropertyChangeEntity> PropertyChanges { get; protected set; }
  
  
          public EntityChangeEntity(
         IGuidGenerator guidGenerator,
         Guid auditLogId,
         EntityChangeInfo entityChangeInfo,
         Guid? tenantId = null)
          {
              Id = guidGenerator.Create();
              AuditLogId = auditLogId;
              TenantId = tenantId;
              ChangeTime = entityChangeInfo.ChangeTime;
              ChangeType = entityChangeInfo.ChangeType;
              EntityTenantId = entityChangeInfo.EntityTenantId;
              EntityId = entityChangeInfo.EntityId.Truncate(EntityChangeConsts.MaxEntityTypeFullNameLength);
              EntityTypeFullName = entityChangeInfo.EntityTypeFullName.TruncateFromBeginning(EntityChangeConsts.MaxEntityTypeFullNameLength);
  
              PropertyChanges = entityChangeInfo
                                    .PropertyChanges?
                                    .Select(p => new EntityPropertyChangeEntity(guidGenerator, Id, p, tenantId))
                                    .ToList()
                                ?? new List<EntityPropertyChangeEntity>();
  
  
          }
      }
  }