package cardholder import ( "apigame/service/constd" "apigame/util/util-lx/lxalilog" "encoding/json" "errors" "fmt" "strings" ) var ( ConfigRaws CardActivityConfigRaw // 活动配置 原始数据 Config CardActivityConfig // 活动配置 分析后数据 ) func NewConfigs() { ConfigRaws = CardActivityConfigRaw{} Config = CardActivityConfig{} } // 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), NormalCardStarConfig: make(map[string]NormalCardStarConfig), CardSequenceConfig: make(map[string]CardSequenceConfig), } // 解析奖励 { err := json.Unmarshal([]byte(ConfigRaws.Awards), &Config.Awards) if err != nil { lxalilog.Errors(err, ConfigRaws.Awards, constd.GAME_ID_HT, ConfigRaws.Id) return } } // 卡组配置 { configs := make([]AlbumConfig, 0) err := json.Unmarshal([]byte(ConfigRaws.AlbumConfig), &configs) if err != nil { lxalilog.Errors(err, ConfigRaws.AlbumConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { Config.AlbumConfig[i2.SetId] = i2 } } // 卡牌配置 { configs := make([]CardConfig, 0) err := json.Unmarshal([]byte(ConfigRaws.CardConfig), &configs) if err != nil { lxalilog.Errors(err, ConfigRaws.CardConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { Config.CardConfig[i2.Id] = i2 } } // 卡包开卡规则 { configs := make([]CardholderConfig, 0) err := json.Unmarshal([]byte(ConfigRaws.CardHolderConfig), &configs) if err != nil { lxalilog.Errors(err, ConfigRaws.CardHolderConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { Config.CardholderConfig[i2.Id] = i2 } } // 卡片星级配置 { configs := make([]NormalCardStarConfig, 0) err := json.Unmarshal([]byte(ConfigRaws.NormalCardStarSequence), &configs) if err != nil { lxalilog.Errors(err, ConfigRaws.NormalCardStarSequence, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { i2.NormalCardSequenceIds = strings.Split(i2.NormalCardSequenceId, ",") combineId := CombineIdSequenceIdCohort(i2.Id, i2.SequenceId, i2.Cohort) Config.NormalCardStarConfig[combineId] = i2 } } // 卡片星级对应卡牌配置 { configs := make([]CardSequenceConfig, 0) err := json.Unmarshal([]byte(ConfigRaws.CardSequenceConfig), &configs) if err != nil { lxalilog.Errors(err, ConfigRaws.CardSequenceConfig, constd.GAME_ID_HT, ConfigRaws.Id) return } for _, i2 := range configs { i2.CardIdLists = strings.Split(i2.CardIdList, ",") combineId := CombineIdSequenceIdCohort(i2.Id, i2.SequenceId, i2.Cohort) Config.CardSequenceConfig[combineId] = i2 } } } // CombineIdSequenceIdCohort 组合ID k=ID_用户序列_用户分组 func CombineIdSequenceIdCohort(id, sequenceId, cohort string) string { return fmt.Sprintf("%s_%s_%s", id, sequenceId, cohort) } // FindNormalCardStarConfig 查找配置 非保底卡星级ID func FindNormalCardStarConfig(id, sequenceId, cohort string) (conf NormalCardStarConfig, has bool) { combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) conf, has = Config.NormalCardStarConfig[combineId] if !has { lxalilog.Errors(errors.New("ht_cardholder NormalCardStarConfig error"), id, sequenceId, cohort) } return } // FindCardSequenceConfig 查找配置 星级ID对应的卡片 func FindCardSequenceConfig(id, sequenceId, cohort string) (conf CardSequenceConfig, has bool) { combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) conf, has = Config.CardSequenceConfig[combineId] if !has { lxalilog.Errors(errors.New("ht_cardholder CardSequenceConfig error"), id, sequenceId, cohort) } return }