package com.xuekairui.activity.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.NoArgsConstructor; import lombok.AllArgsConstructor; import lombok.Builder; import java.time.LocalDate; import java.time.LocalDateTime; /** * 签到周期表(每个周期一行,运营端可手动增删改) *
* 周期模式 cycleMode 决定周期的星期范围(如 FRI_THU=周五到下周四), * 每条记录定义该周期的起止日期、所需签到天数、达标奖励。 * 活动全局开关和默认值在 t_checkin_config 中。 * 用户奖励发放记录在 t_checkin_reward_record 中。 */ @Data @NoArgsConstructor @AllArgsConstructor @Builder @TableName("t_checkin_period") public class CheckInPeriod { @TableId(type = IdType.AUTO) private Long id; /** 周期名称,如"第1周(7/10~7/16)" */ private String periodName; /** 周期模式:FRI_THU(周五~下周四) / MON_SUN(周一~周日) */ private String cycleMode; /** 周期起始日 */ private LocalDate startDate; /** 周期截止日 */ private LocalDate endDate; /** 周期内需签到天数 */ private Integer requiredDays; /** 达标模式:CUMULATIVE-周期内累计签到N天 / CONSECUTIVE-周期内连续签到N天 */ @Builder.Default private String rewardMode = "CUMULATIVE"; /** 达标奖励会员天数 */ private Integer rewardDays; /** 奖励会员等级 */ @Builder.Default private String rewardLevel = "PRO"; /** 状态:PENDING-待开始 / ACTIVE-进行中 / CLOSED-已结束 */ @Builder.Default private String status = "PENDING"; /** 排序(数字越小越靠前) */ @Builder.Default private Integer sort = 0; @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; }