package com.xjrsoft.module.oa.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author Zexy
 */
@Data
public class AddNewsDto {

    private static final long serialVersionUID = 1L;

    /**
     * 类型（1-新闻2-公告）
     */
    @ApiModelProperty("类型（1-新闻2-公告）")
    @NotNull(message = "类型（1-新闻2-公告）！")
    @Min(value = 1, message = "类型必须大于0")
    private Integer typeId;


    @ApiModelProperty("状态 1=未发布 2=已发布 3=下架")
    @Min(value = 1, message = "类型必须大于0")
    private Integer status;

    /**
     * 父级主键
     */
//    @ApiModelProperty("父级主键")
//    private Long categoryId;

    /**
     * 所属类别
     */
//    @ApiModelProperty("所属类别")
//    @Min(value = 1, message = "类型必须大于0")
//    private String category;

    /**
     * 完整标题
     */
    @ApiModelProperty("标题")
    @Length(min = 1, max = 250, message = "标题最多250个字符！")
    private String fullHead;

    /**
     * 标题颜色
     */
    @ApiModelProperty("标题颜色")
    @Length(min = 1, max = 50, message = "标题颜色最多50个字符！")
    private String fullHeadColor;

    /**
     * 简略标题
     */
//    @ApiModelProperty("简略标题")
//    @Length(min = 1, max = 50, message = "简略标题最多50个字符！")
//    private String briefHead;

    /**
     * 作者
     */
    @ApiModelProperty("作者")
    @Length(min = 1, max = 50, message = "作者最多50个字符！")
    private String authorName;

    /**
     * 编辑
     */
//    @ApiModelProperty("编辑")
//    @Length(min = 1, max = 50, message = "编辑最多50个字符！")
//    private String compileName;

    /**
     * Tag词
     */
//    @ApiModelProperty("Tag词")
//    @Length(min = 1, max = 255, message = "Tag词最多255个字符！")
//    private String tagWord;

    /**
     * 关键字
     */
//    @ApiModelProperty("关键字")
//    @Length(min = 1, max = 250, message = "关键字最多250个字符！")
//    private String keyword;

    /**
     * 来源
     */
//    @ApiModelProperty("来源")
//    @Length(min = 1, max = 250, message = "来源最多250个字符！")
//    private String sourceName;

    /**
     * 来源地址
     */
//    @ApiModelProperty("来源地址")
//    @Length(min = 1, max = 250, message = "来源地址最多250个字符！")
//    private String sourceAddress;

    /**
     * 新闻内容
     */
    @ApiModelProperty("新闻内容")
    @Length(min = 1, max = 1000, message = "新闻内容最多1000个字符！")
    private String newsContent;

    /**
     * 发布时间
     */
    @ApiModelProperty("发布时间")
    private LocalDateTime releaseTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 紧急程度  1=一般 2=紧急
     */
    @ApiModelProperty("紧急程度  1=一般 2=紧急")
    private Integer emergent;

    /**
     * 发送部门
     */
    @ApiModelProperty("发送部门")
    private Long sendDeptId;

    /**
     * 张贴开起时间
     */
//    @ApiModelProperty("张贴开起时间")
//    private LocalDateTime sendStartDate;

    /**
     * 张贴结束时间
     */
    @ApiModelProperty("张贴结束时间")
    private LocalDateTime sendEndDate;

    /**
     * 接收人回复要求 1=必须回复 2=不允许回复 3=可以回复 (不强制要求)
     */
    @ApiModelProperty("接收人回复要求 1=必须回复 2=不允许回复 3=可以回复 (不强制要求)")
    private Integer openReply;

    /**
     * 是否允许接收人转发 0=不能转发 1=允许转发
     */
    @ApiModelProperty("是否允许接收人转发 0=不能转发 1=允许转发")
    private Integer openForward;

    /**
     * 是否允许接收人查看其他接收人 0=不允许查看 1=允许查看
     */
    @ApiModelProperty("是否允许接收人查看其他接收人 0=不允许查看 1=允许查看")
    private Integer openViewOther;

    /**
     * 级别 1=校级 2=班级
     */
//    @ApiModelProperty("级别 1=校级 2=班级")
//    private Integer level;

    /**
     * 班级
     */
//    @ApiModelProperty("班级(base_class)")
//    private Long classId;

    /**
     * 发送范围 1=所有人 2=根据权限
     */
    @ApiModelProperty("发送范围 1=全校教职工 2=全校师生 3=指定人员")
    private Integer sendRange;

    /**
     * 附件子表
     */
    @ApiModelProperty("附件子表")
    @TableField(exist = false)
    @EntityMapping(thisField = "id", joinField = "newsId")
    private List<AddNewsAppendixDto> appendixList;

    /**
     * 关系子表
     */
    @ApiModelProperty("关系子表")
    @TableField(exist = false)
    @EntityMapping(thisField = "id", joinField = "newsId")
    private List<AddNewsRelationDto> relationList;
}
