package com.yh.saas.plugin.news.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yh.saas.common.support.entity.BaseModel;
import com.yh.saas.common.support.util.query.SearchField;
import com.yh.saas.common.support.util.query.SearchMode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * <p>
 * 标准新闻信息
 * </p>
 *
 * @author Wangs
 * @since 2020-02-18
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("news_common_announcement_issue_info")
public class CommonAnnouncementIssueInfo extends BaseModel<CommonAnnouncementIssueInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(type = IdType.INPUT)
    private String id;
    /**
     * 公告标题
     */
    private String title;
    /**
     * 公告内容
     */
    private String content;
    /**
     * 公告类型id
     */
    @SearchField(mode = SearchMode.EQ)
    private String typeId;
    /**
     * 公告类型
     */
    private String typeName;
    /**
     * OSS封面存储地址
     */
    private String ossCoverUrl;
    /**
     * 发布人ID
     */
    private String issueUserId;
    /**
     * 发布人姓名
     */
    private String issueUserName;
    /**
     * 发布人日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date issueDate;
    /**
     * 网站名
     */
    private String websiteName;
    /**
     * 网站地址
     */
    private String websiteUrl;
    /**
     * 租户id
     */
    private String tenantId;
    /**
     * 租户名
     */
    private String tenantName;
    /**
     * 是否发布
     */
    private String isIssue;
    /**
     * 是否发布（0：不发布，1第一条，2第二条）
     */
    private String defaultNews;
    /**
     * 按喜好发布
     */
    private Boolean likeFlag;

    /**
     * 发布开始日期
     */
    @SearchField(value = "issue_date", mode = SearchMode.GE)
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dateStart;

    /**
     * 发布结束日期
     */
    @SearchField(value = "issue_date", mode = SearchMode.LE)
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dateEnd;

    @TableField(exist = false)
    private String defaultNewsName;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    /**
     * 查询用字段
     */
    public static class QueryFields {

        public static final String ISSUE_DATE = "issue_date";

        public static final String IS_ISSUE = "is_issue";

        public static final String DEFAULT_NEWS = "default_news";

        private QueryFields() {
        }
    }
}
