package com.yonge.cooleshow.biz.dal.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
import com.yonge.cooleshow.biz.dal.valid.AddGroup;
import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
import com.yonge.cooleshow.common.entity.BaseEntity;
import com.yonge.cooleshow.common.enums.YesOrNoEnum;

/**
 * 视频课基本信息表
 *
 * @author yzp
 * @version v1.0
 * @date 2022-03-25 23:46:28
 **/
@ApiModel(value = "video_lesson_group-视频课基本信息表")
public class VideoLessonGroup extends BaseEntity {

    @TableId(value = "id_", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @NotNull(message = "组id不能为空;", groups = {UpdateGroup.class})
    private Long id;  //主键ID

    @TableField("lesson_name_")
    @ApiModelProperty(value = "课程名称", required = true)
    @NotBlank(message = "课程名称不能为空;", groups = {AddGroup.class, UpdateGroup.class})
    @Size(max = 20, message = "课程名称长度不能超过20个字")
    private String lessonName;  //课程名称

    @TableField("lesson_subject_")
    @ApiModelProperty(value = "课程声部id")
    private String lessonSubject;  //课程声部

    @TableField(exist = false)
    @ApiModelProperty(value = "声部名称")
    private String lessonSubjectName;

    @TableField("lesson_desc_")
    @ApiModelProperty(value = "课程介绍", required = true)
    @NotBlank(message = "课程介绍不能为空;", groups = {AddGroup.class, UpdateGroup.class})
    private String lessonDesc;  //课程介绍

    @TableField("lesson_price_")
    @ApiModelProperty(value = "课程价格", required = true)
    @NotNull(message = "课程价格不能为空;", groups = {AddGroup.class, UpdateGroup.class})
    private BigDecimal lessonPrice;  //课程价格

    @TableField("lesson_cover_url_")
    @ApiModelProperty(value = "课程封面图片URL", required = true)
    @NotBlank(message = "课程封面图片URL不能为空;", groups = {AddGroup.class, UpdateGroup.class})
    private String lessonCoverUrl;  //课程封面图片URL

    @TableField("teacher_id_")
    @ApiModelProperty(value = "老师ID")
    private Long teacherId;  //老师ID

    @TableField("lesson_count_")
    @ApiModelProperty(value = "课程节数")
    private Integer lessonCount;  //课程节数

    @TableField("sort_number_")
    @ApiModelProperty(value = "排序号")
    private Integer sortNumber;  //排序号

    @TableField("lesson_tag_")
    @ApiModelProperty(value = "课程标签")
    private String lessonTag;  //课程标签

    @TableField("top_flag_")
    @ApiModelProperty(value = "是否置顶")
    private Integer topFlag;  //是否置顶

    @TableField("hot_flag_")
    @ApiModelProperty(value = "是否热门课程")
    private Integer hotFlag;  //是否热门课程

    @TableField("shelves_flag_")
    @ApiModelProperty(value = "是否上架 （0:否  1：是）")
    private Integer shelvesFlag;  //是否上架 （0:否  1：是）

    @TableField("shelves_time_")
    @ApiModelProperty(value = "上下架时间")
    private Date shelvesTime;

    @TableField("shelves_reason_")
    @ApiModelProperty(value = "上下架原因")
    private String shelvesReason;

    @TableField("shelves_id_")
    @ApiModelProperty(value = "上下架人")
    private Long shelvesId;

    @TableField("audit_status_")
    @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
    private AuthStatusEnum auditStatus;  //审核状态

    @TableField("create_time_")
    @ApiModelProperty(value = "创建时间")
    private java.util.Date createTime;  //创建时间

    @TableField("update_time_")
    @ApiModelProperty(value = "更新时间")
    private java.util.Date updateTime;  //更新时间

    @TableField("audit_name_")
    @ApiModelProperty(value = "审批人")
    private String auditName;

    @TableField("audit_id_")
    @ApiModelProperty(value = "审批人id")
    private Integer auditId;

    @TableField("audit_version_")
    @ApiModelProperty(value = "是否审核时可见 （0:否  1：是）")
    private YesOrNoEnum auditVersion = YesOrNoEnum.NO;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getLessonName() {
        return lessonName;
    }

    public void setLessonName(String lessonName) {
        this.lessonName = lessonName;
    }

    public String getLessonSubject() {
        return lessonSubject;
    }

    public void setLessonSubject(String lessonSubject) {
        this.lessonSubject = lessonSubject;
    }

    public String getLessonSubjectName() {
        return lessonSubjectName;
    }

    public void setLessonSubjectName(String lessonSubjectName) {
        this.lessonSubjectName = lessonSubjectName;
    }

    public String getLessonDesc() {
        return lessonDesc;
    }

    public void setLessonDesc(String lessonDesc) {
        this.lessonDesc = lessonDesc;
    }

    public BigDecimal getLessonPrice() {
        return lessonPrice;
    }

    public void setLessonPrice(BigDecimal lessonPrice) {
        this.lessonPrice = lessonPrice;
    }

    public String getLessonCoverUrl() {
        return lessonCoverUrl;
    }

    public void setLessonCoverUrl(String lessonCoverUrl) {
        this.lessonCoverUrl = lessonCoverUrl;
    }

    public Long getTeacherId() {
        return teacherId;
    }

    public void setTeacherId(Long teacherId) {
        this.teacherId = teacherId;
    }

    public Integer getLessonCount() {
        return lessonCount;
    }

    public void setLessonCount(Integer lessonCount) {
        this.lessonCount = lessonCount;
    }

    public Integer getSortNumber() {
        return sortNumber;
    }

    public void setSortNumber(Integer sortNumber) {
        this.sortNumber = sortNumber;
    }

    public String getLessonTag() {
        return lessonTag;
    }

    public void setLessonTag(String lessonTag) {
        this.lessonTag = lessonTag;
    }

    public Integer getTopFlag() {
        return topFlag;
    }

    public void setTopFlag(Integer topFlag) {
        this.topFlag = topFlag;
    }

    public Integer getHotFlag() {
        return hotFlag;
    }

    public void setHotFlag(Integer hotFlag) {
        this.hotFlag = hotFlag;
    }

    public AuthStatusEnum getAuditStatus() {
        return auditStatus;
    }

    public void setAuditStatus(AuthStatusEnum auditStatus) {
        this.auditStatus = auditStatus;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getAuditName() {
        return auditName;
    }

    public void setAuditName(String auditName) {
        this.auditName = auditName;
    }

    public Integer getAuditId() {
        return auditId;
    }

    public void setAuditId(Integer auditId) {
        this.auditId = auditId;
    }

    public YesOrNoEnum getAuditVersion() {
        return auditVersion;
    }

    public void setAuditVersion(YesOrNoEnum auditVersion) {
        this.auditVersion = auditVersion;
    }

    public Integer getShelvesFlag() {
        return shelvesFlag;
    }

    public void setShelvesFlag(Integer shelvesFlag) {
        this.shelvesFlag = shelvesFlag;
    }

    public Date getShelvesTime() {
        return shelvesTime;
    }

    public void setShelvesTime(Date shelvesTime) {
        this.shelvesTime = shelvesTime;
    }

    public String getShelvesReason() {
        return shelvesReason;
    }

    public void setShelvesReason(String shelvesReason) {
        this.shelvesReason = shelvesReason;
    }

    public Long getShelvesId() {
        return shelvesId;
    }

    public void setShelvesId(Long shelvesId) {
        this.shelvesId = shelvesId;
    }
}