using IRaCIS.Core.Domain.Models; using MassTransit; using System.ComponentModel; using System.Globalization; namespace IRaCIS.Core.Domain.BaseModel; /// <summary> /// 事件 不影响数据库提交事务的,不会记录稽查 /// /// 比如 添加subject 自动添加访视,不适合作为事件,否则自动添加访视后,记录稽查,当前请求url 都不知道 /// </summary> [Description("领域实体事件基类")] public abstract class DomainEvent { public Guid EventId { get; set; } = NewId.NextSequentialGuid(); //是不是延迟消费的事件,需要用定时任务调度 public bool IsDelayScheduleEvent => DelaySeconds!=null && DelaySeconds > 0; /// <summary> /// 在事件产生多少s后开始消费该事件 /// </summary> public int? DelaySeconds{ get; set; } public string CultureInfoName { get; set; } = CultureInfo.CurrentCulture.Name; } /// <summary> /// 命令,触发一些操作,在当前事务一起提交 /// </summary> [Description("领域实体命令基类")] public abstract class DomainCommand { } public class FailedDomainEvent { public Guid Id { get; set; } public string EventType { get; set; } = string.Empty; public string EventData { get; set; } = string.Empty; public DateTime FailedAt { get; set; } }