版本260406

This commit is contained in:
2026-04-06 22:04:05 +08:00
parent 7dc5e73af7
commit 0b150470be
216 changed files with 98993 additions and 33 deletions

View File

@@ -0,0 +1,106 @@
namespace OrpaonVision.Core.Domain;
/// <summary>
/// 版本化实体基类。
/// </summary>
public abstract class VersionedEntityBase : AuditableEntityBase
{
/// <summary>
/// 版本号。
/// </summary>
public string VersionNo { get; set; } = string.Empty;
/// <summary>
/// 状态。
/// </summary>
public int Status { get; set; }
/// <summary>
/// 发布时间UTC
/// </summary>
public DateTime? PublishedAt { get; private set; }
/// <summary>
/// 发布者。
/// </summary>
public string? PublishedBy { get; private set; }
/// <summary>
/// 是否为当前版本。
/// </summary>
public bool IsCurrent { get; private set; }
/// <summary>
/// 是否已发布。
/// </summary>
public bool IsPublished => PublishedAt.HasValue;
/// <summary>
/// 标记为已发布。
/// </summary>
/// <param name="publishedBy">发布者。</param>
public virtual void MarkAsPublished(string? publishedBy = null)
{
if (!IsPublished)
{
PublishedAt = DateTime.UtcNow;
PublishedBy = publishedBy;
Status = 1; // 已发布状态
MarkAsUpdated(publishedBy);
}
}
/// <summary>
/// 标记为当前版本。
/// </summary>
/// <param name="updatedBy">更新者。</param>
public virtual void MarkAsCurrent(string? updatedBy = null)
{
if (!IsCurrent)
{
IsCurrent = true;
MarkAsUpdated(updatedBy);
}
}
/// <summary>
/// 取消当前版本状态。
/// </summary>
/// <param name="updatedBy">更新者。</param>
public virtual void UnmarkCurrent(string? updatedBy = null)
{
if (IsCurrent)
{
IsCurrent = false;
MarkAsUpdated(updatedBy);
}
}
/// <summary>
/// 设置版本号。
/// </summary>
/// <param name="versionNo">版本号。</param>
/// <param name="updatedBy">更新者。</param>
public virtual void SetVersionNo(string versionNo, string? updatedBy = null)
{
if (VersionNo != versionNo)
{
VersionNo = versionNo;
MarkAsUpdated(updatedBy);
}
}
/// <summary>
/// 设置状态。
/// </summary>
/// <param name="status">状态。</param>
/// <param name="updatedBy">更新者。</param>
public virtual void SetStatus(int status, string? updatedBy = null)
{
if (Status != status)
{
Status = status;
MarkAsUpdated(updatedBy);
}
}
}