package jobs import ( "IotAdmin/common/jobs/models" "IotAdmin/core/sdk" "IotAdmin/core/tools/utils" "fmt" "github.com/robfig/cron/v3" ) func CallExec(e JobExec, jobCore *JobCore) error { job := &models.SysJob{ JobId: jobCore.JobId, } db := sdk.Runtime.GetDbByKey(jobCore.DbKey) if db == nil { err := fmt.Errorf("【%s】 EXEC DB ERROR:%s %s", jobCore.Name, jobCore.DbKey, "db is nil") return err } err := job.Get(db, job) if err != nil { err = fmt.Errorf("【%s】 EXEC DB ERROR: %s", jobCore.Name, err.Error()) return err } jobLogger.Infof("【%s】 EXEC START", jobCore.Name) job.ExecCount++ job.LastExecTime = utils.NowLong() err = e.Exec(jobCore) if err != nil { job.FailCount++ jobLogger.Errorf("【%s】 EXEC ERROR: %s", jobCore.Name, err.Error()) } crontab := sdk.Runtime.GetCrontabKey(jobCore.DbKey) entry := crontab.Entry(cron.EntryID(job.EntryId)) job.NextExecTime = utils.Time2Long(entry.Next) jobLogger.Infof("【%s】 EXEC END\r\n", jobCore.Name) if err2 := job.Update(db, job.JobId); err2 != nil { err = fmt.Errorf("【%s】 EXEC DB ERROR: %s", jobCore.Name, err2.Error()) } return err }