package com.sikey.wa04.business.infrastructure.dto.response.messaging;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 消息加载 Response
 *
 * @author luoyangwei
 * @date 2024年10月15日18:01:08
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class HistoryMessageSessionResponse {
    private List<Session> sessions;

    @Data
    @Accessors(chain = true)
    public static class Session {
        /**
         * 会话ID
         */
        private String sid;

        /**
         * 小孩ID
         */
        private String cid;

        /**
         * 会话名
         */
        private String name;

        /**
         * 是否是群聊
         */
        private Boolean isGroup;

        /**
         * 未读总数
         */
        private Integer unreadCount;

        /**
         * 未读消息最旧的一条消息ID
         */
        private Long unreadOldMsgId;

        /**
         * 会话成员
         */
        private List<SessionMember> members;

        /**
         * 消息内容
         */
        private Object content;

        /**
         * 消息类型
         */
        private Integer messageType;
    }

    @Data
    @Accessors(chain = true)
    public static class SessionMember {
        /**
         * 成员ID
         */
        private String refId;

        /**
         * 成员类型
         *
         * @see com.sikey.wa04.common.enums.UserType
         */
        private Integer refType;

        /**
         * 成员角色
         *
         * @see com.sikey.wa04.common.enums.GroupMemberRole
         */
        private Integer refRole;

        /**
         * 头像
         */
        private String avatar;

        /**
         * 名称
         */
        private String name;
    }

    @Data
    @Accessors(chain = true)
    public static class SessionMessage {
        /**
         * 消息ID
         */
        private Long msgId;

        /**
         * 消息类型
         *
         * @see com.sikey.wa04.common.enums.MessageType
         */
        private Integer msgType;

        /**
         * 接收者ID
         */
        private String recvId;

        /**
         * 发送者ID
         */
        private String sendId;

        /**
         * 发送时间
         */
        private Long sendTime;

        /**
         * 消息内容
         */
        private Object content;
    }
}
