Commit 1dd66484df877081dc5e1c990d75894eb6017013
1 parent
1ca4d084
Exists in
master
and in
1 other branch
feat✨:卡牌活动星星商店接口修改
Showing
3 changed files
with
35 additions
and
34 deletions
Show diff stats
models/cardholder.go
| @@ -62,7 +62,8 @@ type ReqStarShopExchange struct { | @@ -62,7 +62,8 @@ type ReqStarShopExchange struct { | ||
| 62 | // RspStarShopExchange 返回 星星商店兑换 | 62 | // RspStarShopExchange 返回 星星商店兑换 |
| 63 | type RspStarShopExchange struct { | 63 | type RspStarShopExchange struct { |
| 64 | CardHolderInfo | 64 | CardHolderInfo |
| 65 | - NewCards []int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 | 65 | + NewHolders []int `form:"new_holders" json:"new_holders"` // 新获得的卡包列表 |
| 66 | + NewCards [][]int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 | ||
| 66 | AwardAlbum map[int]string `form:"award_album" json:"award_album"` // 触发的卡组奖励列表 k=出发的卡组ID v=对应奖励 | 67 | AwardAlbum map[int]string `form:"award_album" json:"award_album"` // 触发的卡组奖励列表 k=出发的卡组ID v=对应奖励 |
| 67 | AwardRound string `form:"award_round" json:"award_round"` // 触发的轮次奖励列表 空字符串未触发 | 68 | AwardRound string `form:"award_round" json:"award_round"` // 触发的轮次奖励列表 空字符串未触发 |
| 68 | } | 69 | } |
service/cardholder/handle.go
| @@ -8,7 +8,6 @@ import ( | @@ -8,7 +8,6 @@ import ( | ||
| 8 | "apigame/util/util-lx/lxtime" | 8 | "apigame/util/util-lx/lxtime" |
| 9 | "apigame/util/utslice" | 9 | "apigame/util/utslice" |
| 10 | "apigame/util/utstring" | 10 | "apigame/util/utstring" |
| 11 | - "strings" | ||
| 12 | ) | 11 | ) |
| 13 | 12 | ||
| 14 | // HandleGetConfig 活动配置 | 13 | // HandleGetConfig 活动配置 |
| @@ -139,7 +138,8 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -139,7 +138,8 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 139 | // HandleShopExchange 星星商店兑换 | 138 | // HandleShopExchange 星星商店兑换 |
| 140 | func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp models.RspStarShopExchange) { | 139 | func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp models.RspStarShopExchange) { |
| 141 | rsp = models.RspStarShopExchange{ | 140 | rsp = models.RspStarShopExchange{ |
| 142 | - NewCards: make([]int, 0), | 141 | + NewHolders: make([]int, 0), |
| 142 | + NewCards: make([][]int, 0), | ||
| 143 | AwardAlbum: make(map[int]string), | 143 | AwardAlbum: make(map[int]string), |
| 144 | } | 144 | } |
| 145 | code = code_msg.RECODE_OK | 145 | code = code_msg.RECODE_OK |
| @@ -179,27 +179,6 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | @@ -179,27 +179,6 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | ||
| 179 | return | 179 | return |
| 180 | } | 180 | } |
| 181 | 181 | ||
| 182 | - // 判断配置 | ||
| 183 | - cardBagIdsStr := strings.Split(confStarShop.CardBagIds, ",") | ||
| 184 | - cardBagIds := utstring.ListStringToListInt(cardBagIdsStr) | ||
| 185 | - if len(cardBagIds) < 3 { | ||
| 186 | - lxalilog.Errors("StarShopConfig.CardBagIds error", confStarShop.Id) | ||
| 187 | - code = code_msg.RECODE_MERGE_CONFIG_ERROR | ||
| 188 | - return | ||
| 189 | - } | ||
| 190 | - cardholderId := cardBagIds[1] | ||
| 191 | - cardholderCount := cardBagIds[2] | ||
| 192 | - if cardholderCount < 1 { | ||
| 193 | - lxalilog.Errors("StarShopConfig.CardBagIds error", confStarShop.Id) | ||
| 194 | - code = code_msg.RECODE_MERGE_CONFIG_ERROR | ||
| 195 | - return | ||
| 196 | - } | ||
| 197 | - confCardholder, okCardholder := config.CardholderConfig[cardholderId] | ||
| 198 | - if !okCardholder { | ||
| 199 | - code = code_msg.RECODE_MERGE_CONFIG_ERROR | ||
| 200 | - return | ||
| 201 | - } | ||
| 202 | - | ||
| 203 | // 按照规则扣除星星 | 182 | // 按照规则扣除星星 |
| 204 | enough, cardList := GetStarCardList(player, config, confStarShop.NeedStarNumber) | 183 | enough, cardList := GetStarCardList(player, config, confStarShop.NeedStarNumber) |
| 205 | if !enough { | 184 | if !enough { |
| @@ -210,23 +189,44 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | @@ -210,23 +189,44 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | ||
| 210 | player.Details.Cards[i] -= i2 | 189 | player.Details.Cards[i] -= i2 |
| 211 | } | 190 | } |
| 212 | 191 | ||
| 192 | + // 从配置里拿到卡包ID和数量列表 | ||
| 193 | + cardholderIdCount := make(map[int]int) | ||
| 194 | + cardholderIdCountList := utstring.StringToListListInt(confStarShop.CardBagIds, "|", ",") | ||
| 195 | + for _, i2 := range cardholderIdCountList { | ||
| 196 | + if len(i2) >= 3 { | ||
| 197 | + cardholderIdCount[i2[1]] = i2[2] | ||
| 198 | + } | ||
| 199 | + } | ||
| 213 | // 开始处理抽卡 | 200 | // 开始处理抽卡 |
| 214 | openMode := 1 | 201 | openMode := 1 |
| 215 | sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) | 202 | sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) |
| 216 | - for i := 0; i < cardholderCount; i++ { | ||
| 217 | - newCards := DoOpen(gameId, | ||
| 218 | - player, config, | ||
| 219 | - confCardholder, | ||
| 220 | - sequenceId, cohort, | ||
| 221 | - openMode) | ||
| 222 | - for _, i3 := range newCards { | ||
| 223 | - rsp.NewCards = append(rsp.NewCards, i3) | 203 | + allNewCards := make([]int, 0) |
| 204 | + for cardholderId, cardholderCount := range cardholderIdCount { | ||
| 205 | + confCardholder, okCardholder := config.CardholderConfig[cardholderId] | ||
| 206 | + if !okCardholder { | ||
| 207 | + lxalilog.Errors("StarShopConfig.CardBagIds error", confStarShop.Id) | ||
| 208 | + continue | ||
| 209 | + } | ||
| 210 | + rsp.NewHolders = append(rsp.NewHolders, cardholderId) | ||
| 211 | + for i := 0; i < cardholderCount; i++ { | ||
| 212 | + newCards := DoOpen(gameId, | ||
| 213 | + player, config, | ||
| 214 | + confCardholder, | ||
| 215 | + sequenceId, cohort, | ||
| 216 | + openMode) | ||
| 217 | + // 打乱顺序 | ||
| 218 | + utslice.Shuffle(newCards) | ||
| 219 | + for _, i3 := range newCards { | ||
| 220 | + allNewCards = append(allNewCards, i3) | ||
| 221 | + } | ||
| 222 | + rsp.NewCards = append(rsp.NewCards, newCards) | ||
| 224 | } | 223 | } |
| 225 | } | 224 | } |
| 225 | + | ||
| 226 | awardAlbum, awardRound := DoOpenCheckAward(gameId, | 226 | awardAlbum, awardRound := DoOpenCheckAward(gameId, |
| 227 | player, config, | 227 | player, config, |
| 228 | sequenceId, cohort, | 228 | sequenceId, cohort, |
| 229 | - rsp.NewCards, | 229 | + allNewCards, |
| 230 | openMode) | 230 | openMode) |
| 231 | rsp.AwardAlbum = awardAlbum | 231 | rsp.AwardAlbum = awardAlbum |
| 232 | rsp.AwardRound = awardRound | 232 | rsp.AwardRound = awardRound |
service/cardholder/logic.go
| @@ -349,7 +349,7 @@ func GetStarCardList(player *Player, config *confcardholder.ActivityConfig, need | @@ -349,7 +349,7 @@ func GetStarCardList(player *Player, config *confcardholder.ActivityConfig, need | ||
| 349 | needCardCount = cardCount - 1 | 349 | needCardCount = cardCount - 1 |
| 350 | } | 350 | } |
| 351 | cardList[cardId] = needCardCount | 351 | cardList[cardId] = needCardCount |
| 352 | - starAmount += needCardCount * star | 352 | + starAmount += needCardCount * (star + 1) |
| 353 | } | 353 | } |
| 354 | } | 354 | } |
| 355 | if starAmount >= needStar { | 355 | if starAmount >= needStar { |