From 95c75dc48d142518a8acf9718bc62c59e33e3cd3 Mon Sep 17 00:00:00 2001 From: 王家文 Date: Sun, 7 Apr 2024 10:46:27 +0800 Subject: [PATCH] feat:解析配置数据 --- api-util/umysql/index.go | 19 +++++++++++++++++++ models/ht-cardholder.go | 7 ++++--- service/ht-cardholder/config-registry.go | 19 +++++-------------- service/ht-cardholder/config.go | 40 ++++++++++++++++++++++++---------------- service/ht-cardholder/configs.go | 65 ++++++++++++++++++++++++----------------------------------------- 5 files changed, 76 insertions(+), 74 deletions(-) diff --git a/api-util/umysql/index.go b/api-util/umysql/index.go index 82b022c..7f7d7b0 100644 --- a/api-util/umysql/index.go +++ b/api-util/umysql/index.go @@ -34,3 +34,22 @@ func FindOneSql(dbName string, sql string, result any) (err error) { } return } + +// +//// Find 查询数据 +//func Find(dbName string, tableName string, result any) (err error) { +// o := orm.NewOrm() +// o.Using(dbName) +// +// // 也可以直接使用对象作为表名 +// qs := o.QueryTable(tableName) +// +// if _, err = qs.All(result); err != nil { +// if strings.Contains(err.Error(), "doesn't exist") { +// err = nil +// return +// } +// return +// } +// return +//} diff --git a/models/ht-cardholder.go b/models/ht-cardholder.go index bc39d70..9d45ce9 100644 --- a/models/ht-cardholder.go +++ b/models/ht-cardholder.go @@ -5,11 +5,13 @@ import ( "github.com/astaxie/beego/orm" ) +// HtCardHolderData 卡牌活动持久数据 type HtCardHolderData struct { - Uid int64 `orm:"pk"` + Uid int64 `orm:"pk"` // 玩家唯一ID + ActivityId int64 // 活动ID } -func (u *HtCardHolderData) TableName() string { +func (d *HtCardHolderData) TableName() string { return constd.MYSQL_TABLE_S_CARD_DATA + constd.GAME_ID_HT } @@ -20,5 +22,4 @@ func InitHtCardholder() { // create table orm.RunSyncdb("default", false, true) - } diff --git a/service/ht-cardholder/config-registry.go b/service/ht-cardholder/config-registry.go index 3620f8b..d7aa53e 100644 --- a/service/ht-cardholder/config-registry.go +++ b/service/ht-cardholder/config-registry.go @@ -8,26 +8,17 @@ import ( ) var ( - configTable = constd.MYSQL_TABLE_S_CARD_ACTIVITY + constd.GAME_ID_HT - Registry RegistryConfigs // 卡牌活动配置 - - CardConfigs = make(map[int]CardConfig) // 卡牌表 - CardholderConfigs = make(map[int]CardholderConfig) // 卡包开卡规则表 - NormalCardStarSequences = make([]NormalCardStarSequence, 0) // 非保底卡星级ID - CardSequenceConfigs = make([]CardSequenceConfig, 0) // 星级ID对应的卡片 + Registry RegistryConfigs // 卡牌活动配置 ) // RegistryConfigs 卡牌活动配置 type RegistryConfigs struct { - CardActivityConfigRaws map[int64]CardActivityConfigRaw // 活动配置列表 原始数据 - CardActivityConfig map[int64]CardActivityConfig // 活动配置列表 分析后数据 + ConfigRaws CardActivityConfigRaw // 活动配置 原始数据 + Config CardActivityConfig // 活动配置 分析后数据 } func NewRegistryConfigs() { - Registry = RegistryConfigs{ - CardActivityConfigRaws: make(map[int64]CardActivityConfigRaw), - CardActivityConfig: make(map[int64]CardActivityConfig), - } + Registry = RegistryConfigs{} } // Decode 解析配置原始数据 @@ -111,7 +102,7 @@ func (r RegistryConfigs) Decode(confRaw CardActivityConfigRaw) { } } - r.CardActivityConfig[conf.Id] = conf + r.Config = conf logs.Debug(conf.Awards) logs.Debug(conf.AlbumConfig) logs.Debug(conf.CardConfig) diff --git a/service/ht-cardholder/config.go b/service/ht-cardholder/config.go index 5affcbc..f133d6c 100644 --- a/service/ht-cardholder/config.go +++ b/service/ht-cardholder/config.go @@ -1,9 +1,12 @@ package ht_cardholder +import "apigame/service/constd" + // CardActivityUpdateConfig 卡牌活动更新配置 type CardActivityUpdateConfig struct { - Id int64 `json:"id"` // ID - UpdateTime int64 `json:"update_time"` // 修改时间戳 + Id int64 // ID + Status int // 状态 0=关闭 1=开启 + UpdateTime int64 // 修改时间戳 } // CardActivityConfig 卡牌活动配置 分析后数据 @@ -18,22 +21,27 @@ type CardActivityConfig struct { CardSequenceConfig []CardSequenceConfig // 卡片星级对应卡牌配置 } +func (c *CardActivityConfig) TableName() string { + return constd.MYSQL_TABLE_S_CARD_ACTIVITY + constd.GAME_ID_HT +} + // CardActivityConfigRaw 卡牌活动配置 原始数据 type CardActivityConfigRaw struct { - Id int64 `json:"id"` // ID - OpenLevel int `json:"open_level"` // 开启等级 - PreviewTime int64 `json:"preview_time"` // 预告时间 - StartTime int64 `json:"start_time"` // 开始时间 - EndTime int64 `json:"end_time"` // 结束时间 - Round int `json:"round"` // 轮数 - Awards string `json:"awards"` // 奖励配置 - AlbumConfig string `json:"album_config"` // 卡组配置 - CardConfig string `json:"card_config"` // 卡牌配置 - CardHolderConfig string `json:"card_holder_config"` // 卡包开卡规则 - NormalCardStarSequence string `json:"normal_card_star_sequence"` // 卡片星级配置 - CardSequenceConfig string `json:"card_sequence_config"` // 卡片星级对应卡牌配置 - Ver string `json:"ver"` // 版本号 - UpdateTime int64 `json:"update_time"` // 修改时间戳 + Id int64 // ID + OpenLevel int // 开启等级 + PreviewTime int64 // 预告时间 + StartTime int64 // 开始时间 + EndTime int64 // 结束时间 + Round int // 轮数 + Awards string // 奖励配置 + AlbumConfig string // 卡组配置 + CardConfig string // 卡牌配置 + CardHolderConfig string // 卡包开卡规则 + NormalCardStarSequence string // 卡片星级配置 + CardSequenceConfig string // 卡片星级对应卡牌配置 + Ver string // 版本号 + Status int // 状态 0=关闭 1=开启 + UpdateTime int64 // 修改时间戳 } // AlbumConfig 卡组表 diff --git a/service/ht-cardholder/configs.go b/service/ht-cardholder/configs.go index 7203e4c..3f85694 100644 --- a/service/ht-cardholder/configs.go +++ b/service/ht-cardholder/configs.go @@ -25,62 +25,45 @@ func TryUpdateConfigs() { // LoadConfigs 读取mysql配置 func LoadConfigs() { - // 读取最后修改时间 - configsUpdate := make(map[int64]CardActivityUpdateConfig) + configTableName := new(CardActivityConfig).TableName() + // 找到当前开放的活动 + configOpen := CardActivityUpdateConfig{Id: 0} { conf := make([]CardActivityUpdateConfig, 0) - sql := fmt.Sprintf("select id,update_time from %s", configTable) + sql := fmt.Sprintf("select id,status,update_time from %s", configTableName) err := umysql.FindSql(constd.MYSQL_MERGECONFIG, sql, &conf) if err != nil { lxalilog.Errors(err, sql, constd.GAME_ID_HT) return } for _, config := range conf { - configsUpdate[config.Id] = config + if config.Status != 0 { + configOpen = config + continue + } } - fmt.Println(configsUpdate) + fmt.Println(configOpen) } - // 如果条目不存在 从活动列表中删除 - for k, _ := range Registry.CardActivityConfigRaws { - _, ok := configsUpdate[k] - if !ok { - delete(Registry.CardActivityConfigRaws, k) - delete(Registry.CardActivityConfig, k) - } + // 没有开放的活动 + if configOpen.Id == 0 { + return } - for k, confUpdate := range configsUpdate { - needUpdate := false - confOld, ok := Registry.CardActivityConfigRaws[k] - // 如果条目不存在 或者 修改时间不一致 需要更新 - if !ok { - needUpdate = true - } else { - if confOld.UpdateTime != confUpdate.UpdateTime { - needUpdate = true - } - } - // 更新数据 - if needUpdate { - logs.Debug("__________________尝试更新活动条目ID:", k) - confNew := CardActivityConfigRaw{} - sql := fmt.Sprintf("select * from %s where id=%d limit 1", configTable, k) - err := umysql.FindOneSql(constd.MYSQL_MERGECONFIG, sql, &confNew) - if err != nil { - lxalilog.Errors(err, sql, constd.GAME_ID_HT, k) - continue - } - logs.Debug("__________________更新活动条目ID:", confNew.Id) - Registry.CardActivityConfigRaws[confNew.Id] = confNew - Registry.Decode(confNew) + // 更新数据 + if Registry.Config.Raw.UpdateTime != configOpen.UpdateTime || Registry.Config.Raw.UpdateTime != configOpen.UpdateTime { + logs.Debug("__________________尝试更新活动条目ID:", configOpen.Id) + confNew := CardActivityConfigRaw{} + sql := fmt.Sprintf("select * from %s where id=%d limit 1", configTableName, configOpen.Id) + err := umysql.FindOneSql(constd.MYSQL_MERGECONFIG, sql, &confNew) + if err != nil { + lxalilog.Errors(err, sql, constd.GAME_ID_HT, configOpen.Id) + return } + logs.Debug("__________________更新活动条目ID:", confNew.Id) + Registry.ConfigRaws = confNew + Registry.Decode(confNew) } - } func DumpConfigs() { - fmt.Println(CardConfigs) - fmt.Println(CardholderConfigs) - fmt.Println(NormalCardStarSequences) - fmt.Println(CardSequenceConfigs) } -- libgit2 0.21.0