topfans/backend/services/assetService/worker/season_reset_worker.go
zerosaturation d88e7ac504 feat: add season reset worker
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 19:03:31 +08:00

52 lines
1.2 KiB
Go

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))
}
}