From a96e82ead48353b51b13e494ee40103156a3e550 Mon Sep 17 00:00:00 2001 From: hy001 Date: Thu, 23 Jul 2026 18:46:01 +0800 Subject: [PATCH] feat(game-king): include ranking context in rewards --- internal/integration/java.go | 24 ++++++++++++++---------- internal/service/gameking/delivery.go | 9 ++++++++- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/internal/integration/java.go b/internal/integration/java.go index a454b83..844b2f5 100644 --- a/internal/integration/java.go +++ b/internal/integration/java.go @@ -197,20 +197,24 @@ type UnblockAccountRequest struct { } type SendActivityRewardRequest struct { - TrackID int64 `json:"trackId"` - Origin string `json:"origin"` - SysOrigin string `json:"sysOrigin"` - SourceGroupID int64 `json:"sourceGroupId"` - AcceptUserID int64 `json:"acceptUserId"` + TrackID int64 `json:"trackId"` + Origin string `json:"origin"` + SysOrigin string `json:"sysOrigin"` + SourceGroupID int64 `json:"sourceGroupId"` + AcceptUserID int64 `json:"acceptUserId"` + GameKingRankingPeriod string `json:"gameKingRankingPeriod,omitempty"` + GameKingRank int `json:"gameKingRank,omitempty"` } // SendFrozenActivityRewardRequest 直接携带启用时冻结的单个奖励项,避免活动发奖时重新读取已变化的共享奖励组。 type SendFrozenActivityRewardRequest struct { - TrackID int64 `json:"trackId"` - AcceptUserID int64 `json:"acceptUserId"` - Origin string `json:"origin"` - SysOrigin string `json:"sysOrigin"` - Prizes []FrozenActivityReward `json:"prizes"` + TrackID int64 `json:"trackId"` + AcceptUserID int64 `json:"acceptUserId"` + Origin string `json:"origin"` + SysOrigin string `json:"sysOrigin"` + GameKingRankingPeriod string `json:"gameKingRankingPeriod,omitempty"` + GameKingRank int `json:"gameKingRank,omitempty"` + Prizes []FrozenActivityReward `json:"prizes"` } // FrozenActivityReward 对齐 Java PrizeDescribe;内层 TrackID 是资源组商品 ID,外层请求 TrackID 才是 delivery item 幂等号。 diff --git a/internal/service/gameking/delivery.go b/internal/service/gameking/delivery.go index 12acbb2..5981312 100644 --- a/internal/service/gameking/delivery.go +++ b/internal/service/gameking/delivery.go @@ -19,6 +19,8 @@ const deliveryProcessingLease = 10 * time.Minute type frozenDeliveryContext struct { SysOrigin string BusinessNo string + RankingPeriod string + RankNo int RewardItemsJSON string RewardItems []RewardItemView } @@ -107,6 +109,7 @@ func (s *Service) dispatchDeliveryItem(ctx context.Context, itemID int64, retry err = s.gateway.SendActivityReward(ctx, integration.SendActivityRewardRequest{ TrackID: item.ID, Origin: rewardOriginGameKing, SysOrigin: frozen.SysOrigin, SourceGroupID: item.ResourceGroupID, AcceptUserID: item.UserID, + GameKingRankingPeriod: frozen.RankingPeriod, GameKingRank: frozen.RankNo, }) } else { prizes := make([]integration.FrozenActivityReward, 0, len(frozen.RewardItems)) @@ -119,7 +122,8 @@ func (s *Service) dispatchDeliveryItem(ctx context.Context, itemID int64, retry } err = s.gateway.SendFrozenActivityReward(ctx, integration.SendFrozenActivityRewardRequest{ TrackID: item.ID, AcceptUserID: item.UserID, Origin: rewardOriginGameKing, - SysOrigin: frozen.SysOrigin, Prizes: prizes, + SysOrigin: frozen.SysOrigin, GameKingRankingPeriod: frozen.RankingPeriod, + GameKingRank: frozen.RankNo, Prizes: prizes, }) } if err != nil { @@ -250,6 +254,9 @@ func (s *Service) loadFrozenDeliveryContext(ctx context.Context, item model.Yumi return result, err } result.BusinessNo = record.BusinessNo + // 排名上下文随冻结奖励一起透传,Java 通知据此生成日榜/总榜英文名次文案。 + result.RankingPeriod = record.RankingPeriod + result.RankNo = record.RankNo if strings.TrimSpace(result.RewardItemsJSON) == "" { var rankReward model.YumiGameKingRankReward if err := s.db.WithContext(ctx).Where("id = ? AND activity_id = ?", record.RankRewardID, item.ActivityID).First(&rankReward).Error; err != nil {