feat(game-king): include ranking context in rewards

This commit is contained in:
hy001 2026-07-23 18:46:01 +08:00
parent 82f35f2f91
commit a96e82ead4
2 changed files with 22 additions and 11 deletions

View File

@ -197,20 +197,24 @@ type UnblockAccountRequest struct {
} }
type SendActivityRewardRequest struct { type SendActivityRewardRequest struct {
TrackID int64 `json:"trackId"` TrackID int64 `json:"trackId"`
Origin string `json:"origin"` Origin string `json:"origin"`
SysOrigin string `json:"sysOrigin"` SysOrigin string `json:"sysOrigin"`
SourceGroupID int64 `json:"sourceGroupId"` SourceGroupID int64 `json:"sourceGroupId"`
AcceptUserID int64 `json:"acceptUserId"` AcceptUserID int64 `json:"acceptUserId"`
GameKingRankingPeriod string `json:"gameKingRankingPeriod,omitempty"`
GameKingRank int `json:"gameKingRank,omitempty"`
} }
// SendFrozenActivityRewardRequest 直接携带启用时冻结的单个奖励项,避免活动发奖时重新读取已变化的共享奖励组。 // SendFrozenActivityRewardRequest 直接携带启用时冻结的单个奖励项,避免活动发奖时重新读取已变化的共享奖励组。
type SendFrozenActivityRewardRequest struct { type SendFrozenActivityRewardRequest struct {
TrackID int64 `json:"trackId"` TrackID int64 `json:"trackId"`
AcceptUserID int64 `json:"acceptUserId"` AcceptUserID int64 `json:"acceptUserId"`
Origin string `json:"origin"` Origin string `json:"origin"`
SysOrigin string `json:"sysOrigin"` SysOrigin string `json:"sysOrigin"`
Prizes []FrozenActivityReward `json:"prizes"` GameKingRankingPeriod string `json:"gameKingRankingPeriod,omitempty"`
GameKingRank int `json:"gameKingRank,omitempty"`
Prizes []FrozenActivityReward `json:"prizes"`
} }
// FrozenActivityReward 对齐 Java PrizeDescribe内层 TrackID 是资源组商品 ID外层请求 TrackID 才是 delivery item 幂等号。 // FrozenActivityReward 对齐 Java PrizeDescribe内层 TrackID 是资源组商品 ID外层请求 TrackID 才是 delivery item 幂等号。

View File

@ -19,6 +19,8 @@ const deliveryProcessingLease = 10 * time.Minute
type frozenDeliveryContext struct { type frozenDeliveryContext struct {
SysOrigin string SysOrigin string
BusinessNo string BusinessNo string
RankingPeriod string
RankNo int
RewardItemsJSON string RewardItemsJSON string
RewardItems []RewardItemView RewardItems []RewardItemView
} }
@ -107,6 +109,7 @@ func (s *Service) dispatchDeliveryItem(ctx context.Context, itemID int64, retry
err = s.gateway.SendActivityReward(ctx, integration.SendActivityRewardRequest{ err = s.gateway.SendActivityReward(ctx, integration.SendActivityRewardRequest{
TrackID: item.ID, Origin: rewardOriginGameKing, SysOrigin: frozen.SysOrigin, TrackID: item.ID, Origin: rewardOriginGameKing, SysOrigin: frozen.SysOrigin,
SourceGroupID: item.ResourceGroupID, AcceptUserID: item.UserID, SourceGroupID: item.ResourceGroupID, AcceptUserID: item.UserID,
GameKingRankingPeriod: frozen.RankingPeriod, GameKingRank: frozen.RankNo,
}) })
} else { } else {
prizes := make([]integration.FrozenActivityReward, 0, len(frozen.RewardItems)) 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{ err = s.gateway.SendFrozenActivityReward(ctx, integration.SendFrozenActivityRewardRequest{
TrackID: item.ID, AcceptUserID: item.UserID, Origin: rewardOriginGameKing, 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 { if err != nil {
@ -250,6 +254,9 @@ func (s *Service) loadFrozenDeliveryContext(ctx context.Context, item model.Yumi
return result, err return result, err
} }
result.BusinessNo = record.BusinessNo result.BusinessNo = record.BusinessNo
// 排名上下文随冻结奖励一起透传Java 通知据此生成日榜/总榜英文名次文案。
result.RankingPeriod = record.RankingPeriod
result.RankNo = record.RankNo
if strings.TrimSpace(result.RewardItemsJSON) == "" { if strings.TrimSpace(result.RewardItemsJSON) == "" {
var rankReward model.YumiGameKingRankReward var rankReward model.YumiGameKingRankReward
if err := s.db.WithContext(ctx).Where("id = ? AND activity_id = ?", record.RankRewardID, item.ActivityID).First(&rankReward).Error; err != nil { if err := s.db.WithContext(ctx).Where("id = ? AND activity_id = ?", record.RankRewardID, item.ActivityID).First(&rankReward).Error; err != nil {