Entity.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using SqlSugar;
  2. using XF.Domain.Events;
  3. namespace XF.Domain.Entities;
  4. public abstract class Entity : IEntity<string>, IDomainEvents
  5. {
  6. private List<IAppNotification> _domainEvents = new();
  7. public string Id { get; set; }//todo 判断为空时生成递增Id
  8. public void AddEvent(IAppNotification notification)
  9. {
  10. if (_domainEvents.Contains(notification)) return;
  11. _domainEvents.Add(notification);
  12. }
  13. public void ClearEvents() => _domainEvents.Clear();
  14. public ICollection<IAppNotification> QueryAllEvents() => _domainEvents;
  15. }
  16. /// <summary>
  17. /// 实体(带有创建时间)
  18. /// </summary>
  19. public abstract class CreationEntity : Entity, IHasCreationTime
  20. {
  21. /// <summary>
  22. /// 创建时间
  23. /// </summary>
  24. [SugarColumn(ColumnDescription = "创建时间")]
  25. public DateTime CreationTime { get; set; }
  26. }
  27. /// <summary>
  28. /// 实体(带有软删除)
  29. /// </summary>
  30. public abstract class SoftDeleteEntity : Entity, IHasDeletionTime, ISoftDelete
  31. {
  32. /// <summary>
  33. /// 删除时间
  34. /// </summary>
  35. [SugarColumn(ColumnDescription = "删除时间")]
  36. public DateTime? DeletionTime { get; private set; }
  37. [SugarColumn(ColumnDescription = "是否删除")]
  38. public bool IsDeleted { get; private set; }
  39. public void SoftDelete()
  40. {
  41. IsDeleted = true;
  42. DeletionTime = DateTime.Now;
  43. }
  44. }
  45. /// <summary>
  46. /// 实体(带有创建时间和软删除)
  47. /// </summary>
  48. public abstract class CreationSoftDeleteEntity : CreationEntity, IHasDeletionTime, ISoftDelete
  49. {
  50. [SugarColumn(ColumnDescription = "是否删除")]
  51. public bool IsDeleted { get; private set; }
  52. /// <summary>
  53. /// 删除时间
  54. /// </summary>
  55. [SugarColumn(ColumnDescription = "删除时间")]
  56. public DateTime? DeletionTime { get; set; }
  57. public void SoftDelete()
  58. {
  59. IsDeleted = true;
  60. DeletionTime = DateTime.Now;
  61. }
  62. public void Recover() => IsDeleted = false;
  63. }
  64. public abstract class CreationModificationEntity : CreationEntity, IHasModificationTime
  65. {
  66. /// <summary>
  67. /// 最近更新时间
  68. /// </summary>
  69. [SugarColumn(ColumnDescription = "最近更新时间")]
  70. public DateTime? LastModificationTime { get; set; }
  71. public void Modified() => LastModificationTime = DateTime.Now;
  72. }
  73. /// <summary>
  74. /// 全状态实体(创建时间、更新时间、软删除)
  75. /// </summary>
  76. public abstract class FullStateEntity : CreationSoftDeleteEntity, IHasModificationTime
  77. {
  78. /// <summary>
  79. /// 最近更新时间
  80. /// </summary>
  81. [SugarColumn(ColumnDescription = "最近更新时间")]
  82. public DateTime? LastModificationTime { get; set; }
  83. public void Modified() => LastModificationTime = DateTime.Now;
  84. }
  85. /// <summary>
  86. /// 实体(权限、创建时间)
  87. /// </summary>
  88. public abstract class CreationEntityHasAuth : Entity, IHasCreationTime, IHasAuth
  89. {
  90. /// <summary>
  91. /// 创建时间
  92. /// </summary>
  93. [SugarColumn(ColumnDescription = "创建时间")]
  94. public DateTime CreationTime { get; set; }
  95. /// <summary>
  96. /// 组织编码
  97. /// </summary>
  98. [SugarColumn(ColumnDescription ="组织编码")]
  99. public string OrgCode { get; set; }
  100. /// <summary>
  101. /// 创建人
  102. /// </summary>
  103. [SugarColumn(ColumnDescription ="创建人")]
  104. public string CreateUserId { get; set; }
  105. }
  106. /// <summary>
  107. /// 实体(权限、创建时间、软删除)
  108. /// </summary>
  109. public abstract class CreationSoftDeleteEntityHasAuth:CreationEntityHasAuth, IHasDeletionTime, ISoftDelete
  110. {
  111. [SugarColumn(ColumnDescription = "是否删除")]
  112. public bool IsDeleted { get; private set; }
  113. /// <summary>
  114. /// 删除时间
  115. /// </summary>
  116. [SugarColumn(ColumnDescription = "删除时间")]
  117. public DateTime? DeletionTime { get; set; }
  118. public void SoftDelete()
  119. {
  120. IsDeleted = true;
  121. DeletionTime = DateTime.Now;
  122. }
  123. public void Recover() => IsDeleted = false;
  124. }
  125. /// <summary>
  126. /// 实体(权限、修改时间)
  127. /// </summary>
  128. public abstract class CreationModifycationHasAuth: CreationEntityHasAuth, IHasModificationTime
  129. {
  130. /// <summary>
  131. /// 最近更新时间
  132. /// </summary>
  133. [SugarColumn(ColumnDescription = "最近更新时间")]
  134. public DateTime? LastModificationTime { get; set; }
  135. public void Modified() => LastModificationTime = DateTime.Now;
  136. }
  137. /// <summary>
  138. /// 全状态实体(权限、创建时间、更新时间、软删除)
  139. /// </summary>
  140. public abstract class FullStateEntityHasAuthEntity: CreationSoftDeleteEntityHasAuth, IHasModificationTime
  141. {
  142. /// <summary>
  143. /// 最近更新时间
  144. /// </summary>
  145. [SugarColumn(ColumnDescription = "最近更新时间")]
  146. public DateTime? LastModificationTime { get; set; }
  147. public void Modified() => LastModificationTime = DateTime.Now;
  148. }