package cn.iocoder.yudao.module.im.dal.dataobject.conversation; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.im.dal.dataobject.channel.ImChannelDO; import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupDO; import cn.iocoder.yudao.module.im.dal.dataobject.message.ImChannelMessageDO; import cn.iocoder.yudao.module.im.dal.dataobject.message.ImGroupMessageDO; import cn.iocoder.yudao.module.im.dal.dataobject.message.ImPrivateMessageDO; import cn.iocoder.yudao.module.im.enums.ImConversationTypeEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import java.time.LocalDateTime; /** * IM 会话读位置 DO *

* 只表达「用户在某个会话的最大已读位置」,私聊 / 群聊 / 频道统一落这张表,是读位置的唯一权威。 * * @author 芋道源码 */ @TableName("im_conversation_read") @KeySequence("im_conversation_read_seq") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class ImConversationReadDO extends BaseDO { /** * 编号 */ @TableId private Long id; /** * 用户编号 * * 关联 AdminUserDO 的 id 字段 */ private Long userId; /** * 会话类型 *

* 枚举 {@link ImConversationTypeEnum} */ private Integer conversationType; /** * 目标编号 *

* 私聊关联 AdminUserDO 的 id;群聊关联 {@link ImGroupDO#getId()};频道关联 {@link ImChannelDO#getId()} */ private Long targetId; /** * 最大已读消息编号 *

* 关联 {@link ImPrivateMessageDO#getId()}、{@link ImGroupMessageDO#getId()}、{@link ImChannelMessageDO#getId()} */ private Long messageId; /** * 最近已读时间 */ private LocalDateTime readTime; }