call.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package jobs
  2. import (
  3. "IotAdmin/common/jobs/models"
  4. "IotAdmin/core/sdk"
  5. "IotAdmin/core/tools/utils"
  6. "fmt"
  7. "github.com/robfig/cron/v3"
  8. )
  9. func CallExec(e JobExec, jobCore *JobCore) error {
  10. job := &models.SysJob{
  11. JobId: jobCore.JobId,
  12. }
  13. db := sdk.Runtime.GetDbByKey(jobCore.DbKey)
  14. if db == nil {
  15. err := fmt.Errorf("【%s】 EXEC DB ERROR:%s %s", jobCore.Name, jobCore.DbKey, "db is nil")
  16. return err
  17. }
  18. err := job.Get(db, job)
  19. if err != nil {
  20. err = fmt.Errorf("【%s】 EXEC DB ERROR: %s", jobCore.Name, err.Error())
  21. return err
  22. }
  23. jobLogger.Infof("【%s】 EXEC START", jobCore.Name)
  24. job.ExecCount++
  25. job.LastExecTime = utils.NowLong()
  26. err = e.Exec(jobCore)
  27. if err != nil {
  28. job.FailCount++
  29. jobLogger.Errorf("【%s】 EXEC ERROR: %s", jobCore.Name, err.Error())
  30. }
  31. crontab := sdk.Runtime.GetCrontabKey(jobCore.DbKey)
  32. entry := crontab.Entry(cron.EntryID(job.EntryId))
  33. job.NextExecTime = utils.Time2Long(entry.Next)
  34. jobLogger.Infof("【%s】 EXEC END\r\n", jobCore.Name)
  35. if err2 := job.Update(db, job.JobId); err2 != nil {
  36. err = fmt.Errorf("【%s】 EXEC DB ERROR: %s", jobCore.Name, err2.Error())
  37. }
  38. return err
  39. }