diff --git a/service/ht-cardholder/config-registry.go b/service/ht-cardholder/config-registry.go index df9ef9d..4f5abec 100644 --- a/service/ht-cardholder/config-registry.go +++ b/service/ht-cardholder/config-registry.go @@ -22,14 +22,14 @@ func NewConfigs() { // 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(map[string]NormalCardStarSequence), - CardSequenceConfig: make(map[string]CardSequenceConfig), + 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), } // 解析奖励 { @@ -77,7 +77,7 @@ func ConfigDecode() { } // 卡片星级配置 { - configs := make([]NormalCardStarSequence, 0) + 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) @@ -86,7 +86,7 @@ func ConfigDecode() { for _, i2 := range configs { i2.NormalCardSequenceIds = strings.Split(i2.NormalCardSequenceId, ",") combineId := CombineIdSequenceIdCohort(i2.Id, i2.SequenceId, i2.Cohort) - Config.NormalCardStarSequence[combineId] = i2 + Config.NormalCardStarConfig[combineId] = i2 } } // 卡片星级对应卡牌配置 @@ -108,7 +108,7 @@ func ConfigDecode() { //logs.Debug(Config.AlbumConfig) //logs.Debug(Config.CardConfig) //logs.Debug(Config.CardholderConfig) - //logs.Debug("🐸", Config.NormalCardStarSequence) + //logs.Debug("🐸", Config.NormalCardStarConfig) //logs.Debug("🐸", Config.CardSequenceConfig) } @@ -117,12 +117,22 @@ 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"), " LoadData Error", id, sequenceId, cohort) + lxalilog.Errors(errors.New("ht_cardholder CardSequenceConfig error"), id, sequenceId, cohort) } return } diff --git a/service/ht-cardholder/config.go b/service/ht-cardholder/config.go index df2a155..e07627d 100644 --- a/service/ht-cardholder/config.go +++ b/service/ht-cardholder/config.go @@ -11,14 +11,14 @@ 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 map[string]NormalCardStarSequence // k=ID_用户序列_用户分组 卡片星级配置 - CardSequenceConfig map[string]CardSequenceConfig // k=ID_用户序列_用户分组 卡片星级对应卡牌配置 + Raw CardActivityConfigRaw + Id int64 // ID + Awards map[string]string // 奖励配置 + AlbumConfig map[string]AlbumConfig // 卡组配置 + CardConfig map[int]CardConfig // 卡牌配置 + CardholderConfig map[string]CardholderConfig // 卡包开卡规则 + NormalCardStarConfig map[string]NormalCardStarConfig // k=ID_用户序列_用户分组 卡片星级配置 + CardSequenceConfig map[string]CardSequenceConfig // k=ID_用户序列_用户分组 卡片星级对应卡牌配置 } func (c *CardActivityConfig) TableName() string { @@ -63,15 +63,15 @@ type CardConfig struct { // CardholderConfig 卡包开卡规则表 type CardholderConfig struct { Id string `json:"id"` // ID - GuaranteedStar string `json:"guaranteed_star_card_id"` // 保底卡星级序列ID IsGoldCardholder int `json:"is_gold_card_holder"` // 是否是金卡包 IsNew int `json:"is_new"` // 是否是新卡包 + GuaranteedStarCardId string `json:"guaranteed_star_card_id"` // 保底卡星级序列ID NormalCardNumber int `json:"normal_card_number"` // 非保底卡数量 MinimumGuaranteeCardId string `json:"minimum_guarantee_card_id"` // 非保底卡牌序列ID } -// NormalCardStarSequence 非保底卡星级ID -type NormalCardStarSequence struct { +// NormalCardStarConfig 非保底卡星级ID +type NormalCardStarConfig struct { Id string `json:"id"` // ID SequenceId string `json:"user_sequence_id"` // 用户序列组ID Cohort string `json:"cohort"` // 用户分组 diff --git a/service/ht-cardholder/handle.go b/service/ht-cardholder/handle.go index ee6b69a..4ed74fd 100644 --- a/service/ht-cardholder/handle.go +++ b/service/ht-cardholder/handle.go @@ -4,6 +4,7 @@ import ( "apigame/dto" "apigame/service/constd" "apigame/util/uttype" + "fmt" "strconv" ) @@ -101,21 +102,49 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol } else { // 正常抽卡 // 先抽保底卡 - if confCardholder.GuaranteedStar != "0" { - confGuaranteed, hasGuaranteed := FindCardSequenceConfig(confCardholder.GuaranteedStar, sequenceId, cohort) - if hasGuaranteed { - combineId := CombineIdSequenceIdCohort(confCardholder.GuaranteedStar, sequenceId, cohort) + if confCardholder.GuaranteedStarCardId != "0" { + confCardSequence, hasCardSequence := FindCardSequenceConfig(confCardholder.GuaranteedStarCardId, sequenceId, cohort) + if hasCardSequence { + combineId := CombineIdSequenceIdCohort(confCardholder.GuaranteedStarCardId, sequenceId, cohort) scale := gameData.Details.CardSequenceScales[combineId] - cardId := GetOneFromArray(confGuaranteed.CardIdLists, scale) + cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) cardIdInt := uttype.StringToInt(cardId) // 增加刻度 gameData.Details.CardSequenceScales[combineId] = scale + 1 // 增加卡牌 gameData.Details.Cards[cardIdInt] += 1 + fmt.Println("🐸🐸🐸保底卡ID", cardIdInt) rsp.NewCards = append(rsp.NewCards, cardIdInt) } } - + // 非保底卡 + if confCardholder.NormalCardNumber > 0 { + count := confCardholder.NormalCardNumber + confNormalCardStar, hasNormalCardStar := FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) + if hasNormalCardStar { + combineIdStar := CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) + scaleStar := gameData.Details.StarSequenceScales[combineIdStar] + starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count) + // 增加星级刻度 + gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count + // 遍历星级刻度抽取n张卡牌 + for _, id := range starIds { + combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) + scale := gameData.Details.CardSequenceScales[combineId] + confCardSequence, hasCardSequence := FindCardSequenceConfig(id, sequenceId, cohort) + if hasCardSequence { + cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) + cardIdInt := uttype.StringToInt(cardId) + // 增加刻度 + gameData.Details.CardSequenceScales[combineId] = scale + 1 + // 增加卡牌 + gameData.Details.Cards[cardIdInt] += 1 + rsp.NewCards = append(rsp.NewCards, cardIdInt) + fmt.Println("😊😊😊非保底卡ID", cardIdInt) + } + } + } + } } // 删除一个卡包 -- libgit2 0.21.0