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

import com.baomidou.mybatisplus.annotation.TableField;
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.AuthStatusEnum;
import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
import com.yonge.cooleshow.common.enums.YesOrNoEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @Author: liweifan
 * @Data: 2022/3/21 18:37
 */
@Data
@ApiModel(value = "TeacherHomeVo对象", description = "老师主页基本信息返回")
public class TeacherHomeVo extends Teacher implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("头像地址")
    private String heardUrl;
    @ApiModelProperty("机构名称")
    private String tenantName;
    @ApiModelProperty("老师昵称")
    private String username;
    @ApiModelProperty("星级")
    private Integer starGrade;
    @ApiModelProperty("粉丝数")
    private Integer fansNum;
    @ApiModelProperty("已上课时")
    private Integer expTime;
    @ApiModelProperty("未上课时")
    private Integer unExpTime;
    @ApiModelProperty("会员剩余有效期天数")
    private Integer membershipDays;
    @ApiModelProperty("专辑数 ")
    private Integer musicAlbumNum;
    @ApiModelProperty("曲谱数 ")
    private Integer musicSheetNum;

    @ApiModelProperty("学生数")
    private Integer studentNums;

    @ApiModelProperty(value = "声部名称（支持多个，用逗号分隔） ")
    private String subjectName;
    @ApiModelProperty(value = "性别 0女 1男")
    private GenderEnum gender;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @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("老师入驻状态 0、未申请  UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
    private AuthStatusEnum entryStatus;
    @ApiModelProperty("音乐人审核状态  0、未申请 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
    private AuthStatusEnum musicianAuthStatus;
    @ApiModelProperty("是否有直播权限 0 否 1 是")
    private YesOrNoEnum liveFlag;
    @ApiModelProperty(value = "是否实名 0否 1是")
    private YesOrNoEnum isReal;
    @ApiModelProperty(value = "是否绑卡 0否 1是")
    private YesOrNoEnum isBank;
    @ApiModelProperty(value = "老师是否在直播中 0否 1是")
    private YesOrNoEnum liveing;
    @ApiModelProperty(value = "直播间房号")
    private String roomUid;
    @ApiModelProperty(value = "是否关注 0否 1是")
    private YesOrNoEnum isStar;
    @ApiModelProperty(value = "老师风采视频")
    private List<TeacherStyleVideo> styleVideo;
    @ApiModelProperty(value = "学生 STUDENT 老师 TEACHER 系统用户 STSTEM")
    private String userType;



    @ApiModelProperty(value = "会员信息")
    private VipCardRecordWrapper.UserVip userVip;

    @ApiModelProperty(value = "默认查询声部名称 ")
    private String defaultSubjectName;

    @ApiModelProperty(value = "学练工具是否有效 0否 1是")
    private YesOrNoEnum tenantAlbumFlag;

    @ApiModelProperty(value = "0:没有专辑 1：有，但是未解锁，2：有，且已解锁")
    private Integer tenantAlbumStatus;
    @ApiModelProperty(value = "IM用户ID")
    private String imUserId;

    @ApiModelProperty(value = "imToken")
    private String imToken;

    @ApiModelProperty("客服数量")
    private Integer customerServiceNum;

    public String getTenantName() {
        return tenantName;
    }

    public void setTenantName(String tenantName) {
        this.tenantName = tenantName;
    }

    public String getDefaultSubjectName() {
        return defaultSubjectName;
    }

    public void setDefaultSubjectName(String defaultSubjectName) {
        this.defaultSubjectName = defaultSubjectName;
    }

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

    public Integer getMembershipDays() {
        return membershipDays;
    }

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

    @ApiModelProperty(value = "是否会员 0否 1是 弃用")
    private YesOrNoEnum isVip;

    public YesOrNoEnum getIsVip() {
        return isVip;
    }

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

    public String getHeardUrl() {
        return heardUrl;
    }

    public void setHeardUrl(String heardUrl) {
        this.heardUrl = heardUrl;
    }

    public String getUsername() {
        return username;
    }

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

    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 AuthStatusEnum getEntryStatus() {
        return entryStatus;
    }

    public void setEntryStatus(AuthStatusEnum entryStatus) {
        this.entryStatus = entryStatus;
    }

    public AuthStatusEnum getMusicianAuthStatus() {
        return musicianAuthStatus;
    }

    public void setMusicianAuthStatus(AuthStatusEnum musicianAuthStatus) {
        this.musicianAuthStatus = musicianAuthStatus;
    }

    public YesOrNoEnum getLiveFlag() {
        return liveFlag;
    }

    public void setLiveFlag(YesOrNoEnum liveFlag) {
        this.liveFlag = liveFlag;
    }

    public String getSubjectName() {
        return subjectName;
    }

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

    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 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 String getPhone() {
        return phone;
    }

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

    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 YesOrNoEnum getLiveing() {
        return liveing;
    }

    public void setLiveing(YesOrNoEnum liveing) {
        this.liveing = liveing;
    }

    public String getRoomUid() {
        return roomUid;
    }

    public void setRoomUid(String roomUid) {
        this.roomUid = roomUid;
    }

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

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

    public YesOrNoEnum getIsStar() {
        return isStar;
    }

    public void setIsStar(YesOrNoEnum isStar) {
        this.isStar = isStar;
    }

    public String getUserType() {
        return userType;
    }

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

    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 String getImUserId() {
        return imUserId;
    }

    public void setImUserId(String imUserId) {
        this.imUserId = imUserId;
    }

    public String getImToken() {
        return imToken;
    }

    public void setImToken(String imToken) {
        this.imToken = imToken;
    }

    public YesOrNoEnum getTenantAlbumFlag() {
        return tenantAlbumFlag;
    }

    public void setTenantAlbumFlag(YesOrNoEnum tenantAlbumFlag) {
        this.tenantAlbumFlag = tenantAlbumFlag;
    }

    public Integer getTenantAlbumStatus() {
        return tenantAlbumStatus;
    }

    public void setTenantAlbumStatus(Integer tenantAlbumStatus) {
        this.tenantAlbumStatus = tenantAlbumStatus;
    }

    public Integer getCustomerServiceNum() {
        return customerServiceNum;
    }

    public void setCustomerServiceNum(Integer customerServiceNum) {
        this.customerServiceNum = customerServiceNum;
    }
}
