package com.xinelu.manage.dto.chatrecord;

import com.xinelu.common.core.domain.BaseEntity;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 图文咨询-聊天记录对象 chat_record
 *
 * @author xinelu
 * @date 2023-09-25
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ChatRecordDTO extends BaseEntity implements Serializable {


    private static final long serialVersionUID = -3911806583514536587L;

    @ApiModelProperty("消息类别 1：通知公告，2：健康推送，3：在线咨询 4：消息通知")
    private String messageCategory;

	/**
	 * 消息来源，用于跳转 1：筛查结果，2：视频问诊
	 */
	private String sourceType;

    /**
     * 聊天记录业务主键(问诊表id)
     */

    @NotNull(message = "聊天记录业务主键不能为空", groups = {Insert.class})
    private Long consultationId;

    /**
     * 消息业务主键
     */
    @NotNull(message = "消息业务主键", groups = {Insert.class})
    private String messageNo;

    /**
     * 发送人
     */
    @NotNull(message = "发送人信息不能为空", groups = {Insert.class})
    private Long senderId;

    /**
     * 发送人(家医医生编号)
     */
    private String senderNo;

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

    /**
     * 发送时间，时间格式：yyyy-MM-dd HH:mm:ss
     */
    @NotNull(message = "接收时间不能为空", groups = {Insert.class})
    private Date sendTime;

    /**
     * 接收人
     */
    @NotNull(message = "接收人信息不能为空", groups = {Insert.class})
    private Long recipientId;

    /**
     * 接收人姓名
     */
    private String recipientName;

    /**
     * 消息类型(0：其他 1：文字，2：图片 3：表情 4：视频 5：文件  6：链接)
     */
    @NotNull(message = "消息类型不能为空", groups = {Insert.class})
    private String messageType;

    /**
     * 消息内容，图片内容时内容为：图片路径
     */
    @NotNull(message = "消息内容不能为空", groups = {Insert.class})
    @Length(max = 400, message = "消息内容不能超过18位", groups = {Insert.class, Update.class})
    private String content;

    /**
     * 消息内容业务主键，用于点击跳转
     */
    private String contentId;

    /**
     * 标题
     */
    private String title;

    @ApiModelProperty("通知适用人群（0：全部人群）")
    private String crowds;

    @ApiModelProperty("通知适用人群名称")
    private String crowdsName;

}
