package cn.lili.modules.promotion.entity.dos; import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponVO; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; import org.springframework.beans.BeanUtils; /** * 优惠券活动实体类 * * @author Chopper * @since 2020-03-19 10:44 上午 */ @EqualsAndHashCode(callSuper = true) @Data @TableName("li_coupon") @ApiModel(value = "优惠券实体类") @ToString(callSuper = true) @NoArgsConstructor public class Coupon extends BasePromotions { private static final long serialVersionUID = 8372820376262437018L; @ApiModelProperty(value = "优惠券名称") private String couponName; /** * POINT("打折"), PRICE("减免现金"); * * @see cn.lili.modules.promotion.entity.enums.CouponTypeEnum */ @ApiModelProperty(value = "优惠券类型") private String couponType; @ApiModelProperty(value = "面额") private Double price; @ApiModelProperty(value = "折扣") private Double couponDiscount; /** * @see cn.lili.modules.promotion.entity.enums.CouponGetEnum */ @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") private String getType; @ApiModelProperty(value = "店铺承担比例,平台发布时可以提供一定返点") private Double storeCommission; @ApiModelProperty(value = "活动描述") private String description; @ApiModelProperty(value = "发行数量,如果是0则是不限制") private Integer publishNum; @ApiModelProperty(value = "领取限制") private Integer couponLimitNum; @ApiModelProperty(value = "已被使用的数量") private Integer usedNum; @ApiModelProperty(value = "已被领取的数量") private Integer receivedNum; @ApiModelProperty(value = "消费门槛") private Double consumeThreshold; /** * @see cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum */ @ApiModelProperty(value = "时间范围类型") private String rangeDayType; @ApiModelProperty(value = "有效期") private Integer effectiveDays; public Coupon(CouponVO couponVO) { BeanUtils.copyProperties(couponVO, this); } /** * @return 促销状态 * @see cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum */ @Override public String getPromotionStatus() { if (this.rangeDayType != null && this.rangeDayType.equals(CouponRangeDayEnum.DYNAMICTIME.name()) && (this.effectiveDays != null && this.effectiveDays > 0 && this.effectiveDays <= 365)) { return PromotionsStatusEnum.START.name(); } return super.getPromotionStatus(); } }