package worker import ( "time" "github.com/topfans/backend/pkg/logger" "github.com/topfans/backend/services/assetService/repository" "github.com/topfans/backend/services/assetService/service" "go.uber.org/zap" ) type SeasonResetWorker struct { seasonRepo *repository.SeasonRepository levelService service.AssetLevelService } func NewSeasonResetWorker( seasonRepo *repository.SeasonRepository, levelService service.AssetLevelService, ) *SeasonResetWorker { return &SeasonResetWorker{ seasonRepo: seasonRepo, levelService: levelService, } } func (w *SeasonResetWorker) Run() { now := time.Now().UnixMilli() // 获取已结束的赛季 seasons, err := w.seasonRepo.GetEndedSeasons() if err != nil { logger.Logger.Error("SeasonResetWorker: failed to get ended seasons", zap.Error(err)) return } for _, season := range seasons { if season.EndTime > now { continue // 还未真正结束 } if err := w.levelService.SeasonReset(season.ID); err != nil { logger.Logger.Error("SeasonResetWorker: failed to reset season", zap.String("season_id", season.ID), zap.Error(err)) continue } logger.Logger.Info("SeasonResetWorker: season reset completed", zap.String("season_id", season.ID)) } }