package handler

import (
	"fengkuangGameServerJob/pkg/feishu"
	"fmt"
	"github.com/robfig/cron/v3"
)

//定义任务的执行时间
const (
	EveryHour          = "0 0 * * * *"    //每一个小时执行
	Every30Min         = "0 */30 * * * *" //每30分钟执行
	Every3second       = "0/3 * * * * *"  //每3秒执行
	EverySecond        = "0/1 * * * * *"  //每秒执行
	EveryNightAtNine   = "0 0 21 * * *"   //每天晚上9点执行
	EveryNightAtNine30 = "0 30 21 * * *"  //每天晚上9:30执行
	DailyZero          = "0 0 0 * * *"    //每日零点执行
	EveryMorningAt3    = "0 0 3 * * *"    //每日凌晨3点执行
	EveryMorningAt5    = "0 0 5 * * *"    //每日凌晨5点执行
	EveryMorningAt21   = "0 0 21 * * *"   //每日晚上21点执行
)

// MyJob 自定义JOB接口
type MyJob interface {
	Specs() []string //返回当前任务的执行时间
	Enable() bool    //当前任务是否需要执行,true的时候任务执行,false任务不执行
	jobContent()     //当前任务的真正执行内容
	cron.Job
}

// 捕获job的panic,注意放在对应job的defer中
func catchJobPanic() {
	err := recover()
	if err != nil {
		notify := feishu.NewFeiShu(feishu.DEMO)
		notify.ImportanceNotify("fengKuangGameJob发生panic", fmt.Sprintf("%s", err))
	}
}

// GetJobs 获取所有需要执行的任务
func GetJobs() []MyJob {
	//需要执行的任务写入进来
	return []MyJob{
		NewDemoJob(),         // 测试任务
		NewStationRobotJob(), //跑商的机器人定时任务
	}
}
