Commit 3dd95caa9eb3bf8ca51e1b8bd4d4422a5f1f444d

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

feat✨:房间排行榜改为支持多个排行榜

configs/confroomrank/config.go
... ... @@ -23,7 +23,6 @@ type ActivityConfig struct {
23 23 Robot map[int]RobotConfig // 机器人配置
24 24 Room map[int]RoomConfig // 房间配置
25 25  
26   - Client *ActivityConfigClient
27 26 GameId string // 所属游戏ID
28 27 }
29 28  
... ... @@ -55,6 +54,7 @@ func (c *ActivityConfig) ConfInfo(suffix string) *confbase.ConfInfo {
55 54 // ActivityConfigRaw 房间排行活动配置 原始数据
56 55 type ActivityConfigRaw struct {
57 56 Id int64 `gorm:"column:id;primaryKey"` // ID
  57 + Typ int // 排行榜类型
58 58 OpenLevel int // 开启等级
59 59 PreviewTime int64 // 预告时间
60 60 StartTime int64 // 开始时间
... ... @@ -69,9 +69,33 @@ type ActivityConfigRaw struct {
69 69 UpdateTime int64 // 修改时间戳
70 70 }
71 71  
  72 +// GenerateConfigClient 生成给客户端的配置
  73 +func (c *ActivityConfigRaw) GenerateConfigClient() *ActivityConfigClient {
  74 + configClient := &ActivityConfigClient{
  75 + Id: c.Id,
  76 + Typ: c.Typ,
  77 + OpenLevel: c.OpenLevel,
  78 + PreviewTime: c.PreviewTime,
  79 + StartTime: c.StartTime,
  80 + EndTime: c.EndTime,
  81 + ReleaseTime: c.ReleaseTime,
  82 + Ver: c.Ver,
  83 + Status: c.Status,
  84 + }
  85 + return configClient
  86 +}
  87 +
72 88 // ActivityConfigClient 房间排行活动配置 给客户端数据
73 89 type ActivityConfigClient struct {
74   - Id int64 `form:"id" json:"id"` // ID
  90 + Id int64 `form:"id" json:"id"` // ID
  91 + Typ int `form:"typ" json:"typ"` // 排行榜类型
  92 + OpenLevel int `form:"open_level" json:"open_level"` // 开启等级
  93 + PreviewTime int64 `form:"preview_time" json:"preview_time"` // 预告时间
  94 + StartTime int64 `form:"start_time" json:"start_time"` // 开始时间
  95 + EndTime int64 `form:"end_time" json:"end_time"` // 结束时间
  96 + ReleaseTime int64 `form:"release_time" json:"release_time"` // 结算发奖时间
  97 + Ver string `form:"ver" json:"ver"` // 版本号
  98 + Status int `form:"status" json:"status"` // 状态 0=关闭 1=开启
75 99 }
76 100  
77 101 // RobotConfig 机器人配置
... ...
configs/confroomrank/decode.go
... ... @@ -12,6 +12,7 @@ func (c *ActivityConfig) Decode(gameId string, rawData any) {
12 12 c.Raw = raw
13 13  
14 14 c.Id = raw.Id
  15 + c.Typ = raw.Typ
15 16 c.OpenLevel = raw.OpenLevel
16 17 c.PreviewTime = raw.PreviewTime
17 18 c.StartTime = raw.StartTime
... ... @@ -45,13 +46,4 @@ func (c *ActivityConfig) Decode(gameId string, rawData any) {
45 46 c.Room[i2.Id] = i2
46 47 }
47 48 }
48   - c.GenerateConfigClient()
49   -}
50   -
51   -// GenerateConfigClient 生成给客户端的配置
52   -func (c *ActivityConfig) GenerateConfigClient() {
53   - configClient := &ActivityConfigClient{
54   - Id: c.Id,
55   - }
56   - c.Client = configClient
57 49 }
... ...
configs/confroomrank/get.go
1 1 package confroomrank
2 2  
3   -import "apigame/configs/confbase"
  3 +import (
  4 + "apigame/configs/confbase"
  5 + "apigame/util/util-lx/lxalilog"
  6 + "apigame/util/util-lx/lxtime"
  7 +)
4 8  
5 9 // GetCurrent 获取 当前配置
6 10 func GetCurrent(gameId string, topType int) (conf *ActivityConfig, has bool) {
... ... @@ -18,3 +22,19 @@ func GetConfig(gameId string, confId int64) (conf *ActivityConfig, has bool) {
18 22  
19 23 return
20 24 }
  25 +
  26 +// GetCurrentConfigs 获取当前配置列表
  27 +func GetCurrentConfigs(gameId string) []*ActivityConfigRaw {
  28 + obj := new(ActivityConfig)
  29 + info := obj.ConfInfo(gameId)
  30 + db := info.DbMysql
  31 + timeNow := lxtime.NowUninx()
  32 + objs := make([]*ActivityConfigRaw, 0)
  33 + result := db.Table(info.TableName).Where(
  34 + "status = ? AND start_time <= ? AND end_time >= ?",
  35 + 1, timeNow, timeNow).Find(&objs)
  36 + if result.Error != nil {
  37 + lxalilog.Errors(result.Error, "confroomrank.GetCurrentConfigs error", gameId)
  38 + }
  39 + return objs
  40 +}
... ...
models/roomrank.go
... ... @@ -8,13 +8,7 @@ type ReqRoomRankGetConfig struct {
8 8  
9 9 // RspRoomRankGetConfig 返回 活动配置
10 10 type RspRoomRankGetConfig struct {
11   - ActivityId int64 `form:"activity_id" json:"activity_id"` // 活动配置 0=无活动
12   - PrepareTime int64 `form:"prepare_time" json:"prepare_time"` // 活动预告时间
13   - StartTime int64 `form:"start_time" json:"start_time"` // 活动开始时间
14   - EndTime int64 `form:"end_time" json:"end_time"` // 活动结束时间
15   - ReleaseTime int64 `form:"release_time" json:"release_time"` // 结算发奖时间
16   - OpenLevel int `form:"open_level" json:"open_level"` // 开启等级
17   - Config any `form:"config" json:"config"` // 活动配置对象
  11 + Config []any `form:"config" json:"config"` // 活动配置列表
18 12 }
19 13  
20 14 // RoomRankTopNode 排行玩家
... ...
service/roomrank/handle.go
... ... @@ -14,20 +14,10 @@ func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.
14 14 gameId := req.GameID
15 15  
16 16 // 尝试更新配置
17   - config, hasConfig := confroomrank.GetCurrent(gameId, 1)
18   - if !hasConfig {
19   - code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
20   - return
  17 + configs := confroomrank.GetCurrentConfigs(gameId)
  18 + for _, config := range configs {
  19 + rsp.Config = append(rsp.Config, config.GenerateConfigClient())
21 20 }
22   - rsp.ActivityId = config.Id
23   - rsp.PrepareTime = config.PreviewTime
24   - rsp.StartTime = config.StartTime
25   - rsp.EndTime = config.EndTime
26   - rsp.ReleaseTime = config.ReleaseTime
27   - rsp.OpenLevel = config.OpenLevel
28   -
29   - rsp.Config = config.Client
30   -
31 21 return
32 22 }
33 23  
... ...