Commit 724ed6617a5e9b18a6a55ac03e5e9947ef591a29

Authored by 王家文
1 parent e442cd33
Exists in master and in 1 other branch dev-wjw

feat✨:房间排行活动逻辑

models/roomrank.go
@@ -14,6 +14,7 @@ type RspRoomRankGetConfig struct { @@ -14,6 +14,7 @@ type RspRoomRankGetConfig struct {
14 14
15 // RoomRankInfo 房间排行信息 15 // RoomRankInfo 房间排行信息
16 type RoomRankInfo struct { 16 type RoomRankInfo struct {
  17 + RoomUid int64 `form:"room_uid" json:"room_uid"` // 房间唯一ID
17 } 18 }
18 19
19 // ReqRoomRankInfo 请求 房间排行信息 20 // ReqRoomRankInfo 请求 房间排行信息
service/cardholder/handle.go
@@ -14,9 +14,10 @@ import ( @@ -14,9 +14,10 @@ import (
14 func HandleGetConfig(req *models.ReqCardHolderGetConfig) (code string, rsp models.RspCardHolderGetConfig) { 14 func HandleGetConfig(req *models.ReqCardHolderGetConfig) (code string, rsp models.RspCardHolderGetConfig) {
15 rsp = models.RspCardHolderGetConfig{} 15 rsp = models.RspCardHolderGetConfig{}
16 code = code_msg.RECODE_OK 16 code = code_msg.RECODE_OK
  17 + gameId := req.GameID
17 18
18 // 尝试更新配置 19 // 尝试更新配置
19 - config, _ := configs.GetCardActivityConfig(req.GameID) 20 + config, _ := configs.GetCardActivityConfig(gameId)
20 rsp.ActivityId = config.Id 21 rsp.ActivityId = config.Id
21 rsp.PrepareTime = config.PreviewTime 22 rsp.PrepareTime = config.PreviewTime
22 rsp.StartTime = config.StartTime 23 rsp.StartTime = config.StartTime
@@ -32,9 +33,11 @@ func HandleGetConfig(req *models.ReqCardHolderGetConfig) (code string, rsp model @@ -32,9 +33,11 @@ func HandleGetConfig(req *models.ReqCardHolderGetConfig) (code string, rsp model
32 func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardHolderInfo) { 33 func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardHolderInfo) {
33 rsp = models.RspCardHolderInfo{} 34 rsp = models.RspCardHolderInfo{}
34 code = code_msg.RECODE_OK 35 code = code_msg.RECODE_OK
  36 + gameId := req.GameID
  37 + playerUid := req.UID
35 38
36 // 尝试更新配置 39 // 尝试更新配置
37 - config, hasConfig := configs.GetCardActivityConfig(req.GameID) 40 + config, hasConfig := configs.GetCardActivityConfig(gameId)
38 if !hasConfig { 41 if !hasConfig {
39 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR 42 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
40 return 43 return
@@ -48,7 +51,7 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH @@ -48,7 +51,7 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH
48 } 51 }
49 52
50 // 读取游戏数据 53 // 读取游戏数据
51 - player := LoadPlayer(req.GameID, req.UID, config) 54 + player := LoadPlayer(gameId, playerUid, config)
52 55
53 rsp.CardHolderInfo = GetInfo(player, config) 56 rsp.CardHolderInfo = GetInfo(player, config)
54 57
@@ -62,9 +65,11 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH @@ -62,9 +65,11 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
62 AwardAlbum: make(map[int]string), 65 AwardAlbum: make(map[int]string),
63 } 66 }
64 code = code_msg.RECODE_OK 67 code = code_msg.RECODE_OK
  68 + gameId := req.GameID
  69 + playerUid := req.UID
65 70
66 // 尝试更新配置 71 // 尝试更新配置
67 - config, hasConfig := configs.GetCardActivityConfig(req.GameID) 72 + config, hasConfig := configs.GetCardActivityConfig(gameId)
68 if !hasConfig { 73 if !hasConfig {
69 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR 74 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
70 return 75 return
@@ -85,7 +90,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH @@ -85,7 +90,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
85 } 90 }
86 91
87 // 读取游戏数据 92 // 读取游戏数据
88 - player := LoadPlayer(req.GameID, req.UID, config) 93 + player := LoadPlayer(gameId, playerUid, config)
89 // 检查游戏数据 轮次等 94 // 检查游戏数据 轮次等
90 code = CheckGameData(player, config) 95 code = CheckGameData(player, config)
91 if code != code_msg.RECODE_OK { 96 if code != code_msg.RECODE_OK {
@@ -98,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH @@ -98,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
98 allNewCards := make([]int, 0) 103 allNewCards := make([]int, 0)
99 for _, idCardholder := range req.Ids { 104 for _, idCardholder := range req.Ids {
100 confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] 105 confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)]
101 - newCards := DoOpen(req.GameID, 106 + newCards := DoOpen(gameId,
102 player, config, 107 player, config,
103 confCardholder, 108 confCardholder,
104 sequenceId, cohort, 109 sequenceId, cohort,
@@ -110,7 +115,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH @@ -110,7 +115,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
110 } 115 }
111 rsp.NewCards = append(rsp.NewCards, newCards) 116 rsp.NewCards = append(rsp.NewCards, newCards)
112 } 117 }
113 - awardAlbum, awardRound := DoOpenCheckAward(req.GameID, 118 + awardAlbum, awardRound := DoOpenCheckAward(gameId,
114 player, config, 119 player, config,
115 sequenceId, cohort, 120 sequenceId, cohort,
116 allNewCards, 121 allNewCards,
@@ -122,7 +127,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH @@ -122,7 +127,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
122 CalculateStarCount(player, config) 127 CalculateStarCount(player, config)
123 128
124 // 存档 129 // 存档
125 - SavePlayer(req.GameID, player) 130 + SavePlayer(gameId, player)
126 131
127 // 返回信息 132 // 返回信息
128 rsp.CardHolderInfo = GetInfo(player, config) 133 rsp.CardHolderInfo = GetInfo(player, config)
@@ -137,9 +142,11 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model @@ -137,9 +142,11 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
137 AwardAlbum: make(map[int]string), 142 AwardAlbum: make(map[int]string),
138 } 143 }
139 code = code_msg.RECODE_OK 144 code = code_msg.RECODE_OK
  145 + gameId := req.GameID
  146 + playerUid := req.UID
140 147
141 // 尝试更新配置 148 // 尝试更新配置
142 - config, hasConfig := configs.GetCardActivityConfig(req.GameID) 149 + config, hasConfig := configs.GetCardActivityConfig(gameId)
143 if !hasConfig { 150 if !hasConfig {
144 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR 151 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
145 return 152 return
@@ -158,7 +165,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model @@ -158,7 +165,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
158 } 165 }
159 166
160 // 读取游戏数据 167 // 读取游戏数据
161 - player := LoadPlayer(req.GameID, req.UID, config) 168 + player := LoadPlayer(gameId, playerUid, config)
162 // 检查游戏数据 轮次等 169 // 检查游戏数据 轮次等
163 code = CheckGameData(player, config) 170 code = CheckGameData(player, config)
164 if code != code_msg.RECODE_OK { 171 if code != code_msg.RECODE_OK {
@@ -204,7 +211,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model @@ -204,7 +211,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
204 openMode := 1 211 openMode := 1
205 sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) 212 sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid)
206 for i := 0; i < cardholderCount; i++ { 213 for i := 0; i < cardholderCount; i++ {
207 - newCards := DoOpen(req.GameID, 214 + newCards := DoOpen(gameId,
208 player, config, 215 player, config,
209 confCardholder, 216 confCardholder,
210 sequenceId, cohort, 217 sequenceId, cohort,
@@ -213,7 +220,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model @@ -213,7 +220,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
213 rsp.NewCards = append(rsp.NewCards, i3) 220 rsp.NewCards = append(rsp.NewCards, i3)
214 } 221 }
215 } 222 }
216 - awardAlbum, awardRound := DoOpenCheckAward(req.GameID, 223 + awardAlbum, awardRound := DoOpenCheckAward(gameId,
217 player, config, 224 player, config,
218 sequenceId, cohort, 225 sequenceId, cohort,
219 rsp.NewCards, 226 rsp.NewCards,
@@ -225,7 +232,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model @@ -225,7 +232,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
225 CalculateStarCount(player, config) 232 CalculateStarCount(player, config)
226 233
227 // 存档 234 // 存档
228 - SavePlayer(req.GameID, player) 235 + SavePlayer(gameId, player)
229 236
230 utslice.Shuffle(rsp.NewCards) 237 utslice.Shuffle(rsp.NewCards)
231 238
@@ -243,9 +250,11 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m @@ -243,9 +250,11 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m
243 AutoExchangeHolder: make([]int, 0), 250 AutoExchangeHolder: make([]int, 0),
244 } 251 }
245 code = code_msg.RECODE_OK 252 code = code_msg.RECODE_OK
  253 + gameId := req.GameID
  254 + playerUid := req.UID
246 255
247 // 尝试更新配置 256 // 尝试更新配置
248 - config, hasConfig := configs.GetCardActivityConfig(req.GameID) 257 + config, hasConfig := configs.GetCardActivityConfig(gameId)
249 if !hasConfig { 258 if !hasConfig {
250 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR 259 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
251 return 260 return
@@ -258,7 +267,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m @@ -258,7 +267,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m
258 } 267 }
259 268
260 // 读取游戏数据 269 // 读取游戏数据
261 - player := LoadPlayer(req.GameID, req.UID, config) 270 + player := LoadPlayer(gameId, playerUid, config)
262 // 检查游戏数据 轮次等 271 // 检查游戏数据 轮次等
263 code = CheckGameData(player, config) 272 code = CheckGameData(player, config)
264 if code != code_msg.RECODE_OK { 273 if code != code_msg.RECODE_OK {
@@ -284,7 +293,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m @@ -284,7 +293,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m
284 player.Details.LastStarCount = 0 293 player.Details.LastStarCount = 0
285 player.Details.AutoExchangeHolder = make([]int, 0) 294 player.Details.AutoExchangeHolder = make([]int, 0)
286 // 存档 295 // 存档
287 - SavePlayer(req.GameID, player) 296 + SavePlayer(gameId, player)
288 297
289 utslice.Shuffle(rsp.NewCards) 298 utslice.Shuffle(rsp.NewCards)
290 299
service/cardholder/player.go
@@ -18,13 +18,13 @@ func SavePlayer(gameId string, d *DataCardHolder) { @@ -18,13 +18,13 @@ func SavePlayer(gameId string, d *DataCardHolder) {
18 } 18 }
19 } 19 }
20 20
21 -func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) {  
22 - d = NewDataCardHolder(uid) 21 +func _LoadPlayer(gameId string, playerUid int64) (d *DataCardHolder) {
  22 + d = NewDataCardHolder(playerUid)
23 has, err := svmysql.First(d, gameId) 23 has, err := svmysql.First(d, gameId)
24 if has { 24 if has {
25 d.Decode() 25 d.Decode()
26 } else { 26 } else {
27 - d.Init(uid) 27 + d.Init(playerUid)
28 err = svmysql.Create(d, gameId) 28 err = svmysql.Create(d, gameId)
29 if err != nil { 29 if err != nil {
30 lxalilog.Errors(err, "cardholder._LoadPlayer Create error", gameId, d.Uid, d.ActivityId) 30 lxalilog.Errors(err, "cardholder._LoadPlayer Create error", gameId, d.Uid, d.ActivityId)
@@ -35,9 +35,9 @@ func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) { @@ -35,9 +35,9 @@ func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) {
35 } 35 }
36 36
37 // LoadPlayer 获取数据 外部接口 37 // LoadPlayer 获取数据 外部接口
38 -func LoadPlayer(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) { 38 +func LoadPlayer(gameId string, playerUid int64, config *configs.CardActivityConfig) (d *DataCardHolder) {
39 configId := config.Id 39 configId := config.Id
40 - d = _LoadPlayer(gameId, uid) 40 + d = _LoadPlayer(gameId, playerUid)
41 // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 41 // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
42 if configId != 0 && 42 if configId != 0 &&
43 configId != d.ActivityId { 43 configId != d.ActivityId {
service/roomrank/handle.go
@@ -10,9 +10,10 @@ import ( @@ -10,9 +10,10 @@ import (
10 func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.RspRoomRankGetConfig) { 10 func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.RspRoomRankGetConfig) {
11 rsp = models.RspRoomRankGetConfig{} 11 rsp = models.RspRoomRankGetConfig{}
12 code = code_msg.RECODE_OK 12 code = code_msg.RECODE_OK
  13 + gameId := req.GameID
13 14
14 // 尝试更新配置 15 // 尝试更新配置
15 - config, _ := configs.GetRoomRankConfig(req.GameID) 16 + config, _ := configs.GetRoomRankConfig(gameId)
16 rsp.ActivityId = config.Id 17 rsp.ActivityId = config.Id
17 18
18 rsp.Config = config.Client 19 rsp.Config = config.Client
@@ -24,9 +25,11 @@ func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models. @@ -24,9 +25,11 @@ func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.
24 func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRankInfo) { 25 func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRankInfo) {
25 rsp = models.RspRoomRankInfo{} 26 rsp = models.RspRoomRankInfo{}
26 code = code_msg.RECODE_OK 27 code = code_msg.RECODE_OK
  28 + gameId := req.GameID
  29 + playerUid := req.UID
27 30
28 // 尝试更新配置 31 // 尝试更新配置
29 - config, hasConfig := configs.GetRoomRankConfig(req.GameID) 32 + config, hasConfig := configs.GetRoomRankConfig(gameId)
30 if !hasConfig { 33 if !hasConfig {
31 code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR 34 code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
32 return 35 return
@@ -41,7 +44,14 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan @@ -41,7 +44,14 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan
41 //} 44 //}
42 45
43 // 读取游戏数据 46 // 读取游戏数据
44 - player := LoadPlayer(req.GameID, req.UID, config) 47 + player := LoadPlayer(gameId, playerUid, config)
  48 +
  49 + // todo 检查是否有领取的结算奖励
  50 +
  51 + //hasRoom := player.RoomUid != 0
  52 + //if hasRoom {
  53 + // room, has := LoadRoom(gameId, player.RoomUid,)
  54 + //}
45 55
46 rsp.RoomRankInfo = GetInfo(player, config) 56 rsp.RoomRankInfo = GetInfo(player, config)
47 57
service/roomrank/player.go
@@ -19,12 +19,12 @@ func SavePlayer(gameId string, d *DataRoomRankPlayer) { @@ -19,12 +19,12 @@ func SavePlayer(gameId string, d *DataRoomRankPlayer) {
19 } 19 }
20 } 20 }
21 21
22 -func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) {  
23 - d = NewDataRoomRankPlayer(uid) 22 +func _LoadPlayer(gameId string, playerUid int64) (d *DataRoomRankPlayer) {
  23 + d = NewDataRoomRankPlayer(playerUid)
24 has, err := svmysql.First(d, gameId) 24 has, err := svmysql.First(d, gameId)
25 if has { 25 if has {
26 } else { 26 } else {
27 - d.Init(uid) 27 + d.Init(playerUid)
28 err = svmysql.Create(d, gameId) 28 err = svmysql.Create(d, gameId)
29 if err != nil { 29 if err != nil {
30 lxalilog.Errors(err, "roomrank._LoadPlayer Create error", gameId, d.Uid, d.ActivityId) 30 lxalilog.Errors(err, "roomrank._LoadPlayer Create error", gameId, d.Uid, d.ActivityId)
@@ -35,10 +35,10 @@ func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) { @@ -35,10 +35,10 @@ func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) {
35 } 35 }
36 36
37 // LoadPlayer 获取数据 外部接口 37 // LoadPlayer 获取数据 外部接口
38 -func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRankPlayer) { 38 +func LoadPlayer(gameId string, playerUid int64, config *configs.RoomRankConfig) (d *DataRoomRankPlayer) {
39 configId := config.Id 39 configId := config.Id
40 - d = _LoadPlayer(gameId, uid)  
41 - // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 40 + d = _LoadPlayer(gameId, playerUid)
  41 + // todo 这里要重写 这个活动根据玩家领奖来切换 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
42 if configId != 0 && 42 if configId != 0 &&
43 configId != d.ActivityId { 43 configId != d.ActivityId {
44 44
util/utmisc/goroutine.go 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +package utmisc
  2 +
  3 +import (
  4 + "fmt"
  5 + "runtime"
  6 +)
  7 +
  8 +// GetGoroutineID 获取携程ID
  9 +func GetGoroutineID() int {
  10 + var buf [64]byte
  11 + runtime.Stack(buf[:], false)
  12 + var id int
  13 + fmt.Sscanf(string(buf[:]), "goroutine %d", &id)
  14 + return id
  15 +}