Commit 5772f6eb4fc3f5cd1c970000eb5194315bf9416b

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

feat✨:房间排行活动:增加积分接口

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 }