package com.ym.mec.biz.dal.entity;

import com.ym.mec.auth.api.entity.SysUser;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import com.ym.mec.common.enums.BaseEnum;

/**
 * 对应数据库表(music_group_student_fee_):
 */
public class MusicGroupStudentFee {

	public enum PaymentStatus implements BaseEnum<String, PaymentStatus> {

		PAID_COMPLETED("已缴费"), NON_PAYMENT("未缴费"), PROCESSING("缴费中");

		private String desc;

		PaymentStatus(String desc) {
			this.desc = desc;
		}

		@Override
		public String getCode() {
			return name();
		}

		public String getDesc() {
			return desc;
		}
	}

	/**  */
	private Long id;

	/**  */
	@ApiModelProperty(value = "乐团编号", required = false)
	private String musicGroupId;

	/**  */
	@ApiModelProperty(value = "用户编号", required = false)
	private Integer userId;

	@ApiModelProperty(value = "声部编号", required = false)
	private Integer subjectId;

	/** 课程费用 */
	@ApiModelProperty(value = "课程费用", required = false)
	private BigDecimal courseFee;

	/** 课程费用 */
	@ApiModelProperty(value = "下次缴费日期", required = false)
	private Date nextPaymentDate;

	/** 课程费用 */
	@ApiModelProperty(value = "最近缴费时间", required = false)
	private Date latestPaidTime;

	@ApiModelProperty(value = "连续旷到次数", required = false)
	private Integer continuousAbsenteeismTimes;

	private PaymentStatus paymentStatus;

	private BigDecimal temporaryCourseFee;

	//是否锁定1是，0否
	private Integer isLock;

	//缴费周期，用逗号分隔
	private String paymentPeriodList;

	/**  */
	private java.util.Date createTime;

	/**  */
	private java.util.Date updateTime;

	private SysUser sysUser;

	private String subjectName;

	private Integer remainNetworkClassTimes = 0;

	public MusicGroupStudentFee(String musicGroupId, Integer userId, Integer subjectId,
								BigDecimal courseFee, Date nextPaymentDate, BigDecimal temporaryCourseFee,PaymentStatus paymentStatus) {
		this.musicGroupId = musicGroupId;
		this.userId = userId;
		this.subjectId = subjectId;
		this.courseFee = courseFee;
		this.nextPaymentDate = nextPaymentDate;
		this.continuousAbsenteeismTimes = 0;
		this.temporaryCourseFee = temporaryCourseFee;
		this.paymentStatus = paymentStatus;
	}

	public MusicGroupStudentFee() {
	}

	public SysUser getSysUser() {
		return sysUser;
	}

	public void setSysUser(SysUser sysUser) {
		this.sysUser = sysUser;
	}

	public String getSubjectName() {
		return subjectName;
	}

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

	public Integer getIsLock() {
		return isLock;
	}

	public void setIsLock(Integer isLock) {
		this.isLock = isLock;
	}

	public String getPaymentPeriodList() {
		return paymentPeriodList;
	}

	public void setPaymentPeriodList(String paymentPeriodList) {
		this.paymentPeriodList = paymentPeriodList;
	}

	public Date getNextPaymentDate() {
		return nextPaymentDate;
	}

	public void setNextPaymentDate(Date nextPaymentDate) {
		this.nextPaymentDate = nextPaymentDate;
	}

	public Date getLatestPaidTime() {
		return latestPaidTime;
	}

	public void setLatestPaidTime(Date latestPaidTime) {
		this.latestPaidTime = latestPaidTime;
	}

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

	public Long getId() {
		return this.id;
	}

	public void setMusicGroupId(String musicGroupId) {
		this.musicGroupId = musicGroupId;
	}

	public String getMusicGroupId() {
		return this.musicGroupId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public Integer getUserId() {
		return this.userId;
	}

	public Integer getSubjectId() {
		return subjectId;
	}

	public void setSubjectId(Integer subjectId) {
		this.subjectId = subjectId;
	}

	public BigDecimal getCourseFee() {
		return courseFee;
	}

	public void setCourseFee(BigDecimal courseFee) {
		this.courseFee = courseFee;
	}

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

	public java.util.Date getCreateTime() {
		return this.createTime;
	}

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

	public java.util.Date getUpdateTime() {
		return this.updateTime;
	}

	public Integer getContinuousAbsenteeismTimes() {
		return continuousAbsenteeismTimes;
	}

	public void setContinuousAbsenteeismTimes(Integer continuousAbsenteeismTimes) {
		this.continuousAbsenteeismTimes = continuousAbsenteeismTimes;
	}

	public PaymentStatus getPaymentStatus() {
		return paymentStatus;
	}

	public void setPaymentStatus(PaymentStatus paymentStatus) {
		this.paymentStatus = paymentStatus;
	}

	public BigDecimal getTemporaryCourseFee() {
		return temporaryCourseFee;
	}

	public void setTemporaryCourseFee(BigDecimal temporaryCourseFee) {
		this.temporaryCourseFee = temporaryCourseFee;
	}

	public Integer getRemainNetworkClassTimes() {
		return remainNetworkClassTimes;
	}

	public void setRemainNetworkClassTimes(Integer remainNetworkClassTimes) {
		this.remainNetworkClassTimes = remainNetworkClassTimes;
	}
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

}
