diff --git a/models/cardholder.go b/models/cardholder.go index 5b0d29d..601c456 100644 --- a/models/cardholder.go +++ b/models/cardholder.go @@ -62,7 +62,8 @@ type ReqStarShopExchange struct { // RspStarShopExchange 返回 星星商店兑换 type RspStarShopExchange struct { CardHolderInfo - NewCards []int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 + NewHolders []int `form:"new_holders" json:"new_holders"` // 新获得的卡包列表 + NewCards [][]int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 AwardAlbum map[int]string `form:"award_album" json:"award_album"` // 触发的卡组奖励列表 k=出发的卡组ID v=对应奖励 AwardRound string `form:"award_round" json:"award_round"` // 触发的轮次奖励列表 空字符串未触发 } diff --git a/service/cardholder/handle.go b/service/cardholder/handle.go index 1a35cd9..9bc4101 100644 --- a/service/cardholder/handle.go +++ b/service/cardholder/handle.go @@ -8,7 +8,6 @@ import ( "apigame/util/util-lx/lxtime" "apigame/util/utslice" "apigame/util/utstring" - "strings" ) // HandleGetConfig 活动配置 @@ -139,7 +138,8 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH // HandleShopExchange 星星商店兑换 func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp models.RspStarShopExchange) { rsp = models.RspStarShopExchange{ - NewCards: make([]int, 0), + NewHolders: make([]int, 0), + NewCards: make([][]int, 0), AwardAlbum: make(map[int]string), } code = code_msg.RECODE_OK @@ -179,27 +179,6 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model return } - // 判断配置 - cardBagIdsStr := strings.Split(confStarShop.CardBagIds, ",") - cardBagIds := utstring.ListStringToListInt(cardBagIdsStr) - if len(cardBagIds) < 3 { - lxalilog.Errors("StarShopConfig.CardBagIds error", confStarShop.Id) - code = code_msg.RECODE_MERGE_CONFIG_ERROR - return - } - cardholderId := cardBagIds[1] - cardholderCount := cardBagIds[2] - if cardholderCount < 1 { - lxalilog.Errors("StarShopConfig.CardBagIds error", confStarShop.Id) - code = code_msg.RECODE_MERGE_CONFIG_ERROR - return - } - confCardholder, okCardholder := config.CardholderConfig[cardholderId] - if !okCardholder { - code = code_msg.RECODE_MERGE_CONFIG_ERROR - return - } - // 按照规则扣除星星 enough, cardList := GetStarCardList(player, config, confStarShop.NeedStarNumber) if !enough { @@ -210,23 +189,44 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model player.Details.Cards[i] -= i2 } + // 从配置里拿到卡包ID和数量列表 + cardholderIdCount := make(map[int]int) + cardholderIdCountList := utstring.StringToListListInt(confStarShop.CardBagIds, "|", ",") + for _, i2 := range cardholderIdCountList { + if len(i2) >= 3 { + cardholderIdCount[i2[1]] = i2[2] + } + } // 开始处理抽卡 openMode := 1 sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) - for i := 0; i < cardholderCount; i++ { - newCards := DoOpen(gameId, - player, config, - confCardholder, - sequenceId, cohort, - openMode) - for _, i3 := range newCards { - rsp.NewCards = append(rsp.NewCards, i3) + allNewCards := make([]int, 0) + for cardholderId, cardholderCount := range cardholderIdCount { + confCardholder, okCardholder := config.CardholderConfig[cardholderId] + if !okCardholder { + lxalilog.Errors("StarShopConfig.CardBagIds error", confStarShop.Id) + continue + } + rsp.NewHolders = append(rsp.NewHolders, cardholderId) + for i := 0; i < cardholderCount; i++ { + newCards := DoOpen(gameId, + player, config, + confCardholder, + sequenceId, cohort, + openMode) + // 打乱顺序 + utslice.Shuffle(newCards) + for _, i3 := range newCards { + allNewCards = append(allNewCards, i3) + } + rsp.NewCards = append(rsp.NewCards, newCards) } } + awardAlbum, awardRound := DoOpenCheckAward(gameId, player, config, sequenceId, cohort, - rsp.NewCards, + allNewCards, openMode) rsp.AwardAlbum = awardAlbum rsp.AwardRound = awardRound diff --git a/service/cardholder/logic.go b/service/cardholder/logic.go index 6ee1940..72a3489 100644 --- a/service/cardholder/logic.go +++ b/service/cardholder/logic.go @@ -349,7 +349,7 @@ func GetStarCardList(player *Player, config *confcardholder.ActivityConfig, need needCardCount = cardCount - 1 } cardList[cardId] = needCardCount - starAmount += needCardCount * star + starAmount += needCardCount * (star + 1) } } if starAmount >= needStar { -- libgit2 0.21.0