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 14  
15 15 // RoomRankInfo 房间排行信息
16 16 type RoomRankInfo struct {
  17 + RoomUid int64 `form:"room_uid" json:"room_uid"` // 房间唯一ID
17 18 }
18 19  
19 20 // ReqRoomRankInfo 请求 房间排行信息
... ...
service/cardholder/handle.go
... ... @@ -14,9 +14,10 @@ import (
14 14 func HandleGetConfig(req *models.ReqCardHolderGetConfig) (code string, rsp models.RspCardHolderGetConfig) {
15 15 rsp = models.RspCardHolderGetConfig{}
16 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 21 rsp.ActivityId = config.Id
21 22 rsp.PrepareTime = config.PreviewTime
22 23 rsp.StartTime = config.StartTime
... ... @@ -32,9 +33,11 @@ func HandleGetConfig(req *models.ReqCardHolderGetConfig) (code string, rsp model
32 33 func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardHolderInfo) {
33 34 rsp = models.RspCardHolderInfo{}
34 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 41 if !hasConfig {
39 42 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
40 43 return
... ... @@ -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 56 rsp.CardHolderInfo = GetInfo(player, config)
54 57  
... ... @@ -62,9 +65,11 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
62 65 AwardAlbum: make(map[int]string),
63 66 }
64 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 73 if !hasConfig {
69 74 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
70 75 return
... ... @@ -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 95 code = CheckGameData(player, config)
91 96 if code != code_msg.RECODE_OK {
... ... @@ -98,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
98 103 allNewCards := make([]int, 0)
99 104 for _, idCardholder := range req.Ids {
100 105 confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)]
101   - newCards := DoOpen(req.GameID,
  106 + newCards := DoOpen(gameId,
102 107 player, config,
103 108 confCardholder,
104 109 sequenceId, cohort,
... ... @@ -110,7 +115,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
110 115 }
111 116 rsp.NewCards = append(rsp.NewCards, newCards)
112 117 }
113   - awardAlbum, awardRound := DoOpenCheckAward(req.GameID,
  118 + awardAlbum, awardRound := DoOpenCheckAward(gameId,
114 119 player, config,
115 120 sequenceId, cohort,
116 121 allNewCards,
... ... @@ -122,7 +127,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
122 127 CalculateStarCount(player, config)
123 128  
124 129 // 存档
125   - SavePlayer(req.GameID, player)
  130 + SavePlayer(gameId, player)
126 131  
127 132 // 返回信息
128 133 rsp.CardHolderInfo = GetInfo(player, config)
... ... @@ -137,9 +142,11 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
137 142 AwardAlbum: make(map[int]string),
138 143 }
139 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 150 if !hasConfig {
144 151 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
145 152 return
... ... @@ -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 170 code = CheckGameData(player, config)
164 171 if code != code_msg.RECODE_OK {
... ... @@ -204,7 +211,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
204 211 openMode := 1
205 212 sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid)
206 213 for i := 0; i < cardholderCount; i++ {
207   - newCards := DoOpen(req.GameID,
  214 + newCards := DoOpen(gameId,
208 215 player, config,
209 216 confCardholder,
210 217 sequenceId, cohort,
... ... @@ -213,7 +220,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
213 220 rsp.NewCards = append(rsp.NewCards, i3)
214 221 }
215 222 }
216   - awardAlbum, awardRound := DoOpenCheckAward(req.GameID,
  223 + awardAlbum, awardRound := DoOpenCheckAward(gameId,
217 224 player, config,
218 225 sequenceId, cohort,
219 226 rsp.NewCards,
... ... @@ -225,7 +232,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
225 232 CalculateStarCount(player, config)
226 233  
227 234 // 存档
228   - SavePlayer(req.GameID, player)
  235 + SavePlayer(gameId, player)
229 236  
230 237 utslice.Shuffle(rsp.NewCards)
231 238  
... ... @@ -243,9 +250,11 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m
243 250 AutoExchangeHolder: make([]int, 0),
244 251 }
245 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 258 if !hasConfig {
250 259 code = code_msg.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR
251 260 return
... ... @@ -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 272 code = CheckGameData(player, config)
264 273 if code != code_msg.RECODE_OK {
... ... @@ -284,7 +293,7 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m
284 293 player.Details.LastStarCount = 0
285 294 player.Details.AutoExchangeHolder = make([]int, 0)
286 295 // 存档
287   - SavePlayer(req.GameID, player)
  296 + SavePlayer(gameId, player)
288 297  
289 298 utslice.Shuffle(rsp.NewCards)
290 299  
... ...
service/cardholder/player.go
... ... @@ -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 23 has, err := svmysql.First(d, gameId)
24 24 if has {
25 25 d.Decode()
26 26 } else {
27   - d.Init(uid)
  27 + d.Init(playerUid)
28 28 err = svmysql.Create(d, gameId)
29 29 if err != nil {
30 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 35 }
36 36  
37 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 39 configId := config.Id
40   - d = _LoadPlayer(gameId, uid)
  40 + d = _LoadPlayer(gameId, playerUid)
41 41 // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
42 42 if configId != 0 &&
43 43 configId != d.ActivityId {
... ...
service/roomrank/handle.go
... ... @@ -10,9 +10,10 @@ import (
10 10 func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.RspRoomRankGetConfig) {
11 11 rsp = models.RspRoomRankGetConfig{}
12 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 17 rsp.ActivityId = config.Id
17 18  
18 19 rsp.Config = config.Client
... ... @@ -24,9 +25,11 @@ func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.
24 25 func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRankInfo) {
25 26 rsp = models.RspRoomRankInfo{}
26 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 33 if !hasConfig {
31 34 code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
32 35 return
... ... @@ -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 56 rsp.RoomRankInfo = GetInfo(player, config)
47 57  
... ...
service/roomrank/player.go
... ... @@ -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 24 has, err := svmysql.First(d, gameId)
25 25 if has {
26 26 } else {
27   - d.Init(uid)
  27 + d.Init(playerUid)
28 28 err = svmysql.Create(d, gameId)
29 29 if err != nil {
30 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 35 }
36 36  
37 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 39 configId := config.Id
40   - d = _LoadPlayer(gameId, uid)
41   - // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
  40 + d = _LoadPlayer(gameId, playerUid)
  41 + // todo 这里要重写 这个活动根据玩家领奖来切换 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
42 42 if configId != 0 &&
43 43 configId != d.ActivityId {
44 44  
... ...
util/utmisc/goroutine.go 0 → 100644
... ... @@ -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 +}
... ...