Commit 27cc372e327168f2c61ba3d6e28c321919961baf
1 parent
ef401a03
Exists in
master
and in
1 other branch
feat✨:房间排行活动基本框架
Showing
8 changed files
with
226 additions
and
218 deletions
Show diff stats
service/cardholder/handle.go
| @@ -48,9 +48,9 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH | @@ -48,9 +48,9 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH | ||
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | // 读取游戏数据 | 50 | // 读取游戏数据 |
| 51 | - gameData := LoadData(req.GameID, req.UID, config) | 51 | + player := LoadPlayer(req.GameID, req.UID, config) |
| 52 | 52 | ||
| 53 | - rsp.CardHolderInfo = GetInfo(gameData, config) | 53 | + rsp.CardHolderInfo = GetInfo(player, config) |
| 54 | 54 | ||
| 55 | return | 55 | return |
| 56 | } | 56 | } |
| @@ -85,21 +85,21 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -85,21 +85,21 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | // 读取游戏数据 | 87 | // 读取游戏数据 |
| 88 | - gameData := LoadData(req.GameID, req.UID, config) | 88 | + player := LoadPlayer(req.GameID, req.UID, config) |
| 89 | // 检查游戏数据 轮次等 | 89 | // 检查游戏数据 轮次等 |
| 90 | - code = CheckGameData(gameData, config) | 90 | + code = CheckGameData(player, config) |
| 91 | if code != code_msg.RECODE_OK { | 91 | if code != code_msg.RECODE_OK { |
| 92 | return | 92 | return |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | // 开始处理抽卡 | 95 | // 开始处理抽卡 |
| 96 | openMode := 0 | 96 | openMode := 0 |
| 97 | - sequenceId, cohort := GetUserSequenceIdAndCohort(gameData.Uid) | 97 | + sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) |
| 98 | allNewCards := make([]int, 0) | 98 | allNewCards := make([]int, 0) |
| 99 | for _, idCardholder := range req.Ids { | 99 | for _, idCardholder := range req.Ids { |
| 100 | confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] | 100 | confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] |
| 101 | newCards := DoOpen(req.GameID, | 101 | newCards := DoOpen(req.GameID, |
| 102 | - gameData, config, | 102 | + player, config, |
| 103 | confCardholder, | 103 | confCardholder, |
| 104 | sequenceId, cohort, | 104 | sequenceId, cohort, |
| 105 | openMode) | 105 | openMode) |
| @@ -111,7 +111,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -111,7 +111,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 111 | rsp.NewCards = append(rsp.NewCards, newCards) | 111 | rsp.NewCards = append(rsp.NewCards, newCards) |
| 112 | } | 112 | } |
| 113 | awardAlbum, awardRound := DoOpenCheckAward(req.GameID, | 113 | awardAlbum, awardRound := DoOpenCheckAward(req.GameID, |
| 114 | - gameData, config, | 114 | + player, config, |
| 115 | sequenceId, cohort, | 115 | sequenceId, cohort, |
| 116 | allNewCards, | 116 | allNewCards, |
| 117 | openMode) | 117 | openMode) |
| @@ -119,13 +119,13 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -119,13 +119,13 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 119 | rsp.AwardRound = awardRound | 119 | rsp.AwardRound = awardRound |
| 120 | 120 | ||
| 121 | // 计算星星点数 | 121 | // 计算星星点数 |
| 122 | - CalculateStarCount(gameData, config) | 122 | + CalculateStarCount(player, config) |
| 123 | 123 | ||
| 124 | // 存档 | 124 | // 存档 |
| 125 | - SaveData(req.GameID, gameData) | 125 | + SavePlayer(req.GameID, player) |
| 126 | 126 | ||
| 127 | // 返回信息 | 127 | // 返回信息 |
| 128 | - rsp.CardHolderInfo = GetInfo(gameData, config) | 128 | + rsp.CardHolderInfo = GetInfo(player, config) |
| 129 | 129 | ||
| 130 | return | 130 | return |
| 131 | } | 131 | } |
| @@ -158,15 +158,15 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | @@ -158,15 +158,15 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | ||
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | // 读取游戏数据 | 160 | // 读取游戏数据 |
| 161 | - gameData := LoadData(req.GameID, req.UID, config) | 161 | + player := LoadPlayer(req.GameID, req.UID, config) |
| 162 | // 检查游戏数据 轮次等 | 162 | // 检查游戏数据 轮次等 |
| 163 | - code = CheckGameData(gameData, config) | 163 | + code = CheckGameData(player, config) |
| 164 | if code != code_msg.RECODE_OK { | 164 | if code != code_msg.RECODE_OK { |
| 165 | return | 165 | return |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | // 判断星星数是否足够 | 168 | // 判断星星数是否足够 |
| 169 | - if gameData.Details.StarCount < confStarShop.NeedStarNumber { | 169 | + if player.Details.StarCount < confStarShop.NeedStarNumber { |
| 170 | code = code_msg.RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR | 170 | code = code_msg.RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR |
| 171 | return | 171 | return |
| 172 | } | 172 | } |
| @@ -191,21 +191,21 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | @@ -191,21 +191,21 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | ||
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | // 按照规则扣除星星 | 193 | // 按照规则扣除星星 |
| 194 | - enough, cardList := GetStarCardList(gameData, config, confStarShop.NeedStarNumber) | 194 | + enough, cardList := GetStarCardList(player, config, confStarShop.NeedStarNumber) |
| 195 | if !enough { | 195 | if !enough { |
| 196 | code = code_msg.RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR | 196 | code = code_msg.RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR |
| 197 | return | 197 | return |
| 198 | } | 198 | } |
| 199 | for i, i2 := range cardList { | 199 | for i, i2 := range cardList { |
| 200 | - gameData.Details.Cards[i] -= i2 | 200 | + player.Details.Cards[i] -= i2 |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | // 开始处理抽卡 | 203 | // 开始处理抽卡 |
| 204 | openMode := 1 | 204 | openMode := 1 |
| 205 | - sequenceId, cohort := GetUserSequenceIdAndCohort(gameData.Uid) | 205 | + sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) |
| 206 | for i := 0; i < cardholderCount; i++ { | 206 | for i := 0; i < cardholderCount; i++ { |
| 207 | newCards := DoOpen(req.GameID, | 207 | newCards := DoOpen(req.GameID, |
| 208 | - gameData, config, | 208 | + player, config, |
| 209 | confCardholder, | 209 | confCardholder, |
| 210 | sequenceId, cohort, | 210 | sequenceId, cohort, |
| 211 | openMode) | 211 | openMode) |
| @@ -214,7 +214,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | @@ -214,7 +214,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | ||
| 214 | } | 214 | } |
| 215 | } | 215 | } |
| 216 | awardAlbum, awardRound := DoOpenCheckAward(req.GameID, | 216 | awardAlbum, awardRound := DoOpenCheckAward(req.GameID, |
| 217 | - gameData, config, | 217 | + player, config, |
| 218 | sequenceId, cohort, | 218 | sequenceId, cohort, |
| 219 | rsp.NewCards, | 219 | rsp.NewCards, |
| 220 | openMode) | 220 | openMode) |
| @@ -222,15 +222,15 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | @@ -222,15 +222,15 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model | ||
| 222 | rsp.AwardRound = awardRound | 222 | rsp.AwardRound = awardRound |
| 223 | 223 | ||
| 224 | // 计算星星点数 | 224 | // 计算星星点数 |
| 225 | - CalculateStarCount(gameData, config) | 225 | + CalculateStarCount(player, config) |
| 226 | 226 | ||
| 227 | // 存档 | 227 | // 存档 |
| 228 | - SaveData(req.GameID, gameData) | 228 | + SavePlayer(req.GameID, player) |
| 229 | 229 | ||
| 230 | utslice.Shuffle(rsp.NewCards) | 230 | utslice.Shuffle(rsp.NewCards) |
| 231 | 231 | ||
| 232 | // 返回信息 | 232 | // 返回信息 |
| 233 | - rsp.CardHolderInfo = GetInfo(gameData, config) | 233 | + rsp.CardHolderInfo = GetInfo(player, config) |
| 234 | 234 | ||
| 235 | return | 235 | return |
| 236 | } | 236 | } |
| @@ -258,38 +258,38 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m | @@ -258,38 +258,38 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m | ||
| 258 | } | 258 | } |
| 259 | 259 | ||
| 260 | // 读取游戏数据 | 260 | // 读取游戏数据 |
| 261 | - gameData := LoadData(req.GameID, req.UID, config) | 261 | + player := LoadPlayer(req.GameID, req.UID, config) |
| 262 | // 检查游戏数据 轮次等 | 262 | // 检查游戏数据 轮次等 |
| 263 | - code = CheckGameData(gameData, config) | 263 | + code = CheckGameData(player, config) |
| 264 | if code != code_msg.RECODE_OK { | 264 | if code != code_msg.RECODE_OK { |
| 265 | return | 265 | return |
| 266 | } | 266 | } |
| 267 | 267 | ||
| 268 | - if gameData.Details.LastStarCount <= 0 { | 268 | + if player.Details.LastStarCount <= 0 { |
| 269 | code = code_msg.RECODE_MERGE_CARDHOLDER_NOAUTOEXCHANGEINFO_ERROR | 269 | code = code_msg.RECODE_MERGE_CARDHOLDER_NOAUTOEXCHANGEINFO_ERROR |
| 270 | return | 270 | return |
| 271 | } | 271 | } |
| 272 | 272 | ||
| 273 | - rsp.LastStarCount = gameData.Details.LastStarCount | ||
| 274 | - for _, i2 := range gameData.Details.AutoExchangeHolder { | 273 | + rsp.LastStarCount = player.Details.LastStarCount |
| 274 | + for _, i2 := range player.Details.AutoExchangeHolder { | ||
| 275 | rsp.AutoExchangeHolder = append(rsp.AutoExchangeHolder, i2) | 275 | rsp.AutoExchangeHolder = append(rsp.AutoExchangeHolder, i2) |
| 276 | } | 276 | } |
| 277 | // 把当前的卡包内数据放在新卡数据里给客户端 | 277 | // 把当前的卡包内数据放在新卡数据里给客户端 |
| 278 | - for i1, i2 := range gameData.Details.Cards { | 278 | + for i1, i2 := range player.Details.Cards { |
| 279 | for i := 0; i < i2; i++ { | 279 | for i := 0; i < i2; i++ { |
| 280 | rsp.NewCards = append(rsp.NewCards, i1) | 280 | rsp.NewCards = append(rsp.NewCards, i1) |
| 281 | } | 281 | } |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | - gameData.Details.LastStarCount = 0 | ||
| 285 | - gameData.Details.AutoExchangeHolder = make([]int, 0) | 284 | + player.Details.LastStarCount = 0 |
| 285 | + player.Details.AutoExchangeHolder = make([]int, 0) | ||
| 286 | // 存档 | 286 | // 存档 |
| 287 | - SaveData(req.GameID, gameData) | 287 | + SavePlayer(req.GameID, player) |
| 288 | 288 | ||
| 289 | utslice.Shuffle(rsp.NewCards) | 289 | utslice.Shuffle(rsp.NewCards) |
| 290 | 290 | ||
| 291 | // 返回信息 | 291 | // 返回信息 |
| 292 | - rsp.CardHolderInfo = GetInfo(gameData, config) | 292 | + rsp.CardHolderInfo = GetInfo(player, config) |
| 293 | 293 | ||
| 294 | return | 294 | return |
| 295 | } | 295 | } |
service/cardholder/logic.go
| @@ -15,52 +15,6 @@ import ( | @@ -15,52 +15,6 @@ import ( | ||
| 15 | "strconv" | 15 | "strconv" |
| 16 | ) | 16 | ) |
| 17 | 17 | ||
| 18 | -// SaveData 存储数据 | ||
| 19 | -func SaveData(gameId string, d *DataCardHolder) { | ||
| 20 | - d.UpdateTime = lxtime.NowUninx() | ||
| 21 | - d.Encode() | ||
| 22 | - | ||
| 23 | - _ = svmysql.Save(d, gameId) | ||
| 24 | -} | ||
| 25 | - | ||
| 26 | -func _LoadData(gameId string, uid int64) (d *DataCardHolder) { | ||
| 27 | - d = NewDataCardHolder(uid) | ||
| 28 | - has, err := svmysql.First(d, gameId) | ||
| 29 | - if err != nil { | ||
| 30 | - return | ||
| 31 | - } | ||
| 32 | - if has { | ||
| 33 | - d.Decode() | ||
| 34 | - } else { | ||
| 35 | - d.Init(uid) | ||
| 36 | - _ = svmysql.Insert(d, gameId) | ||
| 37 | - } | ||
| 38 | - return | ||
| 39 | -} | ||
| 40 | - | ||
| 41 | -// LoadData 获取数据 外部接口 | ||
| 42 | -func LoadData(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) { | ||
| 43 | - configId := config.Id | ||
| 44 | - d = _LoadData(gameId, uid) | ||
| 45 | - // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | ||
| 46 | - if configId != 0 && | ||
| 47 | - configId != d.ActivityId { | ||
| 48 | - | ||
| 49 | - // 剩余的星星数 | ||
| 50 | - starCount := d.Details.StarCount | ||
| 51 | - | ||
| 52 | - d.ActivityId = configId | ||
| 53 | - d.Details = NewDataCardHolderDetails() | ||
| 54 | - | ||
| 55 | - // 使用剩余的星星数来自动兑换卡包 | ||
| 56 | - d.Details.LastStarCount = starCount | ||
| 57 | - NextActivityAutoExchange(gameId, d, config) | ||
| 58 | - | ||
| 59 | - SaveData(gameId, d) | ||
| 60 | - } | ||
| 61 | - return | ||
| 62 | -} | ||
| 63 | - | ||
| 64 | // CheckStatus 判断活动是否开启 | 18 | // CheckStatus 判断活动是否开启 |
| 65 | func CheckStatus(conf *configs.CardActivityConfig) string { | 19 | func CheckStatus(conf *configs.CardActivityConfig) string { |
| 66 | sec := lxtime.NowUninx() | 20 | sec := lxtime.NowUninx() |
| @@ -120,14 +74,14 @@ func GetListFromArray(array []string, scale, count int) []string { | @@ -120,14 +74,14 @@ func GetListFromArray(array []string, scale, count int) []string { | ||
| 120 | } | 74 | } |
| 121 | 75 | ||
| 122 | // GetNewCard 按顺序查找数目最少的一张卡抽取 | 76 | // GetNewCard 按顺序查找数目最少的一张卡抽取 |
| 123 | -func GetNewCard(gameData *DataCardHolder, conf *configs.CardActivityConfig) int { | 77 | +func GetNewCard(player *DataCardHolder, conf *configs.CardActivityConfig) int { |
| 124 | if len(conf.CardConfig) < 1 { | 78 | if len(conf.CardConfig) < 1 { |
| 125 | return 0 | 79 | return 0 |
| 126 | } | 80 | } |
| 127 | rate := int64(100000000) | 81 | rate := int64(100000000) |
| 128 | list := make([]int64, 0) | 82 | list := make([]int64, 0) |
| 129 | for id, _ := range conf.CardConfig { | 83 | for id, _ := range conf.CardConfig { |
| 130 | - count, _ := gameData.Details.Cards[id] | 84 | + count, _ := player.Details.Cards[id] |
| 131 | index := int64(count)*rate + int64(id) | 85 | index := int64(count)*rate + int64(id) |
| 132 | list = append(list, index) | 86 | list = append(list, index) |
| 133 | } | 87 | } |
| @@ -137,10 +91,10 @@ func GetNewCard(gameData *DataCardHolder, conf *configs.CardActivityConfig) int | @@ -137,10 +91,10 @@ func GetNewCard(gameData *DataCardHolder, conf *configs.CardActivityConfig) int | ||
| 137 | } | 91 | } |
| 138 | 92 | ||
| 139 | // CheckAlbumFinish 判断卡组是否已集齐 | 93 | // CheckAlbumFinish 判断卡组是否已集齐 |
| 140 | -func CheckAlbumFinish(albumId int, gameData *DataCardHolder, config *configs.CardActivityConfig) bool { | 94 | +func CheckAlbumFinish(albumId int, player *DataCardHolder, config *configs.CardActivityConfig) bool { |
| 141 | for _, conf := range config.CardConfig { | 95 | for _, conf := range config.CardConfig { |
| 142 | if conf.SetId == albumId { | 96 | if conf.SetId == albumId { |
| 143 | - count := gameData.Details.Cards[conf.Id] | 97 | + count := player.Details.Cards[conf.Id] |
| 144 | if count < 1 { | 98 | if count < 1 { |
| 145 | return false | 99 | return false |
| 146 | } | 100 | } |
| @@ -150,9 +104,9 @@ func CheckAlbumFinish(albumId int, gameData *DataCardHolder, config *configs.Car | @@ -150,9 +104,9 @@ func CheckAlbumFinish(albumId int, gameData *DataCardHolder, config *configs.Car | ||
| 150 | } | 104 | } |
| 151 | 105 | ||
| 152 | // CheckRoundFinish 判断轮次是否已集齐(所有卡组集齐) | 106 | // CheckRoundFinish 判断轮次是否已集齐(所有卡组集齐) |
| 153 | -func CheckRoundFinish(gameData *DataCardHolder, config *configs.CardActivityConfig) bool { | 107 | +func CheckRoundFinish(player *DataCardHolder, config *configs.CardActivityConfig) bool { |
| 154 | for _, conf := range config.AlbumConfig { | 108 | for _, conf := range config.AlbumConfig { |
| 155 | - count := gameData.Details.Album[conf.SetId] | 109 | + count := player.Details.Album[conf.SetId] |
| 156 | if count < 1 { | 110 | if count < 1 { |
| 157 | return false | 111 | return false |
| 158 | } | 112 | } |
| @@ -161,34 +115,34 @@ func CheckRoundFinish(gameData *DataCardHolder, config *configs.CardActivityConf | @@ -161,34 +115,34 @@ func CheckRoundFinish(gameData *DataCardHolder, config *configs.CardActivityConf | ||
| 161 | } | 115 | } |
| 162 | 116 | ||
| 163 | // HandleNextRound 处理轮次完成 星级序列刻度 卡牌序列刻度 | 117 | // HandleNextRound 处理轮次完成 星级序列刻度 卡牌序列刻度 |
| 164 | -func HandleNextRound(gameData *DataCardHolder) { | ||
| 165 | - gameData.Details.Round += 1 | ||
| 166 | - gameData.Details.Cards = make(map[int]int) | ||
| 167 | - gameData.Details.Album = make(map[int]int) | 118 | +func HandleNextRound(player *DataCardHolder) { |
| 119 | + player.Details.Round += 1 | ||
| 120 | + player.Details.Cards = make(map[int]int) | ||
| 121 | + player.Details.Album = make(map[int]int) | ||
| 168 | } | 122 | } |
| 169 | 123 | ||
| 170 | // GetInfo 玩家卡牌活动信息 | 124 | // GetInfo 玩家卡牌活动信息 |
| 171 | -func GetInfo(gameData *DataCardHolder, conf *configs.CardActivityConfig) models.CardHolderInfo { | 125 | +func GetInfo(player *DataCardHolder, conf *configs.CardActivityConfig) models.CardHolderInfo { |
| 172 | info := models.CardHolderInfo{ | 126 | info := models.CardHolderInfo{ |
| 173 | Cards: make(map[int]int), | 127 | Cards: make(map[int]int), |
| 174 | Album: make(map[int]int), | 128 | Album: make(map[int]int), |
| 175 | Round: 0, | 129 | Round: 0, |
| 176 | } | 130 | } |
| 177 | - for i, i2 := range gameData.Details.Cards { | 131 | + for i, i2 := range player.Details.Cards { |
| 178 | info.Cards[i] = i2 | 132 | info.Cards[i] = i2 |
| 179 | } | 133 | } |
| 180 | - for i, i2 := range gameData.Details.Album { | 134 | + for i, i2 := range player.Details.Album { |
| 181 | info.Album[i] = i2 | 135 | info.Album[i] = i2 |
| 182 | } | 136 | } |
| 183 | - info.StarCount = gameData.Details.StarCount | ||
| 184 | - info.Round = gameData.Details.Round | 137 | + info.StarCount = player.Details.StarCount |
| 138 | + info.Round = player.Details.Round | ||
| 185 | return info | 139 | return info |
| 186 | } | 140 | } |
| 187 | 141 | ||
| 188 | // DoOpen 封装的抽卡逻辑 | 142 | // DoOpen 封装的抽卡逻辑 |
| 189 | // openMode:开包类型0客户端驱动1星星商店购买2剩余星星兑换 | 143 | // openMode:开包类型0客户端驱动1星星商店购买2剩余星星兑换 |
| 190 | func DoOpen(gameId string, | 144 | func DoOpen(gameId string, |
| 191 | - gameData *DataCardHolder, | 145 | + player *DataCardHolder, |
| 192 | config *configs.CardActivityConfig, | 146 | config *configs.CardActivityConfig, |
| 193 | confCardholder configs.OpenCardholderConfig, | 147 | confCardholder configs.OpenCardholderConfig, |
| 194 | sequenceId, cohort string, | 148 | sequenceId, cohort string, |
| @@ -198,22 +152,22 @@ func DoOpen(gameId string, | @@ -198,22 +152,22 @@ func DoOpen(gameId string, | ||
| 198 | 152 | ||
| 199 | if confCardholder.IsNew != 0 { | 153 | if confCardholder.IsNew != 0 { |
| 200 | // 如果是新卡包 按顺序查找数目最少的一张卡抽取 | 154 | // 如果是新卡包 按顺序查找数目最少的一张卡抽取 |
| 201 | - cardId := GetNewCard(gameData, config) | 155 | + cardId := GetNewCard(player, config) |
| 202 | // 增加卡牌 | 156 | // 增加卡牌 |
| 203 | - gameData.Details.Cards[cardId] += 1 | 157 | + player.Details.Cards[cardId] += 1 |
| 204 | newCards = append(newCards, cardId) | 158 | newCards = append(newCards, cardId) |
| 205 | } else { | 159 | } else { |
| 206 | getCardFunc := func(cardConfigId string) { | 160 | getCardFunc := func(cardConfigId string) { |
| 207 | confCardSequence, hasCardSequence := config.FindCardSequenceConfig(cardConfigId, sequenceId, cohort) | 161 | confCardSequence, hasCardSequence := config.FindCardSequenceConfig(cardConfigId, sequenceId, cohort) |
| 208 | if hasCardSequence { | 162 | if hasCardSequence { |
| 209 | combineId := configs.CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) | 163 | combineId := configs.CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) |
| 210 | - scale := gameData.Details.CardSequenceScales[combineId] | 164 | + scale := player.Details.CardSequenceScales[combineId] |
| 211 | cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) | 165 | cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) |
| 212 | cardIdInt := utstring.StringToInt(cardId) | 166 | cardIdInt := utstring.StringToInt(cardId) |
| 213 | // 增加刻度 | 167 | // 增加刻度 |
| 214 | - gameData.Details.CardSequenceScales[combineId] = scale + 1 | 168 | + player.Details.CardSequenceScales[combineId] = scale + 1 |
| 215 | // 增加卡牌 | 169 | // 增加卡牌 |
| 216 | - gameData.Details.Cards[cardIdInt] += 1 | 170 | + player.Details.Cards[cardIdInt] += 1 |
| 217 | newCards = append(newCards, cardIdInt) | 171 | newCards = append(newCards, cardIdInt) |
| 218 | } | 172 | } |
| 219 | } | 173 | } |
| @@ -228,10 +182,10 @@ func DoOpen(gameId string, | @@ -228,10 +182,10 @@ func DoOpen(gameId string, | ||
| 228 | confNormalCardStar, hasNormalCardStar := config.FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) | 182 | confNormalCardStar, hasNormalCardStar := config.FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) |
| 229 | if hasNormalCardStar { | 183 | if hasNormalCardStar { |
| 230 | combineIdStar := configs.CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) | 184 | combineIdStar := configs.CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) |
| 231 | - scaleStar := gameData.Details.StarSequenceScales[combineIdStar] | 185 | + scaleStar := player.Details.StarSequenceScales[combineIdStar] |
| 232 | starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count) | 186 | starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count) |
| 233 | // 增加星级刻度 | 187 | // 增加星级刻度 |
| 234 | - gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count | 188 | + player.Details.StarSequenceScales[combineIdStar] = scaleStar + count |
| 235 | // 遍历星级刻度抽取n张卡牌 | 189 | // 遍历星级刻度抽取n张卡牌 |
| 236 | for _, id := range starIds { | 190 | for _, id := range starIds { |
| 237 | getCardFunc(id) | 191 | getCardFunc(id) |
| @@ -241,7 +195,7 @@ func DoOpen(gameId string, | @@ -241,7 +195,7 @@ func DoOpen(gameId string, | ||
| 241 | } | 195 | } |
| 242 | // 记录开卡包日志 | 196 | // 记录开卡包日志 |
| 243 | { | 197 | { |
| 244 | - recordBase := NewRecordCardHolderBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) | 198 | + recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) |
| 245 | _ = svmysql.Insert(NewRecordCardHolderOpen(recordBase, | 199 | _ = svmysql.Insert(NewRecordCardHolderOpen(recordBase, |
| 246 | openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards)), | 200 | openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards)), |
| 247 | gameId) | 201 | gameId) |
| @@ -252,7 +206,7 @@ func DoOpen(gameId string, | @@ -252,7 +206,7 @@ func DoOpen(gameId string, | ||
| 252 | 206 | ||
| 253 | // DoOpenCheckAward 封装的新卡判断是否出发卡组和轮次奖励的逻辑 | 207 | // DoOpenCheckAward 封装的新卡判断是否出发卡组和轮次奖励的逻辑 |
| 254 | func DoOpenCheckAward(gameId string, | 208 | func DoOpenCheckAward(gameId string, |
| 255 | - gameData *DataCardHolder, | 209 | + player *DataCardHolder, |
| 256 | config *configs.CardActivityConfig, | 210 | config *configs.CardActivityConfig, |
| 257 | sequenceId, cohort string, | 211 | sequenceId, cohort string, |
| 258 | newCards []int, | 212 | newCards []int, |
| @@ -271,7 +225,7 @@ func DoOpenCheckAward(gameId string, | @@ -271,7 +225,7 @@ func DoOpenCheckAward(gameId string, | ||
| 271 | } | 225 | } |
| 272 | albumId := confCard.SetId | 226 | albumId := confCard.SetId |
| 273 | // 是否已领过 | 227 | // 是否已领过 |
| 274 | - countGot := gameData.Details.Album[albumId] | 228 | + countGot := player.Details.Album[albumId] |
| 275 | if countGot > 0 { | 229 | if countGot > 0 { |
| 276 | continue | 230 | continue |
| 277 | } | 231 | } |
| @@ -281,34 +235,34 @@ func DoOpenCheckAward(gameId string, | @@ -281,34 +235,34 @@ func DoOpenCheckAward(gameId string, | ||
| 281 | continue | 235 | continue |
| 282 | } | 236 | } |
| 283 | // 检查卡组内卡是否集齐 | 237 | // 检查卡组内卡是否集齐 |
| 284 | - if !CheckAlbumFinish(albumId, gameData, config) { | 238 | + if !CheckAlbumFinish(albumId, player, config) { |
| 285 | continue | 239 | continue |
| 286 | } | 240 | } |
| 287 | // 集齐处理发奖 | 241 | // 集齐处理发奖 |
| 288 | - gameData.Details.Album[albumId] += 1 | ||
| 289 | - award := confAlbum.Rewards[utstring.IntToString(gameData.Details.Round)] | 242 | + player.Details.Album[albumId] += 1 |
| 243 | + award := confAlbum.Rewards[utstring.IntToString(player.Details.Round)] | ||
| 290 | awardAlbum[albumId] = award | 244 | awardAlbum[albumId] = award |
| 291 | { | 245 | { |
| 292 | // 记录日志 | 246 | // 记录日志 |
| 293 | - recordBase := NewRecordCardHolderBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) | 247 | + recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) |
| 294 | _ = svmysql.Insert(NewRecordCardHolderRewardAlbum(recordBase, | 248 | _ = svmysql.Insert(NewRecordCardHolderRewardAlbum(recordBase, |
| 295 | albumId, award), | 249 | albumId, award), |
| 296 | gameId) | 250 | gameId) |
| 297 | } | 251 | } |
| 298 | } | 252 | } |
| 299 | // 判断 处理 发放轮次奖励 轮次完成 | 253 | // 判断 处理 发放轮次奖励 轮次完成 |
| 300 | - if CheckRoundFinish(gameData, config) { | 254 | + if CheckRoundFinish(player, config) { |
| 301 | // 返回奖励 | 255 | // 返回奖励 |
| 302 | - awardRound = config.Awards[utstring.IntToString(gameData.Details.Round)] | 256 | + awardRound = config.Awards[utstring.IntToString(player.Details.Round)] |
| 303 | 257 | ||
| 304 | // 记录日志 | 258 | // 记录日志 |
| 305 | - recordBase := NewRecordCardHolderBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) | 259 | + recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) |
| 306 | _ = svmysql.Insert(NewRecordCardHolderRewardRound(recordBase, | 260 | _ = svmysql.Insert(NewRecordCardHolderRewardRound(recordBase, |
| 307 | awardRound), | 261 | awardRound), |
| 308 | gameId) | 262 | gameId) |
| 309 | 263 | ||
| 310 | // 处理轮次完成 | 264 | // 处理轮次完成 |
| 311 | - HandleNextRound(gameData) | 265 | + HandleNextRound(player) |
| 312 | } | 266 | } |
| 313 | } | 267 | } |
| 314 | 268 | ||
| @@ -316,9 +270,9 @@ func DoOpenCheckAward(gameId string, | @@ -316,9 +270,9 @@ func DoOpenCheckAward(gameId string, | ||
| 316 | } | 270 | } |
| 317 | 271 | ||
| 318 | // CalculateStarCount 计算星星点数 | 272 | // CalculateStarCount 计算星星点数 |
| 319 | -func CalculateStarCount(gameData *DataCardHolder, config *configs.CardActivityConfig) { | 273 | +func CalculateStarCount(player *DataCardHolder, config *configs.CardActivityConfig) { |
| 320 | starCount := 0 | 274 | starCount := 0 |
| 321 | - for cardId, cardCount := range gameData.Details.Cards { | 275 | + for cardId, cardCount := range player.Details.Cards { |
| 322 | if cardCount <= 1 { | 276 | if cardCount <= 1 { |
| 323 | continue | 277 | continue |
| 324 | } | 278 | } |
| @@ -334,11 +288,11 @@ func CalculateStarCount(gameData *DataCardHolder, config *configs.CardActivityCo | @@ -334,11 +288,11 @@ func CalculateStarCount(gameData *DataCardHolder, config *configs.CardActivityCo | ||
| 334 | starCount += (cardCount - 1) * confCard.Star | 288 | starCount += (cardCount - 1) * confCard.Star |
| 335 | } | 289 | } |
| 336 | } | 290 | } |
| 337 | - gameData.Details.StarCount = starCount | 291 | + player.Details.StarCount = starCount |
| 338 | } | 292 | } |
| 339 | 293 | ||
| 340 | // GetStarCardList 按照规则扣除星星数找到需要扣除的卡牌列表 | 294 | // GetStarCardList 按照规则扣除星星数找到需要扣除的卡牌列表 |
| 341 | -func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfig, needStar int) (enough bool, cardList map[int]int) { | 295 | +func GetStarCardList(player *DataCardHolder, config *configs.CardActivityConfig, needStar int) (enough bool, cardList map[int]int) { |
| 342 | enough = false | 296 | enough = false |
| 343 | cardList = make(map[int]int) | 297 | cardList = make(map[int]int) |
| 344 | starAmount := 0 | 298 | starAmount := 0 |
| @@ -346,7 +300,7 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi | @@ -346,7 +300,7 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi | ||
| 346 | // 等级依次从低到高 | 300 | // 等级依次从低到高 |
| 347 | // 先普卡 | 301 | // 先普卡 |
| 348 | for i := 1; i <= levelMax; i++ { | 302 | for i := 1; i <= levelMax; i++ { |
| 349 | - for cardId, cardCount := range gameData.Details.Cards { | 303 | + for cardId, cardCount := range player.Details.Cards { |
| 350 | if starAmount >= needStar { | 304 | if starAmount >= needStar { |
| 351 | enough = true | 305 | enough = true |
| 352 | return | 306 | return |
| @@ -373,7 +327,7 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi | @@ -373,7 +327,7 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi | ||
| 373 | } | 327 | } |
| 374 | // 金卡 | 328 | // 金卡 |
| 375 | for i := 1; i <= levelMax; i++ { | 329 | for i := 1; i <= levelMax; i++ { |
| 376 | - for cardId, cardCount := range gameData.Details.Cards { | 330 | + for cardId, cardCount := range player.Details.Cards { |
| 377 | if starAmount >= needStar { | 331 | if starAmount >= needStar { |
| 378 | enough = true | 332 | enough = true |
| 379 | return | 333 | return |
| @@ -407,8 +361,8 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi | @@ -407,8 +361,8 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi | ||
| 407 | } | 361 | } |
| 408 | 362 | ||
| 409 | // NextActivityAutoExchange 活动切换时自动兑换卡包 | 363 | // NextActivityAutoExchange 活动切换时自动兑换卡包 |
| 410 | -func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *configs.CardActivityConfig) { | ||
| 411 | - starCount := gameData.Details.LastStarCount | 364 | +func NextActivityAutoExchange(gameId string, player *DataCardHolder, config *configs.CardActivityConfig) { |
| 365 | + starCount := player.Details.LastStarCount | ||
| 412 | // 把星星的配置按照需要的星星数降序排列 | 366 | // 把星星的配置按照需要的星星数降序排列 |
| 413 | list := lo.Values[int, configs.StarShopConfig](config.StarShopConfig) | 367 | list := lo.Values[int, configs.StarShopConfig](config.StarShopConfig) |
| 414 | sort.Slice(list, func(i, j int) bool { | 368 | sort.Slice(list, func(i, j int) bool { |
| @@ -418,19 +372,19 @@ func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *c | @@ -418,19 +372,19 @@ func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *c | ||
| 418 | // 遍历 | 372 | // 遍历 |
| 419 | for _, config := range list { | 373 | for _, config := range list { |
| 420 | for starCount >= config.NeedStarNumber { | 374 | for starCount >= config.NeedStarNumber { |
| 421 | - gameData.Details.AutoExchangeHolder = append(gameData.Details.AutoExchangeHolder, config.Id) | 375 | + player.Details.AutoExchangeHolder = append(player.Details.AutoExchangeHolder, config.Id) |
| 422 | starCount -= config.NeedStarNumber | 376 | starCount -= config.NeedStarNumber |
| 423 | } | 377 | } |
| 424 | } | 378 | } |
| 425 | 379 | ||
| 426 | // 开始处理抽卡 | 380 | // 开始处理抽卡 |
| 427 | openMode := 2 | 381 | openMode := 2 |
| 428 | - sequenceId, cohort := GetUserSequenceIdAndCohort(gameData.Uid) | 382 | + sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) |
| 429 | allNewCards := make([]int, 0) | 383 | allNewCards := make([]int, 0) |
| 430 | - for _, idCardholder := range gameData.Details.AutoExchangeHolder { | 384 | + for _, idCardholder := range player.Details.AutoExchangeHolder { |
| 431 | confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] | 385 | confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] |
| 432 | newCards := DoOpen(gameId, | 386 | newCards := DoOpen(gameId, |
| 433 | - gameData, config, | 387 | + player, config, |
| 434 | confCardholder, | 388 | confCardholder, |
| 435 | sequenceId, cohort, | 389 | sequenceId, cohort, |
| 436 | openMode) | 390 | openMode) |
| @@ -441,11 +395,11 @@ func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *c | @@ -441,11 +395,11 @@ func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *c | ||
| 441 | } | 395 | } |
| 442 | } | 396 | } |
| 443 | _, _ = DoOpenCheckAward(gameId, | 397 | _, _ = DoOpenCheckAward(gameId, |
| 444 | - gameData, config, | 398 | + player, config, |
| 445 | sequenceId, cohort, | 399 | sequenceId, cohort, |
| 446 | allNewCards, | 400 | allNewCards, |
| 447 | openMode) | 401 | openMode) |
| 448 | 402 | ||
| 449 | // 计算星星点数 | 403 | // 计算星星点数 |
| 450 | - CalculateStarCount(gameData, config) | 404 | + CalculateStarCount(player, config) |
| 451 | } | 405 | } |
| @@ -0,0 +1,53 @@ | @@ -0,0 +1,53 @@ | ||
| 1 | +package cardholder | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/configs" | ||
| 5 | + "apigame/service-common/svmysql" | ||
| 6 | + "apigame/util/util-lx/lxtime" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +// SavePlayer 存储数据 | ||
| 10 | +func SavePlayer(gameId string, d *DataCardHolder) { | ||
| 11 | + d.UpdateTime = lxtime.NowUninx() | ||
| 12 | + d.Encode() | ||
| 13 | + | ||
| 14 | + _ = svmysql.Save(d, gameId) | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) { | ||
| 18 | + d = NewDataCardHolder(uid) | ||
| 19 | + has, err := svmysql.First(d, gameId) | ||
| 20 | + if err != nil { | ||
| 21 | + return | ||
| 22 | + } | ||
| 23 | + if has { | ||
| 24 | + d.Decode() | ||
| 25 | + } else { | ||
| 26 | + d.Init(uid) | ||
| 27 | + _ = svmysql.Insert(d, gameId) | ||
| 28 | + } | ||
| 29 | + return | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +// LoadPlayer 获取数据 外部接口 | ||
| 33 | +func LoadPlayer(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) { | ||
| 34 | + configId := config.Id | ||
| 35 | + d = _LoadPlayer(gameId, uid) | ||
| 36 | + // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | ||
| 37 | + if configId != 0 && | ||
| 38 | + configId != d.ActivityId { | ||
| 39 | + | ||
| 40 | + // 剩余的星星数 | ||
| 41 | + starCount := d.Details.StarCount | ||
| 42 | + | ||
| 43 | + d.ActivityId = configId | ||
| 44 | + d.Details = NewDataCardHolderDetails() | ||
| 45 | + | ||
| 46 | + // 使用剩余的星星数来自动兑换卡包 | ||
| 47 | + d.Details.LastStarCount = starCount | ||
| 48 | + NextActivityAutoExchange(gameId, d, config) | ||
| 49 | + | ||
| 50 | + SavePlayer(gameId, d) | ||
| 51 | + } | ||
| 52 | + return | ||
| 53 | +} |
service/roomrank/dto-game.go
| @@ -1,42 +0,0 @@ | @@ -1,42 +0,0 @@ | ||
| 1 | -package roomrank | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "apigame/service-common/svconst" | ||
| 5 | - "apigame/service-common/svmysql" | ||
| 6 | - "apigame/util/util-lx/lxtime" | ||
| 7 | -) | ||
| 8 | - | ||
| 9 | -// DataRoomRank 房间排行持久数据 | ||
| 10 | -type DataRoomRank struct { | ||
| 11 | - Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` | ||
| 12 | - ActivityId int64 `gorm:"comment:活动ID"` | ||
| 13 | - | ||
| 14 | - UserType int `gorm:"comment:用户类型"` // 0=新手用户 1=优质用户 2=普通用户 3=垃圾用户 | ||
| 15 | - UserScore int `gorm:"comment:用户评级分"` | ||
| 16 | - UserClass int `gorm:"comment:用户评级"` | ||
| 17 | - | ||
| 18 | - RoomUid int `gorm:"comment:所在房间唯一ID"` | ||
| 19 | - | ||
| 20 | - CreateTime int64 `gorm:"comment:创建时间戳"` | ||
| 21 | - UpdateTime int64 `gorm:"comment:修改时间戳"` | ||
| 22 | -} | ||
| 23 | - | ||
| 24 | -func (d *DataRoomRank) MysqlInfo(suffix string) *svmysql.MysqlInfo { | ||
| 25 | - tableName := svconst.MYSQL_TABLE_S_ROOMRANK_DATA | ||
| 26 | - return &svmysql.MysqlInfo{ | ||
| 27 | - DbMysql: svconst.DbCommon, | ||
| 28 | - TableName: tableName + suffix, | ||
| 29 | - } | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -func NewDataRoomRank(uid int64) *DataRoomRank { | ||
| 33 | - d := &DataRoomRank{ | ||
| 34 | - Uid: uid, | ||
| 35 | - } | ||
| 36 | - return d | ||
| 37 | -} | ||
| 38 | - | ||
| 39 | -func (d *DataRoomRank) Init(uid int64) { | ||
| 40 | - d.Uid = uid | ||
| 41 | - d.CreateTime = lxtime.NowUninx() | ||
| 42 | -} |
| @@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
| 1 | +package roomrank | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/service-common/svconst" | ||
| 5 | + "apigame/service-common/svmysql" | ||
| 6 | + "apigame/util/util-lx/lxtime" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +// DataRoomRank 房间排行持久数据 | ||
| 10 | +type DataRoomRank struct { | ||
| 11 | + Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` | ||
| 12 | + ActivityId int64 `gorm:"comment:活动ID"` | ||
| 13 | + | ||
| 14 | + UserType int `gorm:"comment:用户类型"` // 0=新手用户 1=优质用户 2=普通用户 3=垃圾用户 | ||
| 15 | + UserScore int `gorm:"comment:用户评级分"` | ||
| 16 | + UserClass int `gorm:"comment:用户评级"` | ||
| 17 | + | ||
| 18 | + RoomUid int `gorm:"comment:所在房间唯一ID"` | ||
| 19 | + | ||
| 20 | + CreateTime int64 `gorm:"comment:创建时间戳"` | ||
| 21 | + UpdateTime int64 `gorm:"comment:修改时间戳"` | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +func (d *DataRoomRank) MysqlInfo(suffix string) *svmysql.MysqlInfo { | ||
| 25 | + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_DATA | ||
| 26 | + return &svmysql.MysqlInfo{ | ||
| 27 | + DbMysql: svconst.DbCommon, | ||
| 28 | + TableName: tableName + suffix, | ||
| 29 | + } | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +func NewDataRoomRank(uid int64) *DataRoomRank { | ||
| 33 | + d := &DataRoomRank{ | ||
| 34 | + Uid: uid, | ||
| 35 | + } | ||
| 36 | + return d | ||
| 37 | +} | ||
| 38 | + | ||
| 39 | +func (d *DataRoomRank) Init(uid int64) { | ||
| 40 | + d.Uid = uid | ||
| 41 | + d.CreateTime = lxtime.NowUninx() | ||
| 42 | +} |
service/roomrank/handle.go
| @@ -41,9 +41,9 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | @@ -41,9 +41,9 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | ||
| 41 | //} | 41 | //} |
| 42 | 42 | ||
| 43 | // 读取游戏数据 | 43 | // 读取游戏数据 |
| 44 | - gameData := LoadData(req.GameID, req.UID, config) | 44 | + player := LoadPlayer(req.GameID, req.UID, config) |
| 45 | 45 | ||
| 46 | - rsp.RoomRankInfo = GetInfo(gameData, config) | 46 | + rsp.RoomRankInfo = GetInfo(player, config) |
| 47 | 47 | ||
| 48 | return | 48 | return |
| 49 | } | 49 | } |
service/roomrank/logic.go
| 1 | package roomrank | 1 | package roomrank |
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "apigame/configs" | ||
| 5 | - "apigame/models" | ||
| 6 | - "apigame/service-common/svmysql" | ||
| 7 | - "apigame/util/util-lx/lxtime" | ||
| 8 | -) | ||
| 9 | - | ||
| 10 | -// SaveData 存储数据 | ||
| 11 | -func SaveData(gameId string, d *DataRoomRank) { | ||
| 12 | - d.UpdateTime = lxtime.NowUninx() | ||
| 13 | - | ||
| 14 | - _ = svmysql.Save(d, gameId) | ||
| 15 | -} | ||
| 16 | - | ||
| 17 | -func _LoadData(gameId string, uid int64) (d *DataRoomRank) { | ||
| 18 | - d = NewDataRoomRank(uid) | ||
| 19 | - has, err := svmysql.First(d, gameId) | ||
| 20 | - if err != nil { | ||
| 21 | - return | ||
| 22 | - } | ||
| 23 | - if has { | ||
| 24 | - } else { | ||
| 25 | - d.Init(uid) | ||
| 26 | - _ = svmysql.Insert(d, gameId) | ||
| 27 | - } | ||
| 28 | - return | ||
| 29 | -} | ||
| 30 | - | ||
| 31 | -// LoadData 获取数据 外部接口 | ||
| 32 | -func LoadData(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRank) { | ||
| 33 | - configId := config.Id | ||
| 34 | - d = _LoadData(gameId, uid) | ||
| 35 | - // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | ||
| 36 | - if configId != 0 && | ||
| 37 | - configId != d.ActivityId { | ||
| 38 | - | ||
| 39 | - d.ActivityId = configId | ||
| 40 | - | ||
| 41 | - SaveData(gameId, d) | ||
| 42 | - } | ||
| 43 | - return | ||
| 44 | -} | ||
| 45 | - | ||
| 46 | -// GetInfo 活动信息 | ||
| 47 | -func GetInfo(gameData *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo { | ||
| 48 | - info := models.RoomRankInfo{} | ||
| 49 | - return info | ||
| 50 | -} |
| @@ -0,0 +1,50 @@ | @@ -0,0 +1,50 @@ | ||
| 1 | +package roomrank | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/configs" | ||
| 5 | + "apigame/models" | ||
| 6 | + "apigame/service-common/svmysql" | ||
| 7 | + "apigame/util/util-lx/lxtime" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +// SavePlayer 存储数据 | ||
| 11 | +func SavePlayer(gameId string, d *DataRoomRank) { | ||
| 12 | + d.UpdateTime = lxtime.NowUninx() | ||
| 13 | + | ||
| 14 | + _ = svmysql.Save(d, gameId) | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { | ||
| 18 | + d = NewDataRoomRank(uid) | ||
| 19 | + has, err := svmysql.First(d, gameId) | ||
| 20 | + if err != nil { | ||
| 21 | + return | ||
| 22 | + } | ||
| 23 | + if has { | ||
| 24 | + } else { | ||
| 25 | + d.Init(uid) | ||
| 26 | + _ = svmysql.Insert(d, gameId) | ||
| 27 | + } | ||
| 28 | + return | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +// LoadPlayer 获取数据 外部接口 | ||
| 32 | +func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRank) { | ||
| 33 | + configId := config.Id | ||
| 34 | + d = _LoadPlayer(gameId, uid) | ||
| 35 | + // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | ||
| 36 | + if configId != 0 && | ||
| 37 | + configId != d.ActivityId { | ||
| 38 | + | ||
| 39 | + d.ActivityId = configId | ||
| 40 | + | ||
| 41 | + SavePlayer(gameId, d) | ||
| 42 | + } | ||
| 43 | + return | ||
| 44 | +} | ||
| 45 | + | ||
| 46 | +// GetInfo 活动信息 | ||
| 47 | +func GetInfo(player *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo { | ||
| 48 | + info := models.RoomRankInfo{} | ||
| 49 | + return info | ||
| 50 | +} |