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

import com.ym.mec.biz.dal.enums.PeriodEnum;
import com.ym.mec.common.entity.BaseEntity;

import io.swagger.annotations.ApiModelProperty;

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

import static com.ym.mec.biz.dal.enums.PeriodEnum.DAY;
import static com.ym.mec.biz.dal.enums.PeriodEnum.MONTH;

/**
 * 对应数据库表(vip_group_activity):
 */
public class VipGroupActivity extends BaseEntity {

	@ApiModelProperty(value = "活动编号")
	private Integer id;

	@ApiModelProperty(value = "活动名称")
	private String name;

	@ApiModelProperty(value = "活动类型，课程或者会员,0课程，1会员")
	private Integer activityType = 0;

	@ApiModelProperty(value = "单节课时长")
	private Integer singleCourseTime = 45;

	@ApiModelProperty(value = "单节课时长")
	private Integer giveSingleCourseTime = 45;

	@ApiModelProperty(value = "活动描述")
	private String description;

	@ApiModelProperty(value = "课程形式")
	private String vipGroupCategoryIdList;

	@ApiModelProperty(value = "活动开始时间")
	private java.util.Date startTime;

	@ApiModelProperty(value = "活动结束时间")
	private java.util.Date endTime;

	@ApiModelProperty(value = "适用分部")
	private String organId;

	@ApiModelProperty(value = "可排课开始时间")
	private java.util.Date coursesStartTime;

	@ApiModelProperty(value = "可排课截至时间")
	private java.util.Date coursesEndTime;

//	@ApiModelProperty(value = "活动类型（基础活动、折扣、赠送课时）")
//	private VipGroupActivityTypeEnum type;

	@ApiModelProperty(value = "折扣）")
	private BigDecimal discount = new BigDecimal(100);

	@ApiModelProperty(value = "满赠达标课时:-1：没有满赠）")
	private Integer fullMinusCourseTimes = -1;

	@ApiModelProperty(value = "赠课类型")
	private String giveCourseType;

	@ApiModelProperty(value = "课类型")
	private String courseType;

	@ApiModelProperty(value = "赠课形式")
	private String giveCategoryId;

	@ApiModelProperty(value = "赠课形式")
	private String giveCategoryName;

	@ApiModelProperty(value = "人数")
	private Integer giveCategoryNum;

	@ApiModelProperty(value = "赠课数量")
	private Integer giveCourseNum = 0;

	@ApiModelProperty(value = "会员编号")
	private Integer memberRankId = 1;

	@ApiModelProperty(value = "会员时长")
	private Integer memberTime = 0;

	@ApiModelProperty(value = "赠送会员编号")
	private Integer giveMemberRankId = 1;

	@ApiModelProperty(value = "赠送会员时长")
	private Integer giveMemberTime = 0;

	@ApiModelProperty(value = "赠送抽奖次数")
	private Integer givePrizeNum = 0;

	@ApiModelProperty(value = "是否充值到余额")
	private boolean isPayToBalance = false;

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

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

	@ApiModelProperty(value = "结算标准")
	private String salarySettlementJson;

	private String vipGroupCategoryNames;

	@ApiModelProperty(value = "学员数量")
	private Integer vipGroupCategoryNum;

	@ApiModelProperty(value = "是否删除")
	private Boolean delFlag = false;

	@ApiModelProperty(value = "是否可用")
	private Boolean enable = false;

	@ApiModelProperty(value = "线上课是否参与梯度奖励")
	private Integer onlineClassJoinGradientRewards = 0;

	@ApiModelProperty(value = "线下课是否参与梯度奖励")
	private Integer offlineClassJoinGradientRewards = 0;

	@ApiModelProperty(value = "最少课程数量")
	private Integer minCourseNum = -1;

	@ApiModelProperty(value = "最多可排课数量")
	private Integer maxCourseNum = -1;

	@ApiModelProperty(value = "每位学员最大购买次数")
	private Integer studentMaxUsedTimes = -1;

	@ApiModelProperty(value = "适用学生类型:-1：所有；0：老用户；1：新用户，2会员，3非会员")
	private String applyToStudentType;

	@ApiModelProperty(value = "课程可调整方向：1不限制，0线上不可到线下，2禁止线下到线上，3双向不可调")
	private Integer allowOnlineToOffline = 1;

	@ApiModelProperty(value = "赠送课程可调整方向：1不限制，0线上不可到线下，2禁止线下到线上，3双向不可调")
	private Integer giveAllowOnlineToOffline = 1;

	@ApiModelProperty(value = "-1：所有；0：线上；1：线下")
	private Integer teachMode = -1;

	@ApiModelProperty(value = "-1：所有；0：线上；1：线下")
	private Integer giveTeachMode = -1;

	private PeriodEnum periodEnum = MONTH;

	private PeriodEnum givePeriodEnum = DAY;

