Commit 5772f6eb4fc3f5cd1c970000eb5194315bf9416b
1 parent
b2de8add
Exists in
master
and in
1 other branch
feat✨:房间排行活动:增加积分接口
Showing
6 changed files
with
100 additions
and
4 deletions
Show diff stats
controllers/roomrank.go
| @@ -33,3 +33,15 @@ func (c *RoomRankController) Info() { | @@ -33,3 +33,15 @@ func (c *RoomRankController) Info() { | ||
| 33 | 33 | ||
| 34 | c.RetRspCodeData(code, rsp) | 34 | c.RetRspCodeData(code, rsp) |
| 35 | } | 35 | } |
| 36 | + | ||
| 37 | +// AddScore 房间排行增加积分 | ||
| 38 | +func (c *RoomRankController) AddScore() { | ||
| 39 | + req := new(models.ReqRoomRankAddScore) | ||
| 40 | + if !c.GetPostData(req) { | ||
| 41 | + return | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + code, rsp := roomrank.HandleAddScore(req) | ||
| 45 | + | ||
| 46 | + c.RetRspCodeData(code, rsp) | ||
| 47 | +} |
models/roomrank.go
| @@ -30,7 +30,8 @@ type RoomRankTopNode struct { | @@ -30,7 +30,8 @@ type RoomRankTopNode struct { | ||
| 30 | type RoomRankInfo struct { | 30 | type RoomRankInfo struct { |
| 31 | SettleHas bool `form:"settle_has" json:"settle_has"` // 有结算内容未领取 | 31 | SettleHas bool `form:"settle_has" json:"settle_has"` // 有结算内容未领取 |
| 32 | SettleAward string `form:"settle_award" json:"settle_award"` // 结算奖励内容 | 32 | SettleAward string `form:"settle_award" json:"settle_award"` // 结算奖励内容 |
| 33 | - RankSelf int `form:"rank_self" json:"rank_self"` // 自己排名 | 33 | + SelfRank int `form:"self_rank" json:"self_rank"` // 自己排名 |
| 34 | + SelfScore int64 `form:"self_score" json:"self_score"` // 自己积分 | ||
| 34 | Tops []RoomRankTopNode `form:"tops" json:"tops"` // 排行榜数据列表 | 35 | Tops []RoomRankTopNode `form:"tops" json:"tops"` // 排行榜数据列表 |
| 35 | } | 36 | } |
| 36 | 37 | ||
| @@ -47,3 +48,18 @@ type ReqRoomRankInfo struct { | @@ -47,3 +48,18 @@ type ReqRoomRankInfo struct { | ||
| 47 | type RspRoomRankInfo struct { | 48 | type RspRoomRankInfo struct { |
| 48 | RoomRankInfo | 49 | RoomRankInfo |
| 49 | } | 50 | } |
| 51 | + | ||
| 52 | +// ReqRoomRankAddScore 请求 房间排行增加积分 | ||
| 53 | +type ReqRoomRankAddScore struct { | ||
| 54 | + BaseLoginInfo | ||
| 55 | + BaseSign | ||
| 56 | + PlayerLevel int `form:"player_level" json:"player_level"` // 玩家等级 | ||
| 57 | + PlayerName string `form:"player_name" json:"player_name"` // 玩家名字 | ||
| 58 | + PlayerIcon string `form:"player_icon" json:"player_icon"` // 玩家头像 | ||
| 59 | + AddScore int64 `form:"add_score" json:"add_score"` // 增加积分 | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +// RspRoomRankAddScore 返回 房间排行增加积分 | ||
| 63 | +type RspRoomRankAddScore struct { | ||
| 64 | + RoomRankInfo | ||
| 65 | +} |
routers/router.go
| @@ -27,6 +27,8 @@ func init() { | @@ -27,6 +27,8 @@ func init() { | ||
| 27 | beego.Router(prefix+"/roomrank/getconfig", &controllers.RoomRankController{}, "post:GetConfig") | 27 | beego.Router(prefix+"/roomrank/getconfig", &controllers.RoomRankController{}, "post:GetConfig") |
| 28 | // 房间排行信息 | 28 | // 房间排行信息 |
| 29 | beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") | 29 | beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") |
| 30 | + // 房间排行增加积分 | ||
| 31 | + beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore") | ||
| 30 | 32 | ||
| 31 | beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") | 33 | beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") |
| 32 | beego.ErrorController(&controllers.ErrorController{}) | 34 | beego.ErrorController(&controllers.ErrorController{}) |
service/roomrank/handle.go
| @@ -46,12 +46,60 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | @@ -46,12 +46,60 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | ||
| 46 | code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR | 46 | code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR |
| 47 | return | 47 | return |
| 48 | } | 48 | } |
| 49 | + | ||
| 50 | + // 读取游戏数据 | ||
| 51 | + player := LoadPlayer(gameId, playerUid) | ||
| 52 | + player.Name = req.PlayerName | ||
| 53 | + player.Icon = req.PlayerIcon | ||
| 54 | + | ||
| 55 | + // 尝试判断结算 | ||
| 56 | + hasSettle := TrySettle(gameId, player, config) | ||
| 57 | + | ||
| 58 | + if hasSettle { | ||
| 59 | + SavePlayer(gameId, player) | ||
| 60 | + rsp.RoomRankInfo = GetInfoFromSettle(player, config) | ||
| 61 | + return | ||
| 62 | + } | ||
| 63 | + | ||
| 49 | // 判断玩家等级 | 64 | // 判断玩家等级 |
| 50 | if req.PlayerLevel < config.OpenLevel { | 65 | if req.PlayerLevel < config.OpenLevel { |
| 51 | code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR | 66 | code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR |
| 52 | return | 67 | return |
| 53 | } | 68 | } |
| 54 | 69 | ||
| 70 | + // 尝试加入房间 | ||
| 71 | + room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) | ||
| 72 | + | ||
| 73 | + if hasRoom { | ||
| 74 | + TryReSort(room, config) | ||
| 75 | + | ||
| 76 | + SavePlayer(gameId, player) | ||
| 77 | + SaveRoom(gameId, room) | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + rsp.RoomRankInfo = GetInfoFromRoom(player, room) | ||
| 81 | + | ||
| 82 | + fmt.Println("dwjw🐸 len(room.Details.Players) 1:", len(room.Details.Players)) | ||
| 83 | + | ||
| 84 | + return | ||
| 85 | +} | ||
| 86 | + | ||
| 87 | +// HandleAddScore 房间排行增加积分 | ||
| 88 | +func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.RspRoomRankAddScore) { | ||
| 89 | + rsp = models.RspRoomRankAddScore{} | ||
| 90 | + code = code_msg.RECODE_OK | ||
| 91 | + gameId := req.GameID | ||
| 92 | + playerUid := req.UID | ||
| 93 | + playerLevel := req.PlayerLevel | ||
| 94 | + | ||
| 95 | + // 尝试更新配置 | ||
| 96 | + config, hasConfig := confroomrank.GetCurrent(gameId) | ||
| 97 | + if !hasConfig { | ||
| 98 | + config = new(confroomrank.ActivityConfig) | ||
| 99 | + code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR | ||
| 100 | + return | ||
| 101 | + } | ||
| 102 | + | ||
| 55 | // 读取游戏数据 | 103 | // 读取游戏数据 |
| 56 | player := LoadPlayer(gameId, playerUid) | 104 | player := LoadPlayer(gameId, playerUid) |
| 57 | player.Name = req.PlayerName | 105 | player.Name = req.PlayerName |
| @@ -66,9 +114,18 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | @@ -66,9 +114,18 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | ||
| 66 | return | 114 | return |
| 67 | } | 115 | } |
| 68 | 116 | ||
| 117 | + // 判断玩家等级 | ||
| 118 | + if req.PlayerLevel < config.OpenLevel { | ||
| 119 | + code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR | ||
| 120 | + return | ||
| 121 | + } | ||
| 122 | + | ||
| 69 | // 尝试加入房间 | 123 | // 尝试加入房间 |
| 70 | room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) | 124 | room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) |
| 71 | 125 | ||
| 126 | + // 房间排行增加积分 | ||
| 127 | + ChangePlayerScore(room, player, req.AddScore) | ||
| 128 | + | ||
| 72 | if hasRoom { | 129 | if hasRoom { |
| 73 | TryReSort(room, config) | 130 | TryReSort(room, config) |
| 74 | 131 | ||
| @@ -78,7 +135,5 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | @@ -78,7 +135,5 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan | ||
| 78 | 135 | ||
| 79 | rsp.RoomRankInfo = GetInfoFromRoom(player, room) | 136 | rsp.RoomRankInfo = GetInfoFromRoom(player, room) |
| 80 | 137 | ||
| 81 | - fmt.Println("dwjw🐸 len(room.Details.Players) 1:", len(room.Details.Players)) | ||
| 82 | - | ||
| 83 | return | 138 | return |
| 84 | } | 139 | } |
service/roomrank/logic.go
| @@ -53,3 +53,13 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi | @@ -53,3 +53,13 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi | ||
| 53 | } | 53 | } |
| 54 | return | 54 | return |
| 55 | } | 55 | } |
| 56 | + | ||
| 57 | +// ChangePlayerScore 房间排行增加积分 | ||
| 58 | +func ChangePlayerScore(room *Room, player *Player, addScore int64) { | ||
| 59 | + for i := 0; i < len(room.Details.Players); i++ { | ||
| 60 | + p := room.Details.Players[i] | ||
| 61 | + if player.Uid == p.Uid { | ||
| 62 | + p.Score += addScore | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | +} |
service/roomrank/player.go
| @@ -89,7 +89,8 @@ func GetInfoFromRoom(player *Player, room *Room) models.RoomRankInfo { | @@ -89,7 +89,8 @@ func GetInfoFromRoom(player *Player, room *Room) models.RoomRankInfo { | ||
| 89 | Icon: p.Icon, | 89 | Icon: p.Icon, |
| 90 | } | 90 | } |
| 91 | if player.Uid == p.Uid { | 91 | if player.Uid == p.Uid { |
| 92 | - info.RankSelf = rank | 92 | + info.SelfRank = rank |
| 93 | + info.SelfScore = p.Score | ||
| 93 | } | 94 | } |
| 94 | info.Tops = append(info.Tops, node) | 95 | info.Tops = append(info.Tops, node) |
| 95 | } | 96 | } |