package com.servicemall.right.data;

import java.util.Date;

import team.bangbang.common.CommonMPI;

/**
 * 优惠权益 - POJO
 * 对应数据库表:right_coupon_base
 *
 * @author qiuli.feng
 * @version 1.0  2020-12-08
 */
public class Coupon {
	/* 权益编号(关键字) */
	private Long id = null;

	/* 礼遇编号 */
	private Long loyaltyId = null;

	/* 权益名称 */
	private String rightName = null;

	/* 有效期类型标识{1:按日期期间 2:按有效期} */
	private Integer activeTypeFlag = null;

	/* 有效期-月数{-1无限制} */
	private Integer activeMonth = null;

	/* 核销类型{1:订单核销 2:快速核销} */
	private Integer usedTypeFlag = null;

	/* 是否可核销多次{1:是 2:否} */
	private Integer useNumTypeFlag = null;

	/* 阶段性可核销次数 */
	private Integer phasedUseNum = null;

	/* 每{1:不限制 2:年 3:季度 4:月} */
	private Integer phaseTypeFlag = null;

	/* 共可核销次数{-1不限制} */
	private Integer totalUseNum = null;

	/* 权益使用必须完成订单次数 */
	private Integer useLimitOrderNum = null;

	/* 权益类型{1:满减券金额类-整单减2:满减券金额类-每满减3:满减券产品类-整单减4:满减券产品类-每满减 5:折扣券6赠品券7免单券8代金券9动态折扣券} */
	private Integer rightTypeFlag = null;

	/* 权益内容 */
	private String rightContent = null;

	/* 权益描述 */
	private String description = null;

	/* 使用说明 */
	private String useDescription = null;

	/* 排序值 */
	private Integer sortValue = null;

	/* 创建人编号 */
	private Long creatorId = null;

	/* 修改人编号 */
	private Long updatorId = null;

	/* 删除状态{0:未删除1:已删除} */
	private Integer delStatus = null;

	/* 有效状态{1:有效 2:暂停} */
	private Integer activeStatus = null;

	/* 状态:1未领取 2已领取 */
	private Integer status = null;

	/* 有效期-开始时间 */
	private String activeStartTime = null;
	/* 有效期-开始时间 (查询上线) */
	private Date activeStartTimeTop = null;
	/* 有效期-开始时间 (查询下线) */
	private Date activeStartTimeBottom = null;

	/* 有效期-结束时间 */
	private String activeEndTime = null;
	/* 有效期-结束时间 (查询上线) */
	private Date activeEndTimeTop = null;
	/* 有效期-结束时间 (查询下线) */
	private Date activeEndTimeBottom = null;

	/* 创建时间 */
	private Date createAt = null;
	/* 创建时间 (查询上线) */
	private Date createAtTop = null;
	/* 创建时间 (查询下线) */
	private Date createAtBottom = null;

	/* 更新时间 */
	private Date updateAt = null;
	/* 更新时间 (查询上线) */
	private Date updateAtTop = null;
	/* 更新时间 (查询下线) */
	private Date updateAtBottom = null;

	/*
	 * 固定数据字典 有效期类型{1:按日期期间 2:按有效期}
	 */
	public static final String[] activeTypeFlags = { "有效期类型{1:按日期期间 2:按有效期}" };

	/*
	 * 固定数据字典 核销类型{1:订单核销 2:快速核销}
	 */
	public static final String[] usedTypeFlags = { "订单核销","快速核销" };

	/*
	 * 固定数据字典 是否可核销多次{1:是 2:否}
	 */
	public static final String[] useNumTypeFlags = { "是否可核销多次{1:是 2:否}" };

	/*
	 * 固定数据字典 每{1:不限制 2:年 3:季度 4:月}
	 */
	public static final String[] phaseTypeFlags = { "每{1:不限制 2:年 3:季度 4:月}" };

	/*
	 * 固定数据字典 权益类型{1:满减券金额类-整单减2:满减券金额类-每满减3:满减券产品类-整单减4:满减券产品类-每满减 5:折扣券6赠品券7免单券8代金券9动态折扣券}
	 */
	public static final String[] rightTypeFlags = { "权益类型{1:满减券金额类-整单减2:满减券金额类-每满减3:满减券产品类-整单减4:满减券产品类-每满减 5:折扣券6赠品券7免单券8代金券9动态折扣券}" };

