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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yonge.cooleshow.biz.dal.entity.Teacher;
import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
import com.yonge.cooleshow.common.enums.UserLockFlag;
import com.yonge.cooleshow.common.enums.UserStatusEnum;
import com.yonge.cooleshow.common.enums.YesOrNoEnum;

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

import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @Author: liweifan
 * @Data: 2022/3/22 10:10
 */
@ApiModel(value = "TeacherVo对象", description = "教师详情")
public class TeacherVo extends Teacher {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("会员剩余有效期天数")
    private Integer membershipDays;
    @ApiModelProperty("头像地址")
    private String avatar;
    @ApiModelProperty("老师昵称")
    private String username;
    @ApiModelProperty(value = "性别 0女 1男")
    private GenderEnum gender;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "是否实名 0否 1是")
    private YesOrNoEnum isReal;
    @ApiModelProperty(value = "是否绑卡 0否 1是")
    private YesOrNoEnum isBank;
    @ApiModelProperty(value = "真实姓名")
    private String realName;
    @ApiModelProperty(value = "身份证号码")
    private String idCardNo;
    @ApiModelProperty(value = "出生日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthdate;
    @ApiModelProperty(value = "审核人")
    private String verifyUser;
    @ApiModelProperty(value = "0-正常， 1-锁定")
    private UserLockFlag lockFlag;
    @ApiModelProperty(value = "声部名称（支持多个，用逗号分隔） ")
    private String subjectName;
    @ApiModelProperty(value = "老师类型（支持多个，用逗号分隔） ENTRY 认证老师 MUSICIAN 音乐人 ")
    private String teacherType;
    @ApiModelProperty(value = "老师风采视频")
    private List<TeacherStyleVideo> styleVideo;
    @ApiModelProperty(value = "学生 STUDENT 老师 TEACHER 系统用户 STSTEM")
    private String userType;
    @ApiModelProperty(value = "是否会员 0否 1是")
    private YesOrNoEnum isVip;

    @ApiModelProperty(value = "是否注销 0否 1是")
    private YesOrNoEnum delFlag;
    
    private String tag;

    @ApiModelProperty(value = "用户状态 NORMAL-正常   LOCKED-冻结  CLOSED-关闭")
    private UserStatusEnum userStatus;

    @ApiModelProperty("星级")
    private Integer starGrade;
    @ApiModelProperty("粉丝数")
    private Integer fansNum;
    @ApiModelProperty("已上课时")
    private Integer expTime;
    @ApiModelProperty("未上课时")
    private Integer unExpTime;
    @ApiModelProperty("专辑数 ")
    private Integer musicAlbumNum;
    @ApiModelProperty("曲谱数 ")
    private Integer musicSheetNum;
    @ApiModelProperty("学生数")
    private Integer studentNums;

    public YesOrNoEnum getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(YesOrNoEnum delFlag) {
        this.delFlag = delFlag;
    }

    public Integer getMembershipDays() {
        return membershipDays;
    }

    public void setMembershipDays(Integer membershipDays) {
        this.membershipDays = membershipDays;
    }

    public YesOrNoEnum getIsVip() {
        return isVip;
    }

    public void setIsVip(YesOrNoEnum isVip) {
        this.isVip = isVip;
    }

    public void setGender(GenderEnum gender) {
        this.gender = gender;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public YesOrNoEnum getIsReal() {
        return isReal;
    }

    public void setIsReal(YesOrNoEnum isReal) {
        this.isReal = isReal;
    }

    public YesOrNoEnum getIsBank() {
        return isBank;
    }

    public void setIsBank(YesOrNoEnum isBank) {
        this.isBank = isBank;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public String getIdCardNo() {
        return idCardNo;
    }

    public void setIdCardNo(String idCardNo) {
        this.idCardNo = idCardNo;
    }

    public Date getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(Date birthdate) {
        this.birthdate = birthdate;
    }

    public String getVerifyUser() {
        return verifyUser;
    }

    public void setVerifyUser(String verifyUser) {
        this.verifyUser = verifyUser;
    }

    public List<TeacherStyleVideo> getStyleVideo() {
        return styleVideo;
    }

    public void setStyleVideo(List<TeacherStyleVideo> styleVideo) {
        this.styleVideo = styleVideo;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    public GenderEnum getGender() {
        return gender;
    }

    public void setGender(Object gender) {
        if(gender instanceof GenderEnum ){
            this.gender = (GenderEnum) gender;
        }else if (null != gender) {
            this.gender = GenderEnum.valueOf(Integer.parseInt(gender.toString()));
        }
    }



    public UserLockFlag getLockFlag() {
        return lockFlag;
    }

    public void setLockFlag(UserLockFlag lockFlag) {
        this.lockFlag = lockFlag;
    }

    public String getTeacherType() {
        return teacherType;
    }

    public void setTeacherType(String teacherType) {
        this.teacherType = teacherType;
    }

    public String getUserType() {
        return userType;
    }

    public void setUserType(String userType) {
        this.userType = userType;
    }

	public String getTag() {
		return tag;
	}

	public void setTag(String tag) {
		this.tag = tag;
	}

	public UserStatusEnum getUserStatus() {
		return userStatus;
	}

	public void setUserStatus(UserStatusEnum userStatus) {
		this.userStatus = userStatus;
	}

    public Integer getStarGrade() {
        return starGrade;
    }

    public void setStarGrade(Integer starGrade) {
        this.starGrade = starGrade;
    }

    public Integer getFansNum() {
        return fansNum;
    }

    public void setFansNum(Integer fansNum) {
        this.fansNum = fansNum;
    }

    public Integer getExpTime() {
        return expTime;
    }

    public void setExpTime(Integer expTime) {
        this.expTime = expTime;
    }

    public Integer getUnExpTime() {
        return unExpTime;
    }

    public void setUnExpTime(Integer unExpTime) {
        this.unExpTime = unExpTime;
    }

    public Integer getMusicAlbumNum() {
        return musicAlbumNum;
    }

    public void setMusicAlbumNum(Integer musicAlbumNum) {
        this.musicAlbumNum = musicAlbumNum;
    }

    public Integer getMusicSheetNum() {
        return musicSheetNum;
    }

    public void setMusicSheetNum(Integer musicSheetNum) {
        this.musicSheetNum = musicSheetNum;
    }

    public Integer getStudentNums() {
        return studentNums;
    }

    public void setStudentNums(Integer studentNums) {
        this.studentNums = studentNums;
    }


    public TeacherVo starGrade(Integer starGrade) {
        this.starGrade = starGrade;
        return this;
    }

    public TeacherVo fansNum(Integer fansNum) {
        this.fansNum = fansNum;
        return this;
    }

    public TeacherVo expTime(Integer expTime) {
        this.expTime = expTime;
        return this;
    }

    public TeacherVo unExpTime(Integer unExpTime) {
        this.unExpTime = unExpTime;
        return this;
    }

    public TeacherVo musicAlbumNum(Integer musicAlbumNum) {
        this.musicAlbumNum = musicAlbumNum;
        return this;
    }

    public TeacherVo musicSheetNum(Integer musicSheetNum) {
        this.musicSheetNum = musicSheetNum;
        return this;
    }

    public TeacherVo studentNums(Integer studentNums) {
        this.studentNums = studentNums;
        return this;
    }
}
