diff --git a/controllers/roomrank.go b/controllers/roomrank.go index 28a3249..9e7f518 100644 --- a/controllers/roomrank.go +++ b/controllers/roomrank.go @@ -34,6 +34,18 @@ func (c *RoomRankController) Info() { c.RetRspCodeData(code, rsp) } +// GetSettleAward 领取上期结算奖励 +func (c *RoomRankController) GetSettleAward() { + req := new(models.ReqRoomRankGetSettleAward) + if !c.GetPostData(req) { + return + } + + code, rsp := roomrank.HandleGetSettleAward(req) + + c.RetRspCodeData(code, rsp) +} + // AddScore 房间排行增加积分 func (c *RoomRankController) AddScore() { req := new(models.ReqRoomRankAddScore) diff --git a/models/roomrank.go b/models/roomrank.go index ecdb87b..bc95448 100644 --- a/models/roomrank.go +++ b/models/roomrank.go @@ -49,6 +49,20 @@ type RspRoomRankInfo struct { RoomRankInfo } +// ReqRoomRankGetSettleAward 请求 领取上期结算奖励 +type ReqRoomRankGetSettleAward struct { + BaseLoginInfo + BaseSign + PlayerLevel int `form:"player_level" json:"player_level"` // 玩家等级 + PlayerName string `form:"player_name" json:"player_name"` // 玩家名字 + PlayerIcon string `form:"player_icon" json:"player_icon"` // 玩家头像 +} + +// RspRoomRankGetSettleAward 返回 领取上期结算奖励 +type RspRoomRankGetSettleAward struct { + AwardText string `form:"award_text" json:"award_text"` // 上期结算奖励内容 +} + // ReqRoomRankAddScore 请求 房间排行增加积分 type ReqRoomRankAddScore struct { BaseLoginInfo diff --git a/routers/router.go b/routers/router.go index adae69f..8ddab8f 100644 --- a/routers/router.go +++ b/routers/router.go @@ -27,6 +27,8 @@ func init() { beego.Router(prefix+"/roomrank/getconfig", &controllers.RoomRankController{}, "post:GetConfig") // 房间排行信息 beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") + // 领取上期结算奖励 + beego.Router(prefix+"/roomrank/getsettleaward", &controllers.RoomRankController{}, "post:GetSettleAward") // 房间排行增加积分 beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore") diff --git a/service/code-msg/code-msg.go b/service/code-msg/code-msg.go index bdf1164..0c182ce 100644 --- a/service/code-msg/code-msg.go +++ b/service/code-msg/code-msg.go @@ -49,8 +49,10 @@ const ( RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR = "2106" RECODE_MERGE_CARDHOLDER_NOAUTOEXCHANGEINFO_ERROR = "2107" - RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR = "2200" - RECODE_MERGE_ROOMRANK_LEVEL_ERROR = "2201" + RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR = "2200" + RECODE_MERGE_ROOMRANK_LEVEL_ERROR = "2201" + RECODE_MERGE_ROOMRANK_HASSETTLE_ERROR = "2202" + RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR = "2203" ) var recodeText = map[string]string{ @@ -100,8 +102,10 @@ var recodeText = map[string]string{ RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR: "星星商店星星不足", RECODE_MERGE_CARDHOLDER_NOAUTOEXCHANGEINFO_ERROR: "没有星星商店自动兑换信息", - RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR: "活动未开放", - RECODE_MERGE_ROOMRANK_LEVEL_ERROR: "参与等级不足", + RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR: "活动未开放", + RECODE_MERGE_ROOMRANK_LEVEL_ERROR: "参与等级不足", + RECODE_MERGE_ROOMRANK_HASSETTLE_ERROR: "还有未领取的结算奖励", + RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR: "没有未领取的结算奖励", } func RecodeText(code string) string { diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index 07438cc..cbc65d8 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -53,10 +53,12 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan player.Icon = req.PlayerIcon // 尝试判断结算 - hasSettle := TrySettle(gameId, player, config) + hasSettleChange := TrySettle(gameId, player, config) - if hasSettle { + if hasSettleChange { SavePlayer(gameId, player) + } + if player.SettleHas { rsp.RoomRankInfo = GetInfoFromSettle(player, config) return } @@ -84,6 +86,42 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan return } +// HandleGetSettleAward 领取上期结算奖励 +func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, rsp models.RspRoomRankGetSettleAward) { + rsp = models.RspRoomRankGetSettleAward{} + code = code_msg.RECODE_OK + gameId := req.GameID + playerUid := req.UID + + // 尝试更新配置 + config, hasConfig := confroomrank.GetCurrent(gameId) + if !hasConfig { + config = new(confroomrank.ActivityConfig) + code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR + return + } + + // 读取游戏数据 + player := LoadPlayer(gameId, playerUid) + player.Name = req.PlayerName + player.Icon = req.PlayerIcon + + // 尝试判断结算 + _ = TrySettle(gameId, player, config) + if !player.SettleHas { + code = code_msg.RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR + return + } + + // 领取奖励 + rsp.AwardText = player.SettleAward + player.SettleHas = false + player.SettleAward = "" + SavePlayer(gameId, player) + + return +} + // HandleAddScore 房间排行增加积分 func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.RspRoomRankAddScore) { rsp = models.RspRoomRankAddScore{} @@ -106,11 +144,13 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs player.Icon = req.PlayerIcon // 尝试判断结算 - hasSettle := TrySettle(gameId, player, config) - - if hasSettle { + hasSettleChange := TrySettle(gameId, player, config) + if hasSettleChange { SavePlayer(gameId, player) + } + if player.SettleHas { rsp.RoomRankInfo = GetInfoFromSettle(player, config) + code = code_msg.RECODE_MERGE_ROOMRANK_HASSETTLE_ERROR return } -- libgit2 0.21.0