package crontab import ( "context" "fmt" "kpt-pasture/model" "kpt-pasture/util" "time" "gitee.com/xuyiping_admin/pkg/logger/zaplog" "go.uber.org/zap" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" ) func (e *Entry) demo() error { fmt.Println("demo crontab ok") return nil } // UpdateCowDayAge 更新牛的日龄 func (e *Entry) UpdateCowDayAge() error { cowList := make([]*model.Cow, 0) if err := e.DB.Where("is_remove = ?", pasturePb.IsShow_Ok).Find(&cowList).Error; err != nil { return err } for _, cow := range cowList { dayAge := cow.GetDayAge() if err := e.DB.Where("id = ?", cow.Id).Update("day_age", dayAge).Error; err != nil { zaplog.Error("Crontab", zap.Any("UpdateCowDayAge", err)) } } return nil } // GenerateWorkOrder 生成工作单 func (e *Entry) GenerateWorkOrder() error { workOrderList := make([]*model.WorkOrderMaster, 0) if err := e.DB.Where("is_show = ?", pasturePb.IsShow_Ok).Find(&workOrderList).Error; err != nil { return err } for _, workOrder := range workOrderList { timeUnix, err := util.ConvertParseLocalUnix(workOrder.ExecTime) if timeUnix <= 0 || err != nil { zaplog.Error("crontab", zap.Any("GenerateWorkOrder", err), zap.Any("execTime", workOrder.ExecTime)) continue } execTime := time.Now().Unix() - timeUnix if _, err := e.AsynqClient.CtxEnqueue(context.Background(), model.NewTaskWorkOrderPayload(workOrder.Id, time.Duration(execTime)*time.Second)); err != nil { zaplog.Error("PushMessage CtxEnqueue", zap.Any("Err", err)) } } return nil }