package com.persagy.dmp.message.model.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.persagy.dmp.common.model.entity.AuditableEntity;
import com.persagy.dmp.message.model.dto.AttachmentDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 消息
 * @author Charlie Yu
 * @date 2021-05-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "dt_message", autoResultMap = true)
public class MessageVO extends AuditableEntity {

    /** 消息类型 */
    @NotNull(message = "消息类型ID不允许为空")
    private String typeId;
    /** 接收用户，多个接收者可以用逗号分隔，最多100个地址 */
    private String userId;
    /** 抄送用户， 多个抄送者可以用逗号分隔，最多100个地址（主要用于邮箱发送） */
    private String copyToUserId;
    /** 消息标题 */
    @NotNull(message = "消息标题不允许为空")
    private String title;
    /** 消息详情 */
    @NotNull(message = "消息内容不允许为空")
    private String content;
    /** 消息附件 */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<AttachmentDTO> attachments;
    /** 关联业务主键 */
    private String businessId;
    /** 所属项目 */
    private String projectId;
    /** 消息发送渠道 - MessageChannelEnum */
    private String sendChannel;
    /** 已读标识 */
    private Boolean readFlag;
    /** 置顶标识 */
    private Boolean topFlag;
}