	/**
	 * @return 权益编号
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id 权益编号
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return 礼遇编号
	 */
	public Long getLoyaltyId() {
		return loyaltyId;
	}

	/**
	 * @param loyaltyId 礼遇编号
	 */
	public void setLoyaltyId(Long loyaltyId) {
		this.loyaltyId = loyaltyId;
	}

	/**
	 * @return 权益名称
	 */
	public String getRightName() {
		return rightName;
	}

	/**
	 * @param rightName 权益名称
	 */
	public void setRightName(String rightName) {
		this.rightName = rightName;
	}

	/**
	 * @return 有效期类型标识{1:按日期期间 2:按有效期}
	 */
	public Integer getActiveTypeFlag() {
		return activeTypeFlag;
	}

	/**
	 * @param activeTypeFlag 有效期类型标识{1:按日期期间 2:按有效期}
	 */
	public void setActiveTypeFlag(Integer activeTypeFlag) {
		this.activeTypeFlag = activeTypeFlag;
	}

	/**
	 * @return 有效期类型{1:按日期期间 2:按有效期}名称
	 */
	public String getActiveTypeName() {
		Integer nFlag = getActiveTypeFlag();
		return CommonMPI.getDictionaryName(activeTypeFlags, nFlag);
	}

	/**
	 * @return 有效期-月数{-1无限制}
	 */
	public Integer getActiveMonth() {
		return activeMonth;
	}

	/**
	 * @param activeMonth 有效期-月数{-1无限制}
	 */
	public void setActiveMonth(Integer activeMonth) {
		this.activeMonth = activeMonth;
	}

	/**
	 * @return 核销类型{1:订单核销 2:快速核销}
	 */
	public Integer getUsedTypeFlag() {
		return usedTypeFlag;
	}

	/**
	 * @param usedTypeFlag 核销类型{1:订单核销 2:快速核销}
	 */
	public void setUsedTypeFlag(Integer usedTypeFlag) {
		this.usedTypeFlag = usedTypeFlag;
	}

	/**
	 * @return 核销类型{1:订单核销 2:快速核销}名称
	 */
	public String getUsedTypeName() {
		Integer nFlag = getUsedTypeFlag();
		return CommonMPI.getDictionaryName(usedTypeFlags, nFlag);
	}

	/**
	 * @return 是否可核销多次{1:是 2:否}
	 */
	public Integer getUseNumTypeFlag() {
		return useNumTypeFlag;
	}

	/**
	 * @param useNumTypeFlag 是否可核销多次{1:是 2:否}
	 */
	public void setUseNumTypeFlag(Integer useNumTypeFlag) {
		this.useNumTypeFlag = useNumTypeFlag;
	}

	/**
	 * @return 是否可核销多次{1:是 2:否}名称
	 */
	public String getUseNumTypeName() {
		Integer nFlag = getUseNumTypeFlag();
		return CommonMPI.getDictionaryName(useNumTypeFlags, nFlag);
	}

	/**
	 * @return 阶段性可核销次数
	 */
	public Integer getPhasedUseNum() {
		return phasedUseNum;
	}

	/**
	 * @param phasedUseNum 阶段性可核销次数
	 */
	public void setPhasedUseNum(Integer phasedUseNum) {
		this.phasedUseNum = phasedUseNum;
	}

	/**
	 * @return 每{1:不限制 2:年 3:季度 4:月}
	 */
	public Integer getPhaseTypeFlag() {
		return phaseTypeFlag;
	}

	/**
	 * @param phaseTypeFlag 每{1:不限制 2:年 3:季度 4:月}
	 */
	public void setPhaseTypeFlag(Integer phaseTypeFlag) {
		this.phaseTypeFlag = phaseTypeFlag;
	}

	/**
	 * @return 每{1:不限制 2:年 3:季度 4:月}名称
	 */
	public String getPhaseTypeName() {
		Integer nFlag = getPhaseTypeFlag();
		return CommonMPI.getDictionaryName(phaseTypeFlags, nFlag);
	}

