diff --git a/service/ht-cardholder/config-registry.go b/service/ht-cardholder/config-registry.go index a4f6204..444f4c2 100644 --- a/service/ht-cardholder/config-registry.go +++ b/service/ht-cardholder/config-registry.go @@ -5,124 +5,119 @@ import ( "apigame/service/constd" "encoding/json" "errors" + "fmt" ) var ( - Registry RegistryConfigs // 卡牌活动配置 -) - -// RegistryConfigs 卡牌活动配置 -type RegistryConfigs struct { ConfigRaws CardActivityConfigRaw // 活动配置 原始数据 Config CardActivityConfig // 活动配置 分析后数据 -} +) -func NewRegistryConfigs() { - Registry = RegistryConfigs{} +func NewConfigs() { + ConfigRaws = CardActivityConfigRaw{} + Config = CardActivityConfig{} } -// Decode 解析配置原始数据 -func (r *RegistryConfigs) Decode(confRaw CardActivityConfigRaw) { - conf := CardActivityConfig{ - Raw: confRaw, - Id: confRaw.Id, +// ConfigDecode 解析配置原始数据 +func ConfigDecode() { + Config = CardActivityConfig{ + Raw: ConfigRaws, + Id: ConfigRaws.Id, Awards: make(map[string]string), AlbumConfig: make(map[string]AlbumConfig), CardConfig: make(map[int]CardConfig), CardholderConfig: make(map[string]CardholderConfig), - NormalCardStarSequence: make([]NormalCardStarSequence, 0), - CardSequenceConfig: make([]CardSequenceConfig, 0), + NormalCardStarSequence: make(map[string]NormalCardStarSequence), + CardSequenceConfig: make(map[string]CardSequenceConfig), } // 解析奖励 { - err := json.Unmarshal([]byte(confRaw.Awards), &conf.Awards) + err := json.Unmarshal([]byte(ConfigRaws.Awards), &Config.Awards) if err != nil { - lxalilog.Errors(err, confRaw.Awards, constd.GAME_ID_HT, confRaw.Id) + lxalilog.Errors(err, ConfigRaws.Awards, constd.GAME_ID_HT, ConfigRaws.Id) return } } // 卡组配置 { configs := make([]AlbumConfig, 0) - err := json.Unmarshal([]byte(confRaw.AlbumConfig), &configs) + err := json.Unmarshal([]byte(ConfigRaws.AlbumConfig), &configs) if err != nil { - lxalilog.Errors(err, confRaw.AlbumConfig, constd.GAME_ID_HT, confRaw.Id) + lxalilog.Errors(err, ConfigRaws.AlbumConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { - conf.AlbumConfig[i2.SetId] = i2 + Config.AlbumConfig[i2.SetId] = i2 } } // 卡牌配置 { configs := make([]CardConfig, 0) - err := json.Unmarshal([]byte(confRaw.CardConfig), &configs) + err := json.Unmarshal([]byte(ConfigRaws.CardConfig), &configs) if err != nil { - lxalilog.Errors(err, confRaw.CardConfig, constd.GAME_ID_HT, confRaw.Id) + lxalilog.Errors(err, ConfigRaws.CardConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { - conf.CardConfig[i2.Id] = i2 + Config.CardConfig[i2.Id] = i2 } } // 卡包开卡规则 { configs := make([]CardholderConfig, 0) - err := json.Unmarshal([]byte(confRaw.CardHolderConfig), &configs) + err := json.Unmarshal([]byte(ConfigRaws.CardHolderConfig), &configs) if err != nil { - lxalilog.Errors(err, confRaw.CardHolderConfig, constd.GAME_ID_HT, confRaw.Id) + lxalilog.Errors(err, ConfigRaws.CardHolderConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { - conf.CardholderConfig[i2.Id] = i2 + Config.CardholderConfig[i2.Id] = i2 } } // 卡片星级配置 { configs := make([]NormalCardStarSequence, 0) - err := json.Unmarshal([]byte(confRaw.NormalCardStarSequence), &configs) + err := json.Unmarshal([]byte(ConfigRaws.NormalCardStarSequence), &configs) if err != nil { - lxalilog.Errors(err, confRaw.NormalCardStarSequence, constd.GAME_ID_HT, confRaw.Id) + lxalilog.Errors(err, ConfigRaws.NormalCardStarSequence, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { - conf.NormalCardStarSequence = append(conf.NormalCardStarSequence, i2) + combineId := CombineIdSequenceIdCohort(i2.Id, i2.SequenceId, i2.Cohort) + Config.NormalCardStarSequence[combineId] = i2 } } // 卡片星级对应卡牌配置 { configs := make([]CardSequenceConfig, 0) - err := json.Unmarshal([]byte(confRaw.CardSequenceConfig), &configs) + err := json.Unmarshal([]byte(ConfigRaws.CardSequenceConfig), &configs) if err != nil { - lxalilog.Errors(err, confRaw.CardSequenceConfig, constd.GAME_ID_HT, confRaw.Id) + lxalilog.Errors(err, ConfigRaws.CardSequenceConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { - conf.CardSequenceConfig = append(conf.CardSequenceConfig, i2) + combineId := CombineIdSequenceIdCohort(i2.Id, i2.SequenceId, i2.Cohort) + Config.CardSequenceConfig[combineId] = i2 } } - r.Config = conf - //logs.Debug(conf.Awards) - //logs.Debug(conf.AlbumConfig) - //logs.Debug(conf.CardConfig) - //logs.Debug(conf.CardholderConfig) - //logs.Debug("🐸", conf.NormalCardStarSequence) - //logs.Debug("🐸", conf.CardSequenceConfig) + //logs.Debug(Config.Awards) + //logs.Debug(Config.AlbumConfig) + //logs.Debug(Config.CardConfig) + //logs.Debug(Config.CardholderConfig) + //logs.Debug("🐸", Config.NormalCardStarSequence) + //logs.Debug("🐸", Config.CardSequenceConfig) +} + +// CombineIdSequenceIdCohort 组合ID k=ID_用户序列_用户分组 +func CombineIdSequenceIdCohort(id, sequenceId, cohort string) string { + return fmt.Sprintf("%s_%s_%s", id, sequenceId, cohort) } // FindCardSequenceConfig 查找配置 星级ID对应的卡片 func FindCardSequenceConfig(id, sequenceId, cohort string) (conf CardSequenceConfig, has bool) { - conf = CardSequenceConfig{} - has = false - for _, c := range Registry.Config.CardSequenceConfig { - if c.Id == id && - c.SequenceId == sequenceId && - c.Cohort == cohort { - has = true - return - } - } + combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) + conf, has = Config.CardSequenceConfig[combineId] if !has { lxalilog.Errors(errors.New("ht_cardholder CardSequenceConfig error"), " LoadData Error", id, sequenceId, cohort) } diff --git a/service/ht-cardholder/config.go b/service/ht-cardholder/config.go index f133d6c..e53ee9d 100644 --- a/service/ht-cardholder/config.go +++ b/service/ht-cardholder/config.go @@ -12,13 +12,13 @@ type CardActivityUpdateConfig struct { // CardActivityConfig 卡牌活动配置 分析后数据 type CardActivityConfig struct { Raw CardActivityConfigRaw - Id int64 // ID - Awards map[string]string // 奖励配置 - AlbumConfig map[string]AlbumConfig // 卡组配置 - CardConfig map[int]CardConfig // 卡牌配置 - CardholderConfig map[string]CardholderConfig // 卡包开卡规则 - NormalCardStarSequence []NormalCardStarSequence // 卡片星级配置 - CardSequenceConfig []CardSequenceConfig // 卡片星级对应卡牌配置 + Id int64 // ID + Awards map[string]string // 奖励配置 + AlbumConfig map[string]AlbumConfig // 卡组配置 + CardConfig map[int]CardConfig // 卡牌配置 + CardholderConfig map[string]CardholderConfig // 卡包开卡规则 + NormalCardStarSequence map[string]NormalCardStarSequence // k=ID_用户序列_用户分组 卡片星级配置 + CardSequenceConfig map[string]CardSequenceConfig // k=ID_用户序列_用户分组 卡片星级对应卡牌配置 } func (c *CardActivityConfig) TableName() string { diff --git a/service/ht-cardholder/configs.go b/service/ht-cardholder/configs.go index 5027dfc..252111b 100644 --- a/service/ht-cardholder/configs.go +++ b/service/ht-cardholder/configs.go @@ -11,7 +11,7 @@ import ( // Init 初始化 func Init() { - NewRegistryConfigs() + NewConfigs() TryUpdateConfigs() @@ -49,7 +49,7 @@ func LoadConfigs() { return } // 更新数据 - if configOpen.Id != Registry.Config.Raw.Id || configOpen.UpdateTime != Registry.Config.Raw.UpdateTime { + if configOpen.Id != Config.Raw.Id || configOpen.UpdateTime != Config.Raw.UpdateTime { logs.Debug("__________________尝试更新活动条目ID:", configOpen.Id) confNew := CardActivityConfigRaw{} sql := fmt.Sprintf("select * from %s where id=%d limit 1", configTableName, configOpen.Id) @@ -59,8 +59,8 @@ func LoadConfigs() { return } logs.Debug("__________________更新活动条目ID:", confNew.Id) - Registry.ConfigRaws = confNew - Registry.Decode(confNew) + ConfigRaws = confNew + ConfigDecode() } } diff --git a/service/ht-cardholder/handle.go b/service/ht-cardholder/handle.go index c496d87..b3bd794 100644 --- a/service/ht-cardholder/handle.go +++ b/service/ht-cardholder/handle.go @@ -40,7 +40,7 @@ func HandleGetNew(req *dto.ReqHtCardHolderGetNew) (code string, rsp dto.RspHtCar return } // 检查卡包ID - _, okCardholderConfig := Registry.Config.CardholderConfig[strconv.Itoa(req.Id)] + _, okCardholderConfig := Config.CardholderConfig[strconv.Itoa(req.Id)] if !okCardholderConfig { code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR return @@ -141,9 +141,9 @@ func _LoadData(uid int64) (d *models.HtCardHolderData) { func LoadData(uid int64) (d *models.HtCardHolderData) { d = _LoadData(uid) // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 - if Registry.Config.Id != 0 && - Registry.Config.Id != d.ActivityId { - d.ActivityId = Registry.Config.Id + if Config.Id != 0 && + Config.Id != d.ActivityId { + d.ActivityId = Config.Id d.DetailsData = models.NewHtCardHolderDataDetails() SaveData(d) } @@ -153,13 +153,13 @@ func LoadData(uid int64) (d *models.HtCardHolderData) { // CheckStatus 判断活动是否开启 func CheckStatus() string { sec := lxtime.NowUninx() - if Registry.Config.Id == 0 { + if Config.Id == 0 { return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR } - if sec < Registry.Config.Raw.StartTime { + if sec < Config.Raw.StartTime { return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR } - if sec > Registry.Config.Raw.EndTime { + if sec > Config.Raw.EndTime { return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR } return constd.RECODE_OK -- libgit2 0.21.0