crontab.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package crontab
  2. import (
  3. "context"
  4. "fmt"
  5. "kpt-pasture/model"
  6. "kpt-pasture/util"
  7. "time"
  8. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  9. "go.uber.org/zap"
  10. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  11. )
  12. func (e *Entry) demo() error {
  13. fmt.Println("demo crontab ok")
  14. return nil
  15. }
  16. // UpdateCowDayAge 更新牛的日龄
  17. func (e *Entry) UpdateCowDayAge() error {
  18. cowList := make([]*model.Cow, 0)
  19. if err := e.DB.Where("is_remove = ?", pasturePb.IsShow_Ok).Find(&cowList).Error; err != nil {
  20. return err
  21. }
  22. for _, cow := range cowList {
  23. dayAge := cow.GetDayAge()
  24. if err := e.DB.Where("id = ?", cow.Id).Update("day_age", dayAge).Error; err != nil {
  25. zaplog.Error("Crontab", zap.Any("UpdateCowDayAge", err))
  26. }
  27. }
  28. return nil
  29. }
  30. // GenerateWorkOrder 生成工作单
  31. func (e *Entry) GenerateWorkOrder() error {
  32. workOrderList := make([]*model.WorkOrderMaster, 0)
  33. if err := e.DB.Where("is_show = ?", pasturePb.IsShow_Ok).Find(&workOrderList).Error; err != nil {
  34. return err
  35. }
  36. for _, workOrder := range workOrderList {
  37. timeUnix, err := util.ConvertParseLocalUnix(workOrder.ExecTime)
  38. if timeUnix <= 0 || err != nil {
  39. zaplog.Error("crontab", zap.Any("GenerateWorkOrder", err), zap.Any("execTime", workOrder.ExecTime))
  40. continue
  41. }
  42. execTime := time.Now().Unix() - timeUnix
  43. if _, err := e.AsynqClient.CtxEnqueue(context.Background(), model.NewTaskWorkOrderPayload(workOrder.Id, time.Duration(execTime)*time.Second)); err != nil {
  44. zaplog.Error("PushMessage CtxEnqueue", zap.Any("Err", err))
  45. }
  46. }
  47. return nil
  48. }