diff --git a/controllers/roomrank.go b/controllers/roomrank.go index d48b85e..28a3249 100644 --- a/controllers/roomrank.go +++ b/controllers/roomrank.go @@ -33,3 +33,15 @@ func (c *RoomRankController) Info() { c.RetRspCodeData(code, rsp) } + +// AddScore 房间排行增加积分 +func (c *RoomRankController) AddScore() { + req := new(models.ReqRoomRankAddScore) + if !c.GetPostData(req) { + return + } + + code, rsp := roomrank.HandleAddScore(req) + + c.RetRspCodeData(code, rsp) +} diff --git a/models/roomrank.go b/models/roomrank.go index f76e413..ecdb87b 100644 --- a/models/roomrank.go +++ b/models/roomrank.go @@ -30,7 +30,8 @@ type RoomRankTopNode struct { type RoomRankInfo struct { SettleHas bool `form:"settle_has" json:"settle_has"` // 有结算内容未领取 SettleAward string `form:"settle_award" json:"settle_award"` // 结算奖励内容 - RankSelf int `form:"rank_self" json:"rank_self"` // 自己排名 + SelfRank int `form:"self_rank" json:"self_rank"` // 自己排名 + SelfScore int64 `form:"self_score" json:"self_score"` // 自己积分 Tops []RoomRankTopNode `form:"tops" json:"tops"` // 排行榜数据列表 } @@ -47,3 +48,18 @@ type ReqRoomRankInfo struct { type RspRoomRankInfo struct { RoomRankInfo } + +// ReqRoomRankAddScore 请求 房间排行增加积分 +type ReqRoomRankAddScore 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"` // 玩家头像 + AddScore int64 `form:"add_score" json:"add_score"` // 增加积分 +} + +// RspRoomRankAddScore 返回 房间排行增加积分 +type RspRoomRankAddScore struct { + RoomRankInfo +} diff --git a/routers/router.go b/routers/router.go index 33c96e2..adae69f 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/addscore", &controllers.RoomRankController{}, "post:AddScore") beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") beego.ErrorController(&controllers.ErrorController{}) diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index 6b4b697..07438cc 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -46,12 +46,60 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR return } + + // 读取游戏数据 + player := LoadPlayer(gameId, playerUid) + player.Name = req.PlayerName + player.Icon = req.PlayerIcon + + // 尝试判断结算 + hasSettle := TrySettle(gameId, player, config) + + if hasSettle { + SavePlayer(gameId, player) + rsp.RoomRankInfo = GetInfoFromSettle(player, config) + return + } + // 判断玩家等级 if req.PlayerLevel < config.OpenLevel { code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR return } + // 尝试加入房间 + room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) + + if hasRoom { + TryReSort(room, config) + + SavePlayer(gameId, player) + SaveRoom(gameId, room) + } + + rsp.RoomRankInfo = GetInfoFromRoom(player, room) + + fmt.Println("dwjw🐸 len(room.Details.Players) 1:", len(room.Details.Players)) + + return +} + +// HandleAddScore 房间排行增加积分 +func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.RspRoomRankAddScore) { + rsp = models.RspRoomRankAddScore{} + code = code_msg.RECODE_OK + gameId := req.GameID + playerUid := req.UID + playerLevel := req.PlayerLevel + + // 尝试更新配置 + 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 @@ -66,9 +114,18 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan return } + // 判断玩家等级 + if req.PlayerLevel < config.OpenLevel { + code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR + return + } + // 尝试加入房间 room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) + // 房间排行增加积分 + ChangePlayerScore(room, player, req.AddScore) + if hasRoom { TryReSort(room, config) @@ -78,7 +135,5 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan rsp.RoomRankInfo = GetInfoFromRoom(player, room) - fmt.Println("dwjw🐸 len(room.Details.Players) 1:", len(room.Details.Players)) - return } diff --git a/service/roomrank/logic.go b/service/roomrank/logic.go index 2ce5534..1f08dbb 100644 --- a/service/roomrank/logic.go +++ b/service/roomrank/logic.go @@ -53,3 +53,13 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi } return } + +// ChangePlayerScore 房间排行增加积分 +func ChangePlayerScore(room *Room, player *Player, addScore int64) { + for i := 0; i < len(room.Details.Players); i++ { + p := room.Details.Players[i] + if player.Uid == p.Uid { + p.Score += addScore + } + } +} diff --git a/service/roomrank/player.go b/service/roomrank/player.go index 567b671..4bb26a2 100644 --- a/service/roomrank/player.go +++ b/service/roomrank/player.go @@ -89,7 +89,8 @@ func GetInfoFromRoom(player *Player, room *Room) models.RoomRankInfo { Icon: p.Icon, } if player.Uid == p.Uid { - info.RankSelf = rank + info.SelfRank = rank + info.SelfScore = p.Score } info.Tops = append(info.Tops, node) } -- libgit2 0.21.0