	private String status = "DRAFT";

	@ApiModelProperty(value = "活动价格")
	private BigDecimal marketPrice = BigDecimal.ZERO;

	@ApiModelProperty(value = "活动原价")
	private BigDecimal originalPrice = BigDecimal.ZERO;

	//用于标记活动类型，购买的活动类型1、1v1 20节，2、1v1 40节，3、1v2 20节，4、1v2 40节，5、乐理课
	private Integer code;

	@ApiModelProperty(value = "活动渠道，1乐团渠道，2常规活动")
	private Integer activityChannel;

	@ApiModelProperty(value = "赠送的优惠券的编号")
	private Integer giveCouponId;

	@ApiModelProperty(value = "赠送的优惠券的数量")
	private Integer giveCouponNum;

	public Integer getGiveCouponId() {
		return giveCouponId;
	}

	public void setGiveCouponId(Integer giveCouponId) {
		this.giveCouponId = giveCouponId;
	}

	public Integer getGiveCouponNum() {
		return giveCouponNum;
	}

	public void setGiveCouponNum(Integer giveCouponNum) {
		this.giveCouponNum = giveCouponNum;
	}

	public BigDecimal getOriginalPrice() {
		return originalPrice;
	}

	public void setOriginalPrice(BigDecimal originalPrice) {
		this.originalPrice = originalPrice;
	}

	public Integer getActivityChannel() {
		return activityChannel;
	}

	public void setActivityChannel(Integer activityChannel) {
		this.activityChannel = activityChannel;
	}

	public Integer getCode() {
		return code;
	}

	public void setCode(Integer code) {
		this.code = code;
	}

	public Integer getGivePrizeNum() {
		return givePrizeNum;
	}

	public void setGivePrizeNum(Integer givePrizeNum) {
		this.givePrizeNum = givePrizeNum;
	}

	public Integer getGiveAllowOnlineToOffline() {
		return giveAllowOnlineToOffline;
	}

	public void setGiveAllowOnlineToOffline(Integer giveAllowOnlineToOffline) {
		this.giveAllowOnlineToOffline = giveAllowOnlineToOffline;
	}

	public BigDecimal getMarketPrice() {
		return marketPrice;
	}

	public void setMarketPrice(BigDecimal marketPrice) {
		this.marketPrice = marketPrice;
	}

	public Integer getGiveCategoryNum() {
		return giveCategoryNum;
	}

	public void setGiveCategoryNum(Integer giveCategoryNum) {
		this.giveCategoryNum = giveCategoryNum;
	}

	public Integer getVipGroupCategoryNum() {
		return vipGroupCategoryNum;
	}

	public void setVipGroupCategoryNum(Integer vipGroupCategoryNum) {
		this.vipGroupCategoryNum = vipGroupCategoryNum;
	}

	public String getGiveCategoryName() {
		return giveCategoryName;
	}

	public void setGiveCategoryName(String giveCategoryName) {
		this.giveCategoryName = giveCategoryName;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public Integer getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getActivityType() {
		return activityType;
	}

	public void setActivityType(Integer activityType) {
		this.activityType = activityType;
	}

	public Integer getSingleCourseTime() {
		return singleCourseTime;
	}

	public void setSingleCourseTime(Integer singleCourseTime) {
		this.singleCourseTime = singleCourseTime;
	}

	public Integer getGiveSingleCourseTime() {
		return giveSingleCourseTime;
	}

	public void setGiveSingleCourseTime(Integer giveSingleCourseTime) {
		this.giveSingleCourseTime = giveSingleCourseTime;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getVipGroupCategoryIdList() {
		return vipGroupCategoryIdList;
	}

	public void setVipGroupCategoryIdList(String vipGroupCategoryIdList) {
		this.vipGroupCategoryIdList = vipGroupCategoryIdList;
	}

	public Date getStartTime() {
		return startTime;
	}

	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}

	public Date getEndTime() {
		return endTime;
	}

	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}

	public String getOrganId() {
		return organId;
	}

	public void setOrganId(String organId) {
		this.organId = organId;
	}

	public Date getCoursesStartTime() {
		return coursesStartTime;
	}

	public void setCoursesStartTime(Date coursesStartTime) {
		this.coursesStartTime = coursesStartTime;
	}

	public Date getCoursesEndTime() {
		return coursesEndTime;
	}

	public void setCoursesEndTime(Date coursesEndTime) {
		this.coursesEndTime = coursesEndTime;
	}

	public BigDecimal getDiscount() {
		return discount;
	}

	public void setDiscount(BigDecimal discount) {
		this.discount = discount;
	}

	public Integer getFullMinusCourseTimes() {
		return fullMinusCourseTimes;
	}

	public void setFullMinusCourseTimes(Integer fullMinusCourseTimes) {
		this.fullMinusCourseTimes = fullMinusCourseTimes;
	}

