diff --git a/main.go b/main.go index 4efabab..6f1bba0 100644 --- a/main.go +++ b/main.go @@ -4,14 +4,14 @@ import ( "apigame/models" _ "apigame/routers" ht_draw "apigame/service/ht-cardholder" - "fmt" "github.com/astaxie/beego" + "github.com/astaxie/beego/logs" "github.com/astaxie/beego/plugins/cors" ) func main() { - fmt.Println("apigame") - //fmt.Println("😊🐸😺") + logs.Info("apigame") + //logs.Info("😊🐸😺") //解决跨域问题 beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{ diff --git a/service/ht-cardholder/config-registry.go b/service/ht-cardholder/config-registry.go new file mode 100644 index 0000000..190fc6e --- /dev/null +++ b/service/ht-cardholder/config-registry.go @@ -0,0 +1,122 @@ +package ht_cardholder + +import ( + "apigame/lx-util/lxalilog" + "apigame/service/constd" + "encoding/json" + "github.com/astaxie/beego/logs" +) + +var ( + configGameId = "10128" + configTable = constd.MYSQL_TABLE_ACTIVITY_S_CARD_ACTIVITY + configGameId + Registry RegistryConfigs // 卡牌活动配置 + + CardConfigs = make(map[int]CardConfig) // 卡牌表 + CardholderConfigs = make(map[int]CardholderConfig) // 卡包开卡规则表 + NormalCardStarSequences = make([]NormalCardStarSequence, 0) // 非保底卡星级ID + CardSequenceConfigs = make([]CardSequenceConfig, 0) // 星级ID对应的卡片 +) + +// RegistryConfigs 卡牌活动配置 +type RegistryConfigs struct { + CardActivityConfigRaws map[int64]CardActivityConfigRaw // 活动配置列表 原始数据 + CardActivityConfig map[int64]CardActivityConfig // 活动配置列表 分析后数据 +} + +func NewRegistryConfigs() { + Registry = RegistryConfigs{ + CardActivityConfigRaws: make(map[int64]CardActivityConfigRaw), + CardActivityConfig: make(map[int64]CardActivityConfig), + } +} + +// Decode 解析配置原始数据 +func (r RegistryConfigs) Decode(confRaw CardActivityConfigRaw) { + conf := CardActivityConfig{ + Raw: confRaw, + Id: confRaw.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), + } + // 解析奖励 + { + err := json.Unmarshal([]byte(confRaw.Awards), &conf.Awards) + if err != nil { + lxalilog.Errors(err, confRaw.Awards, configGameId, confRaw.Id) + return + } + } + // 卡组配置 + { + configs := make([]AlbumConfig, 0) + err := json.Unmarshal([]byte(confRaw.AlbumConfig), &configs) + if err != nil { + lxalilog.Errors(err, confRaw.AlbumConfig, configGameId, confRaw.Id) + return + } + for _, i2 := range configs { + conf.AlbumConfig[i2.SetId] = i2 + } + } + // 卡牌配置 + { + configs := make([]CardConfig, 0) + err := json.Unmarshal([]byte(confRaw.CardConfig), &configs) + if err != nil { + lxalilog.Errors(err, confRaw.CardConfig, configGameId, confRaw.Id) + return + } + for _, i2 := range configs { + conf.CardConfig[i2.Id] = i2 + } + } + // 卡包开卡规则 + { + configs := make([]CardholderConfig, 0) + err := json.Unmarshal([]byte(confRaw.CardHolderConfig), &configs) + if err != nil { + lxalilog.Errors(err, confRaw.CardHolderConfig, configGameId, confRaw.Id) + return + } + for _, i2 := range configs { + conf.CardholderConfig[i2.Id] = i2 + } + } + // 卡片星级配置 + { + configs := make([]NormalCardStarSequence, 0) + err := json.Unmarshal([]byte(confRaw.NormalCardStarSequence), &configs) + if err != nil { + lxalilog.Errors(err, confRaw.NormalCardStarSequence, configGameId, confRaw.Id) + return + } + for _, i2 := range configs { + conf.NormalCardStarSequence = append(conf.NormalCardStarSequence, i2) + } + } + // 卡片星级对应卡牌配置 + { + configs := make([]CardSequenceConfig, 0) + err := json.Unmarshal([]byte(confRaw.CardSequenceConfig), &configs) + if err != nil { + lxalilog.Errors(err, confRaw.CardSequenceConfig, configGameId, confRaw.Id) + return + } + for _, i2 := range configs { + conf.CardSequenceConfig = append(conf.CardSequenceConfig, i2) + } + } + + r.CardActivityConfig[conf.Id] = 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) +} diff --git a/service/ht-cardholder/config.go b/service/ht-cardholder/config.go index fab4c8e..5affcbc 100644 --- a/service/ht-cardholder/config.go +++ b/service/ht-cardholder/config.go @@ -1,18 +1,25 @@ package ht_cardholder -// CardActivityConfigs 卡牌活动配置 -type CardActivityConfigs struct { - CardActivityConfigs map[int64]CardActivityConfig // 活动配置列表 -} - // CardActivityUpdateConfig 卡牌活动更新配置 type CardActivityUpdateConfig struct { Id int64 `json:"id"` // ID UpdateTime int64 `json:"update_time"` // 修改时间戳 } -// CardActivityConfig 卡牌活动配置 +// 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 // 卡片星级对应卡牌配置 +} + +// CardActivityConfigRaw 卡牌活动配置 原始数据 +type CardActivityConfigRaw struct { Id int64 `json:"id"` // ID OpenLevel int `json:"open_level"` // 开启等级 PreviewTime int64 `json:"preview_time"` // 预告时间 @@ -29,35 +36,44 @@ type CardActivityConfig struct { UpdateTime int64 `json:"update_time"` // 修改时间戳 } +// AlbumConfig 卡组表 +type AlbumConfig struct { + SetId string `json:"set_id"` // 卡组id + Rewards string `json:"rewards"` // 集齐奖励 + StartTime int64 `json:"start_time"` // 开始时间 + EndTime int64 `json:"end_time"` // 结束时间 +} + // CardConfig 卡牌表 type CardConfig struct { - Id int `json:"id"` // ID - GroupId int `json:"groupid"` // 卡组id - IsGoldCard int `json:"isgoldcard"` // 是否是金卡 - Star int `json:"star"` // 星级 + Id int `json:"id"` // ID + SetId string `json:"album_setid"` // 卡组id + IsGold int `json:"is_gold"` // 是否是金卡 + Star int `json:"star"` // 星级 } // CardholderConfig 卡包开卡规则表 type CardholderConfig struct { - Id int `json:"id"` // ID - GuaranteedStar int `json:"guaranteedstar"` // 保底卡星级序列ID - IsGoldCardholder int `json:"isgoldcardholder"` // 是否是金卡包 - IsNew int `json:"isnew"` // 是否是新卡包 - NormalCardNumber int `json:"normalcardnumber"` // 非保底卡数量 - MinimumGuaranteeCardId int `json:"minimumguaranteecardid"` // 非保底卡牌序列ID + Id string `json:"id"` // ID + GuaranteedStar string `json:"guaranteed_star_card_id"` // 保底卡星级序列ID + IsGoldCardholder int `json:"isgoldcardholder"` // 是否是金卡包 + IsNew int `json:"isnew"` // 是否是新卡包 + NormalCardNumber int `json:"normal_card_number"` // 非保底卡数量 + MinimumGuaranteeCardId string `json:"minimum_guarantee_card_id"` // 非保底卡牌序列ID } // NormalCardStarSequence 非保底卡星级ID type NormalCardStarSequence struct { - Id int `json:"id"` // ID - Cohort int `json:"cohort"` // 用户分组 - StarSequenceId int `json:"starsequenceid"` // 用户序列组ID - NormalCardSequenceId []int `json:"normalcardsequenceid"` // 非保底星级序列 + Id string `json:"id"` // ID + SequenceId string `json:"user_sequence_id"` // 用户序列组ID + Cohort string `json:"cohort"` // 用户分组 + NormalCardSequenceId string `json:"normal_card_sequence_id"` // 非保底星级序列 } // CardSequenceConfig 星级ID对应的卡片 type CardSequenceConfig struct { - Id int `json:"id"` // SequenceId 用户序列组ID - Cohort int `json:"cohort"` // 用户分组 - CardIdList []int `json:"cardidlist"` // 卡牌抽取序列 + Id string `json:"id"` // SequenceId 用户序列组ID + SequenceId string `json:"user_sequence_id"` // 用户序列组ID + Cohort string `json:"cohort"` // 用户分组 + CardIdList string `json:"card_id_list"` // 卡牌抽取序列 } diff --git a/service/ht-cardholder/configs.go b/service/ht-cardholder/configs.go index 519db96..98eebd6 100644 --- a/service/ht-cardholder/configs.go +++ b/service/ht-cardholder/configs.go @@ -2,30 +2,16 @@ package ht_cardholder import ( "apigame/api-util/umysql" + "apigame/lx-util/lxalilog" "apigame/service/constd" "fmt" -) - -var configTable = constd.MYSQL_TABLE_ACTIVITY_S_CARD_ACTIVITY + "10128" - -var ( - Registry CardActivityConfigs // 卡牌活动配置 - - CardConfigs = make(map[int]CardConfig) // 卡牌表 - CardholderConfigs = make(map[int]CardholderConfig) // 卡包开卡规则表 - NormalCardStarSequences = make([]NormalCardStarSequence, 0) // 非保底卡星级ID - CardSequenceConfigs = make([]CardSequenceConfig, 0) // 星级ID对应的卡片 + "github.com/astaxie/beego/logs" ) // Init 初始化 func Init() { - Registry = CardActivityConfigs{ - CardActivityConfigs: make(map[int64]CardActivityConfig), - } - - // todo 装填虚拟数据 - //UseSimulateConfigs() + NewRegistryConfigs() TryUpdateConfigs() @@ -46,7 +32,7 @@ func LoadConfigs() { sql := fmt.Sprintf("select id,update_time from %s", configTable) err := umysql.FindSql(constd.MYSQL_MERGECONFIG, sql, &conf) if err != nil { - // todo 记录错误日志 + lxalilog.Errors(err, sql, configGameId) return } for _, config := range conf { @@ -55,15 +41,16 @@ func LoadConfigs() { fmt.Println(configsUpdate) } // 如果条目不存在 从活动列表中删除 - for k, _ := range Registry.CardActivityConfigs { + for k, _ := range Registry.CardActivityConfigRaws { _, ok := configsUpdate[k] if !ok { - delete(Registry.CardActivityConfigs, k) + delete(Registry.CardActivityConfigRaws, k) + delete(Registry.CardActivityConfig, k) } } for k, confUpdate := range configsUpdate { needUpdate := false - confOld, ok := Registry.CardActivityConfigs[k] + confOld, ok := Registry.CardActivityConfigRaws[k] // 如果条目不存在 或者 修改时间不一致 需要更新 if !ok { needUpdate = true @@ -74,79 +61,17 @@ func LoadConfigs() { } // 更新数据 if needUpdate { - fmt.Println("__________________尝试更新活动条目ID:", k) - confNew := CardActivityConfig{} + 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 { - // todo 记录错误日志 + lxalilog.Errors(err, sql, configGameId, k) continue } - fmt.Println("__________________更新活动条目ID:", confNew.Id) - Registry.CardActivityConfigs[confNew.Id] = confNew - } - } - -} - -// UseSimulateConfigs 装填虚拟数据 -func UseSimulateConfigs() { - - // 卡牌表 i=卡组ID j=卡牌顺序 - for i := 1; i <= 9; i++ { - for j := 1; j <= 9; j++ { - conf := CardConfig{ - Id: i*100 + j, - GroupId: i, - IsGoldCard: 0, - Star: 1, - } - if j == 9 { - conf.IsGoldCard = 1 - conf.Star = 2 - } - CardConfigs[conf.Id] = conf - } - } - // 卡包开卡规则表 - CardholderConfigs[1] = CardholderConfig{ - Id: 1, - GuaranteedStar: 1, - NormalCardNumber: 2, - MinimumGuaranteeCardId: 1, - } - CardholderConfigs[2] = CardholderConfig{ - Id: 2, - GuaranteedStar: 2, - NormalCardNumber: 3, - MinimumGuaranteeCardId: 2, - } - CardholderConfigs[3] = CardholderConfig{ - Id: 3, - GuaranteedStar: 3, - NormalCardNumber: 4, - MinimumGuaranteeCardId: 3, - } - // 非保底卡星级ID i=非保底卡星级ID j=用户分组 - for i := 1; i <= 3; i++ { - for j := 1; j <= 2; j++ { - conf := NormalCardStarSequence{ - Id: i, - Cohort: j, - NormalCardSequenceId: []int{i, i, i, j}, - } - NormalCardStarSequences = append(NormalCardStarSequences, conf) - } - } - // 星级ID对应的卡片 - for i := 1; i <= 3; i++ { - for j := 1; j <= 2; j++ { - conf := CardSequenceConfig{ - Id: i, - Cohort: j, - CardIdList: []int{101, 102, 103, 104, 102, 105, 106, 107, 108, 109}, - } - CardSequenceConfigs = append(CardSequenceConfigs, conf) + logs.Debug("__________________更新活动条目ID:", confNew.Id) + Registry.CardActivityConfigRaws[confNew.Id] = confNew + Registry.Decode(confNew) } } -- libgit2 0.21.0