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; }
}
}