	public String getGiveCourseType() {
		return giveCourseType;
	}

	public void setGiveCourseType(String giveCourseType) {
		this.giveCourseType = giveCourseType;
	}

	public String getCourseType() {
		return courseType;
	}

	public void setCourseType(String courseType) {
		this.courseType = courseType;
	}

	public String getGiveCategoryId() {
		return giveCategoryId;
	}

	public void setGiveCategoryId(String giveCategoryId) {
		this.giveCategoryId = giveCategoryId;
	}

	public Integer getGiveCourseNum() {
		return giveCourseNum;
	}

	public void setGiveCourseNum(Integer giveCourseNum) {
		this.giveCourseNum = giveCourseNum;
	}

	public Integer getMemberRankId() {
		return memberRankId;
	}

	public void setMemberRankId(Integer memberRankId) {
		this.memberRankId = memberRankId;
	}

	public Integer getMemberTime() {
		return memberTime;
	}

	public void setMemberTime(Integer memberTime) {
		this.memberTime = memberTime;
	}

	public Integer getGiveMemberRankId() {
		return giveMemberRankId;
	}

	public void setGiveMemberRankId(Integer giveMemberRankId) {
		this.giveMemberRankId = giveMemberRankId;
	}

	public Integer getGiveMemberTime() {
		return giveMemberTime;
	}

	public void setGiveMemberTime(Integer giveMemberTime) {
		this.giveMemberTime = giveMemberTime;
	}

	public boolean isPayToBalance() {
		return isPayToBalance;
	}

	public void setPayToBalance(boolean payToBalance) {
		isPayToBalance = payToBalance;
	}

	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 getSalarySettlementJson() {
		return salarySettlementJson;
	}

	public void setSalarySettlementJson(String salarySettlementJson) {
		this.salarySettlementJson = salarySettlementJson;
	}

	public String getVipGroupCategoryNames() {
		return vipGroupCategoryNames;
	}

	public void setVipGroupCategoryNames(String vipGroupCategoryNames) {
		this.vipGroupCategoryNames = vipGroupCategoryNames;
	}

	public Boolean getDelFlag() {
		return delFlag;
	}

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

	public Boolean getEnable() {
		return enable;
	}

	public void setEnable(Boolean enable) {
		this.enable = enable;
	}

	public Integer getOnlineClassJoinGradientRewards() {
		return onlineClassJoinGradientRewards;
	}

	public void setOnlineClassJoinGradientRewards(Integer onlineClassJoinGradientRewards) {
		this.onlineClassJoinGradientRewards = onlineClassJoinGradientRewards;
	}

	public Integer getOfflineClassJoinGradientRewards() {
		return offlineClassJoinGradientRewards;
	}

	public void setOfflineClassJoinGradientRewards(Integer offlineClassJoinGradientRewards) {
		this.offlineClassJoinGradientRewards = offlineClassJoinGradientRewards;
	}

	public Integer getMinCourseNum() {
		return minCourseNum;
	}

	public void setMinCourseNum(Integer minCourseNum) {
		this.minCourseNum = minCourseNum;
	}

	public Integer getMaxCourseNum() {
		return maxCourseNum;
	}

	public void setMaxCourseNum(Integer maxCourseNum) {
		this.maxCourseNum = maxCourseNum;
	}

	public Integer getStudentMaxUsedTimes() {
		return studentMaxUsedTimes;
	}

	public void setStudentMaxUsedTimes(Integer studentMaxUsedTimes) {
		this.studentMaxUsedTimes = studentMaxUsedTimes;
	}

	public String getApplyToStudentType() {
		return applyToStudentType;
	}

	public void setApplyToStudentType(String applyToStudentType) {
		this.applyToStudentType = applyToStudentType;
	}

	public Integer getAllowOnlineToOffline() {
		return allowOnlineToOffline;
	}

	public void setAllowOnlineToOffline(Integer allowOnlineToOffline) {
		this.allowOnlineToOffline = allowOnlineToOffline;
	}

	public Integer getTeachMode() {
		return teachMode;
	}

	public void setTeachMode(Integer teachMode) {
		this.teachMode = teachMode;
	}

	public Integer getGiveTeachMode() {
		return giveTeachMode;
	}

	public void setGiveTeachMode(Integer giveTeachMode) {
		this.giveTeachMode = giveTeachMode;
	}

	public PeriodEnum getPeriodEnum() {
		return periodEnum;
	}

	public void setPeriodEnum(PeriodEnum periodEnum) {
		this.periodEnum = periodEnum;
	}

	public PeriodEnum getGivePeriodEnum() {
		return givePeriodEnum;
	}

	public void setGivePeriodEnum(PeriodEnum givePeriodEnum) {
		this.givePeriodEnum = givePeriodEnum;
	}
}