From d47bb28df556c8d859077346958c47fa9036eb10 Mon Sep 17 00:00:00 2001 From: 王家文 Date: Fri, 26 Apr 2024 13:08:08 +0800 Subject: [PATCH] feat✨:卡牌活动星星自动兑换接口修改 --- models/cardholder.go | 2 +- service/cardholder/dto-player.go | 4 ++-- service/cardholder/handle.go | 9 ++++----- service/cardholder/logic.go | 11 +++++------ 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/models/cardholder.go b/models/cardholder.go index 663562d..5b0d29d 100644 --- a/models/cardholder.go +++ b/models/cardholder.go @@ -80,5 +80,5 @@ type RspAutoExchangeInfo struct { AwardAlbum map[int]string `form:"award_album" json:"award_album"` // 触发的卡组奖励列表 k=出发的卡组ID v=对应奖励 AwardRound string `form:"award_round" json:"award_round"` // 触发的轮次奖励列表 空字符串未触发 LastStarCount int `form:"last_star_count" json:"last_star_count"` // 上期活动剩余星星点数 - AutoExchangeHolder []int `form:"auto_exchange_holder" json:"auto_exchange_holder"` // 活动切换时自动兑换的卡包列表 + AutoExchangeHolder int `form:"auto_exchange_holder" json:"auto_exchange_holder"` // 活动切换时自动兑换的卡包 } diff --git a/service/cardholder/dto-player.go b/service/cardholder/dto-player.go index b5f0155..d1cea30 100644 --- a/service/cardholder/dto-player.go +++ b/service/cardholder/dto-player.go @@ -47,7 +47,7 @@ type PlayerDetails struct { Round int // 卡册当前轮次 StarCount int // 星星点数 LastStarCount int // 上期活动剩余星星点数 - AutoExchangeHolder []int // 活动切换时自动兑换的卡包列表 + AutoExchangeHolder int // 活动切换时自动兑换的卡包 2024年4月26日 这里策划要求改为只能兑换一个最高级的 } func NewPlayerDetails() *PlayerDetails { @@ -58,7 +58,7 @@ func NewPlayerDetails() *PlayerDetails { CardSequenceScales: make(map[string]int), Round: 1, StarCount: 0, - AutoExchangeHolder: make([]int, 0), + AutoExchangeHolder: 0, } } diff --git a/service/cardholder/handle.go b/service/cardholder/handle.go index 30e4246..1a35cd9 100644 --- a/service/cardholder/handle.go +++ b/service/cardholder/handle.go @@ -250,7 +250,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m rsp = models.RspAutoExchangeInfo{ NewCards: make([]int, 0), AwardAlbum: make(map[int]string), - AutoExchangeHolder: make([]int, 0), + AutoExchangeHolder: 0, } code = code_msg.RECODE_OK gameId := req.GameID @@ -283,9 +283,8 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m } rsp.LastStarCount = player.Details.LastStarCount - for _, i2 := range player.Details.AutoExchangeHolder { - rsp.AutoExchangeHolder = append(rsp.AutoExchangeHolder, i2) - } + rsp.AutoExchangeHolder = player.Details.AutoExchangeHolder + // 把当前的卡包内数据放在新卡数据里给客户端 for i1, i2 := range player.Details.Cards { for i := 0; i < i2; i++ { @@ -294,7 +293,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m } player.Details.LastStarCount = 0 - player.Details.AutoExchangeHolder = make([]int, 0) + player.Details.AutoExchangeHolder = 0 // 存档 SavePlayer(gameId, player) diff --git a/service/cardholder/logic.go b/service/cardholder/logic.go index a08ca19..6ee1940 100644 --- a/service/cardholder/logic.go +++ b/service/cardholder/logic.go @@ -362,7 +362,6 @@ func GetStarCardList(player *Player, config *confcardholder.ActivityConfig, need // NextActivityAutoExchange 活动切换时自动兑换卡包 func NextActivityAutoExchange(gameId string, player *Player, config *confcardholder.ActivityConfig) { - starCount := player.Details.LastStarCount // 把星星的配置按照需要的星星数降序排列 list := lo.Values[int, confcardholder.StarShopConfig](config.StarShopConfig) sort.Slice(list, func(i, j int) bool { @@ -371,9 +370,9 @@ func NextActivityAutoExchange(gameId string, player *Player, config *confcardhol list = lo.Reverse(list) // 遍历 for _, config := range list { - for starCount >= config.NeedStarNumber { - player.Details.AutoExchangeHolder = append(player.Details.AutoExchangeHolder, config.Id) - starCount -= config.NeedStarNumber + if player.Details.LastStarCount >= config.NeedStarNumber { + player.Details.AutoExchangeHolder = config.Id + break } } @@ -381,8 +380,8 @@ func NextActivityAutoExchange(gameId string, player *Player, config *confcardhol openMode := 2 sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) allNewCards := make([]int, 0) - for _, idCardholder := range player.Details.AutoExchangeHolder { - confCardholder, _ := config.CardholderConfig[idCardholder] + if player.Details.AutoExchangeHolder != 0 { + confCardholder, _ := config.CardholderConfig[player.Details.AutoExchangeHolder] newCards := DoOpen(gameId, player, config, confCardholder, -- libgit2 0.21.0