package com.punchsettle.server.pojo.punchIn; import java.time.LocalDate; import java.time.LocalTime; import java.util.List; import org.hibernate.validator.constraints.Length; import com.punchsettle.server.common.constant.CommonEnableStatusEnum; import com.punchsettle.server.constant.CompareRuleEnum; import com.punchsettle.server.constant.FullAttendancePeriodEnum; import com.punchsettle.server.constant.PunchInExtraMethodEnum; import com.punchsettle.server.constant.PunchInMethodEnum; import com.punchsettle.server.constant.RepeatCategoryEnum; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import lombok.Data; /** * @author tyuio * @version 1.0.0 * @date 2025/4/24 15:02 * @description 打卡任务 请求 */ @Data public class PiTaskRequest { /** * 任务ID */ @NotNull(message = "打卡任务ID不能为空") private Long id; /** * 任务名称 */ @NotBlank(message = "任务名称不能为空") @Length(max = 30, message = "任务名称不能超过30个字符") private String taskName; /** * 任务描述 */ private String description; /** * 奖励的积分(基本) */ @NotNull(message = "奖励的积分不能为空") @Positive(message = "奖励的积分必须大于0") private Integer points; /** * 结束日期 */ private LocalDate endDate; /** * 显示顺序 */ private Integer displayOrder; /** * 显示时间 */ private LocalTime displayTime; /** * 打卡方式(单次打卡-SINGLE,计数-COUNT、计时-TIMING) * @see PunchInMethodEnum */ @NotNull(message = "打卡方式不能为空") private PunchInMethodEnum punchInMethod; /** * 比较规则(大于等于-GTE,小于等于-LTE) * @see CompareRuleEnum */ private CompareRuleEnum compareRule; /** * 次数记录 */ private Integer countTrack; /** * 时间记录 */ private LocalTime timeTrack; /** * 是否启用节假日奖励(ENABLED-启用,DISABLED-关闭) * @see CommonEnableStatusEnum */ @NotNull(message = "是否启用节假日奖励不能为空") private CommonEnableStatusEnum holidayStatus; /** * 次数记录(节假日用) */ private Integer holidayCountTrack; /** * 时间记录(节假日用) */ private LocalTime holidayTimeTrack; /** * 是否启用全勤奖励(ENABLED-启用,DISABLED-关闭) * @see CommonEnableStatusEnum */ @NotNull(message = "是否启用全勤奖励不能为空") private CommonEnableStatusEnum fullAttendanceStatus; /** * 全勤周期(周-WEEK,月-MONTH) * @see FullAttendancePeriodEnum */ private FullAttendancePeriodEnum fullAttendancePeriod; /** * 全勤容错次数 */ private Integer fullAttendanceFaultToleranceCnt; /** * 重复周期类型(每日-EVERYDAY、法定工作日-WORKDAY、法定节假日(含周末)-HOLIDAY、自定义(周一至周日)-CUSTOM) * @see RepeatCategoryEnum */ @NotNull(message = "重复周期类型不能为空") private RepeatCategoryEnum repeatCategory; /** * 自定义重复日(周一-1,周二-2,周三-3,周四-4,周五-5,周六-6,周日-7) */ private String repeatCustomDay; /** * 额外奖励方式(无-NONE,固定-FIXED,区间-INTERVAL) * @see PunchInExtraMethodEnum */ @NotNull(message = "额外奖励方式不能为空") private PunchInExtraMethodEnum extraMethod; /** * 额外的时间间隔(单位:分钟) */ private Integer extraTimeStep; /** * 奖励的积分(额外) */ private Integer extraPoints; /** * 是否启用连续规则(ENABLED-启用,DISABLED-关闭) * @see CommonEnableStatusEnum */ @NotNull(message = "是否启用连续规则不能为空") private CommonEnableStatusEnum continueStatus; /** * 宽限期(单位:天) */ private Integer graceDay; /** * 连续中断次数 */ private Integer continueInterruptedCount; /** * 惩罚天数(单位:天) */ private Integer penaltyDay; /** * 是否启用自动打卡(ENABLED-启用,DISABLED-关闭) * @see CommonEnableStatusEnum */ @NotNull(message = "是否启用自动打卡不能为空") private CommonEnableStatusEnum autoStatus; /** * 是否启用任务积分计算(ENABLED-启用,DISABLED-关闭) * @see CommonEnableStatusEnum */ @NotNull(message = "是否启用任务积分计算不能为空") private CommonEnableStatusEnum taskPointsStatus; /** * 拓展信息(当天打卡) */ private List taskExtList; /** * 拓展信息(连续打卡) */ @Valid private List continueTaskExtList; }