数据结构
// 规则
type ScheduleRule struct {
ID int64 // 规则ID
Title string // 规则标题
Payload string // 规则内容
Enabled bool // 规则开关
StartTime time.Time // 开始时间
EndTime time.Time // 结束时间
NextCheckTime sql.NullTime // 下次检查时间
CheckFrequency string // 检查频率
}
// 任务
type RuleTask struct {
ID int64 // 任务ID
RuleID int64 // 规则ID
RunTime time.Time // 开始时间
Payload string // 规则内容
Status string // 任务状态
Result string // 任务结果
}
注意事项
- 改开始时间,不能早于当前时间,重新计算 next_check_time
- 改结束时间,不能早于当前时间,直接修改
- 改检查频率,重新计算 next_check_time
- 改规则开关,如果开启,重新计算 next_check_time
- next_check_time 为距离当前时间最近的下一次执行时间
- 生成任务和编辑规则时均需要锁定规则,防止并发