	/**
	 * @return 共可核销次数{-1不限制}
	 */
	public Integer getTotalUseNum() {
		return totalUseNum;
	}

	/**
	 * @param totalUseNum 共可核销次数{-1不限制}
	 */
	public void setTotalUseNum(Integer totalUseNum) {
		this.totalUseNum = totalUseNum;
	}

	/**
	 * @return 权益使用必须完成订单次数
	 */
	public Integer getUseLimitOrderNum() {
		return useLimitOrderNum;
	}

	/**
	 * @param useLimitOrderNum 权益使用必须完成订单次数
	 */
	public void setUseLimitOrderNum(Integer useLimitOrderNum) {
		this.useLimitOrderNum = useLimitOrderNum;
	}

	/**
	 * @return 权益类型{1:满减券金额类-整单减2:满减券金额类-每满减3:满减券产品类-整单减4:满减券产品类-每满减 5:折扣券6赠品券7免单券8代金券9动态折扣券}
	 */
	public Integer getRightTypeFlag() {
		return rightTypeFlag;
	}

	/**
	 * @param rightTypeFlag 权益类型{1:满减券金额类-整单减2:满减券金额类-每满减3:满减券产品类-整单减4:满减券产品类-每满减 5:折扣券6赠品券7免单券8代金券9动态折扣券}
	 */
	public void setRightTypeFlag(Integer rightTypeFlag) {
		this.rightTypeFlag = rightTypeFlag;
	}

	/**
	 * @return 权益类型{1:满减券金额类-整单减2:满减券金额类-每满减3:满减券产品类-整单减4:满减券产品类-每满减 5:折扣券6赠品券7免单券8代金券9动态折扣券}名称
	 */
	public String getRightTypeName() {
		Integer nFlag = getRightTypeFlag();
		return CommonMPI.getDictionaryName(rightTypeFlags, nFlag);
	}

	/**
	 * @return 权益内容
	 */
	public String getRightContent() {
		return rightContent;
	}

	/**
	 * @param rightContent 权益内容
	 */
	public void setRightContent(String rightContent) {
		this.rightContent = rightContent;
	}

	/**
	 * @return 权益描述
	 */
	public String getDescription() {
		return description;
	}

	/**
	 * @param description 权益描述
	 */
	public void setDescription(String description) {
		this.description = description;
	}

	/**
	 * @return 使用说明
	 */
	public String getUseDescription() {
		return useDescription;
	}

	/**
	 * @param useDescription 使用说明
	 */
	public void setUseDescription(String useDescription) {
		this.useDescription = useDescription;
	}

	/**
	 * @return 排序值
	 */
	public Integer getSortValue() {
		return sortValue;
	}

	/**
	 * @param sortValue 排序值
	 */
	public void setSortValue(Integer sortValue) {
		this.sortValue = sortValue;
	}

	/**
	 * @return 创建人编号
	 */
	public Long getCreatorId() {
		return creatorId;
	}

	/**
	 * @param creatorId 创建人编号
	 */
	public void setCreatorId(Long creatorId) {
		this.creatorId = creatorId;
	}

	/**
	 * @return 修改人编号
	 */
	public Long getUpdatorId() {
		return updatorId;
	}

	/**
	 * @param updatorId 修改人编号
	 */
	public void setUpdatorId(Long updatorId) {
		this.updatorId = updatorId;
	}

	/**
	 * @return 删除状态{0:未删除1:已删除}
	 */
	public Integer getDelStatus() {
		return delStatus;
	}

	/**
	 * @param delStatus 删除状态{0:未删除1:已删除}
	 */
	public void setDelStatus(Integer delStatus) {
		this.delStatus = delStatus;
	}

	/**
	 * @return 有效状态{1:有效 2:暂停}
	 */
	public Integer getActiveStatus() {
		return activeStatus;
	}

	/**
	 * @param activeStatus 有效状态{1:有效 2:暂停}
	 */
	public void setActiveStatus(Integer activeStatus) {
		this.activeStatus = activeStatus;
	}

	/**
	 * @return 有效期-开始时间
	 */
	public String getActiveStartTime() {
		return activeStartTime;
	}

