package dep import ( "kpt-pasture/config" "kpt-pasture/module/crontab" "go.uber.org/dig" "gitee.com/xuyiping_admin/pkg/cron" prom "github.com/prometheus/client_golang/prometheus" ) var DataCenterCrontabCounterVec = prom.NewCounterVec( prom.CounterOpts{ Namespace: "kpt-pasture", Subsystem: "crontab", Name: "crontab", }, []string{"name"}, ) func DICrontabService() (out *cron.Crontab) { container := DI() if err := container.Provide(EntryCrontab); err != nil { panic(err) } if err := container.Invoke(func(c *cron.Crontab) { out = c }); err != nil { panic(err) } return } // CrontabDependency 依赖注入结构体 type CrontabDependency struct { dig.In CrontabHub crontab.Crontab // 定时任务 } func EntryCrontab(dependency CrontabDependency) *cron.Crontab { cfg := config.Options() cs := cfg.CronSetting newCrontab := cron.NewCrontab(DataCenterCrontabCounterVec) err := newCrontab.Bind("UpdateCowDayAge", cs.UpdateCowDayAge, dependency.CrontabHub.UpdateCowInfo) if err != nil { panic(err) } err = newCrontab.Bind("GenerateWorkOrder", cs.GenerateWorkOrder, dependency.CrontabHub.GenerateAsynqWorkOrder) if err != nil { panic(err) } return newCrontab }