package cn.wisenergy.chnmuseum.party.model;

import cn.wisenergy.chnmuseum.party.common.validator.groups.Add;
import cn.wisenergy.chnmuseum.party.common.validator.groups.Update;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 展板
 * </p>
 *
 * @author Danny Lee
 * @since 2021-03-17
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("exhibition_board")
@ApiModel(value = "展板", description = "展板")
public class ExhibitionBoard implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("展板内容ID")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @NotNull(message = "展板内容IDID不能为空", groups = {Update.class})
    private String id;

    @ApiModelProperty("展板分类名称")
    @TableField("name")
    @NotBlank(message = "展板分类名称不能为空", groups = {Add.class, Update.class})
    private String name;

    @ApiModelProperty("展板版权方ID")
    @TableField("board_copyright_owner_id")
    private String boardCopyrightOwnerId;

    @ApiModelProperty("展板分类ID")
    @TableField("exhibition_board_cat_id")
    private String exhibitionBoardCatId;

    @ApiModelProperty("展板图片URL")
    @TableField("cover")
    @NotBlank(message = "展板图片URL不能为空", groups = {Add.class, Update.class})
    private String cover;

    @ApiModelProperty("展板二维码URL")
    @TableField("qrcode_url")
    @NotBlank(message = "展板二维码URL不能为空", groups = {Add.class, Update.class})
    private String qrcodeUrl;

    @ApiModelProperty("简介")
    @TableField("introduction")
    @NotBlank(message = "简介不能为空", groups = {Add.class, Update.class})
    private String introduction;

    @ApiModelProperty("视频版权方ID")
    @TableField("asset_copyright_owner_id")
    private String assetCopyrightOwnerId;

    @ApiModelProperty("视频类别ID")
    @TableField("asset_type_id")
    private String assetTypeId;

    @ApiModelProperty("视频ID")
    @TableField("asset_id")
    @NotBlank(message = "视频ID不能为空", groups = {Add.class, Update.class})
    private String assetId;

    @ApiModelProperty("导览音频URL")
    @TableField("guide_audio_url")
    private String guideAudioUrl;

    @ApiModelProperty("参考资料文件夹")
    @TableField("ref_material_dir")
    @NotBlank(message = "参考资料文件夹不能为空", groups = {Add.class, Update.class})
    private String refMaterialDir;

    @ApiModelProperty("参考资料URL")
    @TableField("ref_material_url")
    private String refMaterialUrl;

    @ApiModelProperty("审核状态")
    @TableField("audit_status")
    private String auditStatus;

    @ApiModelProperty("是否上架")
    @TableField("is_published")
    private Boolean published;

    @ApiModelProperty("创建日期")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @ApiModelProperty("修改日期")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @ApiModelProperty("展板版权方名称")
    @TableField(exist = false)
    private String boardCopyrightOwnerName;

    @ApiModelProperty("展板分类名称")
    @TableField(exist = false)
    private String exhibitionBoardCatName;

    @ApiModelProperty("展板视频URL列表")
    @TableField(exist = false)
    private List<String> videoUrlList;

    @ApiModelProperty("展板音频URL列表")
    @TableField(exist = false)
    private List<String> audioUrlList;

    @ApiModelProperty("参考资料URL列表")
    @TableField(exist = false)
    private List<String> materialUrlList;

}