	/**
	 * @param activeStartTime 有效期-开始时间
	 */
	public void setActiveStartTime(String activeStartTime) {
		this.activeStartTime = activeStartTime;
	}

	/**
	 * @return 有效期-开始时间(查询上线)
	 */
	public Date getActiveStartTimeTop() {
		return activeStartTimeTop;
	}

	/**
	 * @param activeStartTimeTop 有效期-开始时间(查询上线)
	 */
	public void setActiveStartTimeTop(Date activeStartTimeTop) {
		this.activeStartTimeTop = activeStartTimeTop;
	}

	/**
	 * @return 有效期-开始时间(查询下线)
	 */
	public Date getActiveStartTimeBottom() {
		return activeStartTimeBottom;
	}

	/**
	 * @param activeStartTimeBottom 有效期-开始时间(查询下线)
	 */
	public void setActiveStartTimeBottom(Date activeStartTimeBottom) {
		this.activeStartTimeBottom = activeStartTimeBottom;
	}

	/**
	 * @return 有效期-结束时间
	 */
	public String getActiveEndTime() {
		return activeEndTime;
	}

	/**
	 * @param activeEndTime 有效期-结束时间
	 */
	public void setActiveEndTime(String activeEndTime) {
		this.activeEndTime = activeEndTime;
	}

	/**
	 * @return 有效期-结束时间(查询上线)
	 */
	public Date getActiveEndTimeTop() {
		return activeEndTimeTop;
	}

	/**
	 * @param activeEndTimeTop 有效期-结束时间(查询上线)
	 */
	public void setActiveEndTimeTop(Date activeEndTimeTop) {
		this.activeEndTimeTop = activeEndTimeTop;
	}

	/**
	 * @return 有效期-结束时间(查询下线)
	 */
	public Date getActiveEndTimeBottom() {
		return activeEndTimeBottom;
	}

	/**
	 * @param activeEndTimeBottom 有效期-结束时间(查询下线)
	 */
	public void setActiveEndTimeBottom(Date activeEndTimeBottom) {
		this.activeEndTimeBottom = activeEndTimeBottom;
	}

	/**
	 * @return 创建时间
	 */
	public Date getCreateAt() {
		return createAt;
	}

	/**
	 * @param createAt 创建时间
	 */
	public void setCreateAt(Date createAt) {
		this.createAt = createAt;
	}

	/**
	 * @return 创建时间(查询上线)
	 */
	public Date getCreateAtTop() {
		return createAtTop;
	}

	/**
	 * @param createAtTop 创建时间(查询上线)
	 */
	public void setCreateAtTop(Date createAtTop) {
		this.createAtTop = createAtTop;
	}

	/**
	 * @return 创建时间(查询下线)
	 */
	public Date getCreateAtBottom() {
		return createAtBottom;
	}

	/**
	 * @param createAtBottom 创建时间(查询下线)
	 */
	public void setCreateAtBottom(Date createAtBottom) {
		this.createAtBottom = createAtBottom;
	}

	/**
	 * @return 更新时间
	 */
	public Date getUpdateAt() {
		return updateAt;
	}

	/**
	 * @param updateAt 更新时间
	 */
	public void setUpdateAt(Date updateAt) {
		this.updateAt = updateAt;
	}

	/**
	 * @return 更新时间(查询上线)
	 */
	public Date getUpdateAtTop() {
		return updateAtTop;
	}

	/**
	 * @param updateAtTop 更新时间(查询上线)
	 */
	public void setUpdateAtTop(Date updateAtTop) {
		this.updateAtTop = updateAtTop;
	}

	/**
	 * @return 更新时间(查询下线)
	 */
	public Date getUpdateAtBottom() {
		return updateAtBottom;
	}

	/**
	 * @param updateAtBottom 更新时间(查询下线)
	 */
	public void setUpdateAtBottom(Date updateAtBottom) {
		this.updateAtBottom = updateAtBottom;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	public int hashCode() {
		return (getId() == null)?0:getId().toString().hashCode();
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	public boolean equals(Object obj) {
		if(getId() == null || obj == null || !(obj instanceof Coupon)) {
			return false;
		}

		return getId().equals(((Coupon)obj).getId());
	}

	public Integer getStatus() {
		return status;
	}

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