package com.ruoyi.frequency.appmessage.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.vo.UserInfo;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.List;

/**
 * app端消息对象 t_app_message
 * 
 * @author liwenlong
 * @date 2023-07-20
 */
@Data
@Accessors(chain = true)
@TableName("t_app_message")
public class AppMessage extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键id */
    private Long id;



    /** 删除标志 1正常 删除 3 禁用 */
    private Integer delFlag;

    /** 消息针对群体 1 用户 2 表现师 3 全部 */
    @Excel(name = "消息针对群体 -1 全部 1 用户 2 表现师 3 销售")
    private Integer userType;

    /** 消息标题 */
    @Excel(name = "消息标题")
    private String title;

    /** 消息内容 */
    @Excel(name = "消息内容")
    private String content;

    /** 消息类型 1 群体 2 个人 */
    @Excel(name = "消息类型 1 群体 2 个人")
    private Integer messageType;

    /** 用户id(表现师id) */
    @Excel(name = "用户id(表现师id)")
    private String userIds;

    /** 是否发布 1 否2 是 */
    @Excel(name = "是否发布 1 否2 是")
    private Integer hasRelease;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date releaseTime;

    /** 1 平台发布 2 系统生成 */
    @Excel(name = "1 平台发布 2 系统生成")
    private Integer isSystem;


    /**
     * 用户读取系统消息id
     */
    @TableField(exist = false)
    private Long userAppMessageId;

    @TableField(exist = false)
    private Integer isRead;

    @TableField(exist = false)
    List<UserInfo> userInfoList;

    public AppMessage(){

    }

    public AppMessage(String title, String content, Integer messageType, Integer userType,String userIds){
        this.title=title;
        this.content=content;
        this.messageType=messageType;
        this.userType=userType;
        this.hasRelease=2;
        this.delFlag=1;
        this.releaseTime= new Date();
    }


}
