feat: add season reset worker
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
11a59b0632
commit
d88e7ac504
52
backend/services/assetService/worker/season_reset_worker.go
Normal file
52
backend/services/assetService/worker/season_reset_worker.go
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
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))
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user