feat():learning后台管理项目初始化
This commit is contained in:
49
internal/jobs/model_token_job.go
Normal file
49
internal/jobs/model_token_job.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package jobs
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"goalfymax-admin/internal/config"
|
||||
"goalfymax-admin/internal/services"
|
||||
"goalfymax-admin/pkg/utils"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func StartModelTokenBalanceScheduler(cfg config.ModelTokenBalanceJobConfig, logger *utils.Logger) {
|
||||
if !cfg.Enabled {
|
||||
logger.Info("Model token balance scheduler disabled")
|
||||
return
|
||||
}
|
||||
|
||||
delay := time.Duration(cfg.DelayMinutes) * time.Minute
|
||||
if delay < 0 {
|
||||
delay = 0
|
||||
}
|
||||
|
||||
runJob := func() {
|
||||
logger.Info("Model token balance job started")
|
||||
if err := services.RunModelTokenBalanceJob(); err != nil {
|
||||
logger.Error("Model token balance job failed", zap.Error(err))
|
||||
} else {
|
||||
logger.Info("Model token balance job completed")
|
||||
}
|
||||
}
|
||||
|
||||
if cfg.RunOnStartup {
|
||||
runJob()
|
||||
}
|
||||
|
||||
go func() {
|
||||
for {
|
||||
now := time.Now().UTC()
|
||||
next := now.Truncate(time.Hour).Add(time.Hour)
|
||||
sleep := next.Sub(now) + delay
|
||||
if sleep < time.Minute {
|
||||
sleep = time.Minute
|
||||
}
|
||||
time.Sleep(sleep)
|
||||
runJob()
|
||||
}
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user