package org.xyzh.common.dto.message;

import lombok.Data;
import java.io.Serializable;
import java.util.Date;

/**
 * 用户消息视图对象
 *
 * @description 用于前端展示的用户消息对象，包含用户信息和消息阅读状态
 * @filename MessageUserVO.java
 * @author Claude
 * @copyright xyzh
 * @since 2025-11-13
 */
@Data
public class MessageUserVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private String id;

    /**
     * 消息ID
     */
    private String messageID;

    /**
     * 用户ID
     */
    private String userID;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户姓名
     */
    private String fullName;

    /**
     * 用户所属部门ID
     */
    private String deptID;

    /**
     * 用户所属部门名称
     */
    private String deptName;

    /**
     * 实际发送方式：system-系统消息/email-邮件/sms-短信
     */
    private String sendMethod;

    /**
     * 是否已读：0-未读，1-已读
     */
    private Boolean isRead;

    /**
     * 阅读时间
     */
    private Date readTime;

    /**
     * 发送状态：pending-待发送/success-发送成功/failed-发送失败
     */
    private String sendStatus;

    /**
     * 失败原因
     */
    private String failReason;

    /**
     * 创建时间
     */
    private Date createTime;

    // ========== 消息主体信息（用户端查看消息列表时需要） ==========
    /**
     * 消息标题
     */
    private String title;

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

    /**
     * 消息类型
     */
    private String messageType;

    /**
     * 优先级
     */
    private String priority;

    /**
     * 发送人姓名
     */
    private String senderName;

    /**
     * 发送人部门名称
     */
    private String senderDeptName;

    /**
     * 实际发送时间
     */
    private Date actualSendTime;
}
