namespace OrpaonVision.Core.Domain; /// /// 支持软删除的实体基类。 /// public abstract class SoftDeleteEntityBase : AuditableEntityBase { private bool _isDeleted; /// /// 是否已删除。 /// public bool IsDeleted { get => _isDeleted; set { if (_isDeleted != value) { _isDeleted = value; if (value) { MarkAsUpdated("System-SoftDelete"); } } } } /// /// 删除时间(UTC)。 /// public DateTime? DeletedAt { get; private set; } /// /// 删除者。 /// public string? DeletedBy { get; private set; } /// /// 删除原因。 /// public string? DeleteReason { get; private set; } /// /// 标记为已删除。 /// /// 删除者。 /// 删除原因。 public virtual void MarkAsDeleted(string? deletedBy = null, string? deleteReason = null) { if (!IsDeleted) { IsDeleted = true; DeletedAt = DateTime.UtcNow; DeletedBy = deletedBy; DeleteReason = deleteReason; MarkAsUpdated(deletedBy); } } /// /// 恢复删除状态。 /// /// 恢复者。 public virtual void Restore(string? restoredBy = null) { if (IsDeleted) { IsDeleted = false; DeletedAt = null; DeletedBy = null; DeleteReason = null; MarkAsUpdated(restoredBy); } } }