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 33  
34 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 30 type RoomRankInfo struct {
31 31 SettleHas bool `form:"settle_has" json:"settle_has"` // 有结算内容未领取
32 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 35 Tops []RoomRankTopNode `form:"tops" json:"tops"` // 排行榜数据列表
35 36 }
36 37  
... ... @@ -47,3 +48,18 @@ type ReqRoomRankInfo struct {
47 48 type RspRoomRankInfo struct {
48 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 27 beego.Router(prefix+"/roomrank/getconfig", &controllers.RoomRankController{}, "post:GetConfig")
28 28 // 房间排行信息
29 29 beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info")
  30 + // 房间排行增加积分
  31 + beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore")
30 32  
31 33 beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo")
32 34 beego.ErrorController(&controllers.ErrorController{})
... ...
service/roomrank/handle.go
... ... @@ -46,12 +46,60 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan
46 46 code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
47 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 65 if req.PlayerLevel < config.OpenLevel {
51 66 code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR
52 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 104 player := LoadPlayer(gameId, playerUid)
57 105 player.Name = req.PlayerName
... ... @@ -66,9 +114,18 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan
66 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 124 room, hasRoom := TryGetRoom(gameId, player, config, playerLevel)
71 125  
  126 + // 房间排行增加积分
  127 + ChangePlayerScore(room, player, req.AddScore)
  128 +
72 129 if hasRoom {
73 130 TryReSort(room, config)
74 131  
... ... @@ -78,7 +135,5 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan
78 135  
79 136 rsp.RoomRankInfo = GetInfoFromRoom(player, room)
80 137  
81   - fmt.Println("dwjw🐸 len(room.Details.Players) 1:", len(room.Details.Players))
82   -
83 138 return
84 139 }
... ...
service/roomrank/logic.go
... ... @@ -53,3 +53,13 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi
53 53 }
54 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 89 Icon: p.Icon,
90 90 }
91 91 if player.Uid == p.Uid {
92   - info.RankSelf = rank
  92 + info.SelfRank = rank
  93 + info.SelfScore = p.Score
93 94 }
94 95 info.Tops = append(info.Tops, node)
95 96 }
... ...