package cn.lili.modules.promotion.entity.dos; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.mybatis.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; 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 javax.validation.constraints.NotEmpty; import java.util.Date; /** * 促销活动基础类 * * @author Chopper * @since 2020-03-19 10:44 上午 */ @EqualsAndHashCode(callSuper = true) @Data public class BasePromotions extends BaseEntity { private static final long serialVersionUID = 7814832369110695758L; @ApiModelProperty(value = "商家名称,如果是平台,这个值为 platform") private String storeName; @ApiModelProperty(value = "商家id,如果是平台,这个值为 0") private String storeId; @NotEmpty(message = "活动名称不能为空") @ApiModelProperty(value = "活动名称", required = true) private String promotionName; @ApiModelProperty(value = "活动开始时间", required = true) @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 = "活动结束时间", required = true) @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 PromotionsScopeTypeEnum */ @ApiModelProperty(value = "关联范围类型") private String scopeType = PromotionsScopeTypeEnum.PORTION_GOODS.name(); @ApiModelProperty(value = "范围关联的id") private String scopeId; /** * @return 促销状态 * @see PromotionsStatusEnum */ public String getPromotionStatus() { if (endTime == null) { return startTime != null ? PromotionsStatusEnum.START.name() : PromotionsStatusEnum.CLOSE.name(); } Date now = new Date(); if (now.before(startTime)) { return PromotionsStatusEnum.NEW.name(); } else if (endTime.before(now)) { return PromotionsStatusEnum.END.name(); } else if (now.before(endTime)) { return PromotionsStatusEnum.START.name(); } return PromotionsStatusEnum.CLOSE.name(); } }