diff --git a/configs/confroomrank/config.go b/configs/confroomrank/config.go index 7ae77fc..428a0e7 100644 --- a/configs/confroomrank/config.go +++ b/configs/confroomrank/config.go @@ -23,7 +23,6 @@ type ActivityConfig struct { Robot map[int]RobotConfig // 机器人配置 Room map[int]RoomConfig // 房间配置 - Client *ActivityConfigClient GameId string // 所属游戏ID } @@ -55,6 +54,7 @@ func (c *ActivityConfig) ConfInfo(suffix string) *confbase.ConfInfo { // ActivityConfigRaw 房间排行活动配置 原始数据 type ActivityConfigRaw struct { Id int64 `gorm:"column:id;primaryKey"` // ID + Typ int // 排行榜类型 OpenLevel int // 开启等级 PreviewTime int64 // 预告时间 StartTime int64 // 开始时间 @@ -69,9 +69,33 @@ type ActivityConfigRaw struct { UpdateTime int64 // 修改时间戳 } +// GenerateConfigClient 生成给客户端的配置 +func (c *ActivityConfigRaw) GenerateConfigClient() *ActivityConfigClient { + configClient := &ActivityConfigClient{ + Id: c.Id, + Typ: c.Typ, + OpenLevel: c.OpenLevel, + PreviewTime: c.PreviewTime, + StartTime: c.StartTime, + EndTime: c.EndTime, + ReleaseTime: c.ReleaseTime, + Ver: c.Ver, + Status: c.Status, + } + return configClient +} + // ActivityConfigClient 房间排行活动配置 给客户端数据 type ActivityConfigClient struct { - Id int64 `form:"id" json:"id"` // ID + Id int64 `form:"id" json:"id"` // ID + Typ int `form:"typ" json:"typ"` // 排行榜类型 + OpenLevel int `form:"open_level" json:"open_level"` // 开启等级 + PreviewTime int64 `form:"preview_time" json:"preview_time"` // 预告时间 + StartTime int64 `form:"start_time" json:"start_time"` // 开始时间 + EndTime int64 `form:"end_time" json:"end_time"` // 结束时间 + ReleaseTime int64 `form:"release_time" json:"release_time"` // 结算发奖时间 + Ver string `form:"ver" json:"ver"` // 版本号 + Status int `form:"status" json:"status"` // 状态 0=关闭 1=开启 } // RobotConfig 机器人配置 diff --git a/configs/confroomrank/decode.go b/configs/confroomrank/decode.go index 9ad5cb5..ccb6df6 100644 --- a/configs/confroomrank/decode.go +++ b/configs/confroomrank/decode.go @@ -12,6 +12,7 @@ func (c *ActivityConfig) Decode(gameId string, rawData any) { c.Raw = raw c.Id = raw.Id + c.Typ = raw.Typ c.OpenLevel = raw.OpenLevel c.PreviewTime = raw.PreviewTime c.StartTime = raw.StartTime @@ -45,13 +46,4 @@ func (c *ActivityConfig) Decode(gameId string, rawData any) { c.Room[i2.Id] = i2 } } - c.GenerateConfigClient() -} - -// GenerateConfigClient 生成给客户端的配置 -func (c *ActivityConfig) GenerateConfigClient() { - configClient := &ActivityConfigClient{ - Id: c.Id, - } - c.Client = configClient } diff --git a/configs/confroomrank/get.go b/configs/confroomrank/get.go index d273106..acd89ca 100644 --- a/configs/confroomrank/get.go +++ b/configs/confroomrank/get.go @@ -1,6 +1,10 @@ package confroomrank -import "apigame/configs/confbase" +import ( + "apigame/configs/confbase" + "apigame/util/util-lx/lxalilog" + "apigame/util/util-lx/lxtime" +) // GetCurrent 获取 当前配置 func GetCurrent(gameId string, topType int) (conf *ActivityConfig, has bool) { @@ -18,3 +22,19 @@ func GetConfig(gameId string, confId int64) (conf *ActivityConfig, has bool) { return } + +// GetCurrentConfigs 获取当前配置列表 +func GetCurrentConfigs(gameId string) []*ActivityConfigRaw { + obj := new(ActivityConfig) + info := obj.ConfInfo(gameId) + db := info.DbMysql + timeNow := lxtime.NowUninx() + objs := make([]*ActivityConfigRaw, 0) + result := db.Table(info.TableName).Where( + "status = ? AND start_time <= ? AND end_time >= ?", + 1, timeNow, timeNow).Find(&objs) + if result.Error != nil { + lxalilog.Errors(result.Error, "confroomrank.GetCurrentConfigs error", gameId) + } + return objs +} diff --git a/models/roomrank.go b/models/roomrank.go index 4886ae4..93cdb41 100644 --- a/models/roomrank.go +++ b/models/roomrank.go @@ -8,13 +8,7 @@ type ReqRoomRankGetConfig struct { // RspRoomRankGetConfig 返回 活动配置 type RspRoomRankGetConfig struct { - ActivityId int64 `form:"activity_id" json:"activity_id"` // 活动配置 0=无活动 - PrepareTime int64 `form:"prepare_time" json:"prepare_time"` // 活动预告时间 - StartTime int64 `form:"start_time" json:"start_time"` // 活动开始时间 - EndTime int64 `form:"end_time" json:"end_time"` // 活动结束时间 - ReleaseTime int64 `form:"release_time" json:"release_time"` // 结算发奖时间 - OpenLevel int `form:"open_level" json:"open_level"` // 开启等级 - Config any `form:"config" json:"config"` // 活动配置对象 + Config []any `form:"config" json:"config"` // 活动配置列表 } // RoomRankTopNode 排行玩家 diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index 6952aed..821a0a8 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -14,20 +14,10 @@ func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models. gameId := req.GameID // 尝试更新配置 - config, hasConfig := confroomrank.GetCurrent(gameId, 1) - if !hasConfig { - code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR - return + configs := confroomrank.GetCurrentConfigs(gameId) + for _, config := range configs { + rsp.Config = append(rsp.Config, config.GenerateConfigClient()) } - rsp.ActivityId = config.Id - rsp.PrepareTime = config.PreviewTime - rsp.StartTime = config.StartTime - rsp.EndTime = config.EndTime - rsp.ReleaseTime = config.ReleaseTime - rsp.OpenLevel = config.OpenLevel - - rsp.Config = config.Client - return } -- libgit2 0.21.0