package cn.lili.modules.promotion.entity.dos; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.data.elasticsearch.annotations.DateFormat; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.Date; /** * 会员优惠券实体类 * * @author Chopper * @since 2020-03-19 10:44 上午 */ @EqualsAndHashCode(callSuper = true) @Data @TableName("li_member_coupon") @ApiModel(value = "会员优惠券") public class MemberCoupon extends BaseEntity { private static final long serialVersionUID = -7290310311125273760L; @ApiModelProperty(value = "从哪个模版领取的优惠券") private String couponId; @ApiModelProperty(value = "商家id,如果是平台发送,这个值为 0") private String storeId; @ApiModelProperty(value = "商家名称,如果是平台,这个值为 platform") private String storeName; @ApiModelProperty(value = "面额") private Double price; @ApiModelProperty(value = "折扣") private Double discount; @ApiModelProperty(value = "消费门槛") private Double consumeThreshold; @ApiModelProperty(value = "会员名称") private String memberName; @ApiModelProperty(value = "会员id") private String memberId; /** * @see PromotionsScopeTypeEnum */ @ApiModelProperty(value = "关联范围类型") private String scopeType; /** * POINT("打折"), PRICE("减免现金"); * * @see cn.lili.modules.promotion.entity.enums.CouponTypeEnum */ @ApiModelProperty(value = "活动类型") private String couponType; @ApiModelProperty(value = "范围关联的id") private String scopeId; @ApiModelProperty(value = "使用起始时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date startTime; @ApiModelProperty(value = "使用截止时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date endTime; /** * @see cn.lili.modules.promotion.entity.enums.CouponGetEnum */ @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") private String getType; @ApiModelProperty(value = "是否是平台优惠券") private Boolean platformFlag; @ApiModelProperty(value = "店铺承担比例") private Double storeCommission; @ApiModelProperty(value = "核销时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date consumptionTime; /** * @see MemberCouponStatusEnum */ @ApiModelProperty(value = "会员优惠券状态") private String memberCouponStatus; public MemberCoupon() { } public MemberCoupon(Coupon coupon) { setCouponId(coupon.getId()); setStoreId(coupon.getStoreId()); setStoreName(coupon.getStoreName()); setPrice(coupon.getPrice()); setDiscount(coupon.getCouponDiscount()); setConsumeThreshold(coupon.getConsumeThreshold()); setScopeType(coupon.getScopeType()); setScopeId(coupon.getScopeId()); setCouponType(coupon.getCouponType()); setStartTime(coupon.getStartTime() == null ? new Date() : coupon.getStartTime()); setGetType(coupon.getGetType()); setStoreCommission(coupon.getStoreCommission()); if (coupon.getRangeDayType().equals(CouponRangeDayEnum.FIXEDTIME.name())) { setEndTime(coupon.getEndTime()); } else { setEndTime(DateUtil.endOfDay(DateUtil.offset(new DateTime(), DateField.DAY_OF_YEAR, (coupon.getEffectiveDays() - 1)))); } } }