using System; namespace LiveForum.Model.Events { /// /// 消息事件基类 /// public abstract class MessageEventBase { /// /// 事件唯一ID /// public string EventId { get; set; } = Guid.NewGuid().ToString(); /// /// 事件发生时间 /// public DateTime OccurredAt { get; set; } = DateTime.Now; /// /// 触发用户ID(发送消息的用户) /// public long TriggerId { get; set; } /// /// 接收消息的用户ID /// public long ReceiverId { get; set; } /// /// 事件类型名称 /// public abstract string EventType { get; } } /// /// 内容快照(帖子、评论等) /// public class ContentSnapshot { /// /// 帖子ID /// public long? PostId { get; set; } /// /// 帖子标题 /// public string PostTitle { get; set; } /// /// 评论ID /// public long? CommentId { get; set; } /// /// 评论内容 /// public string CommentContent { get; set; } } /// /// 点赞事件 /// public class LikeEvent : MessageEventBase { public override string EventType => "Like"; /// /// 点赞目标类型:1-帖子,2-评论,3-送花 /// public byte ContentType { get; set; } /// /// 点赞目标ID /// public long ContentId { get; set; } /// /// 内容快照(帖子标题或评论内容) /// public ContentSnapshot Content { get; set; } } /// /// 评论回复事件 /// public class CommentReplyEvent : MessageEventBase { public override string EventType => "CommentReply"; /// /// 新评论ID /// public long CommentId { get; set; } /// /// 评论内容 /// public string CommentContent { get; set; } /// /// 帖子ID /// public long PostId { get; set; } /// /// 帖子标题 /// public string PostTitle { get; set; } /// /// 父评论ID(如果是回复评论) /// public long? ParentCommentId { get; set; } /// /// 我的评论内容(被回复的评论内容) /// public string MyCommentContent { get; set; } /// /// 是否是直接评论帖子(false表示回复评论) /// public bool IsDirectComment { get; set; } } /// /// 自定义消息事件(用于简化版消息发送) /// public class CustomMessageEvent : MessageEventBase { public override string EventType => "Custom"; /// /// 消息类型:1-回复消息,2-点赞消息 /// public int MessageType { get; set; } /// /// 消息标题 /// public string Title { get; set; } /// /// 消息内容 /// public string Content { get; set; } /// /// 我的评论内容(可选,用于回复消息) /// public string MyCommentContent { get; set; } } }