52 lines
1.2 KiB
Go
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))
|
|
}
|
|
} |