package ht_cardholder import ( "apigame/api-util/umysql" "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对应的卡片 ) // Init 初始化 func Init() { Registry = CardActivityConfigs{ CardActivityConfigs: make(map[int64]CardActivityConfig), } // todo 装填虚拟数据 //UseSimulateConfigs() TryUpdateConfigs() //DumpConfigs() } // TryUpdateConfigs 尝试更新配置表 func TryUpdateConfigs() { LoadConfigs() } // LoadConfigs 读取mysql配置 func LoadConfigs() { // 读取最后修改时间 configsUpdate := make(map[int64]CardActivityUpdateConfig) { conf := make([]CardActivityUpdateConfig, 0) sql := fmt.Sprintf("select id,update_time from %s", configTable) err := umysql.FindSql(constd.MYSQL_MERGECONFIG, sql, &conf) if err != nil { // todo 记录错误日志 return } for _, config := range conf { configsUpdate[config.Id] = config } fmt.Println(configsUpdate) } // 如果条目不存在 从活动列表中删除 for k, _ := range Registry.CardActivityConfigs { _, ok := configsUpdate[k] if !ok { delete(Registry.CardActivityConfigs, k) } } for k, confUpdate := range configsUpdate { needUpdate := false confOld, ok := Registry.CardActivityConfigs[k] // 如果条目不存在 或者 修改时间不一致 需要更新 if !ok { needUpdate = true } else { if confOld.UpdateTime != confUpdate.UpdateTime { needUpdate = true } } // 更新数据 if needUpdate { fmt.Println("__________________尝试更新活动条目ID:", k) confNew := CardActivityConfig{} 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 记录错误日志 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) } } } func DumpConfigs() { fmt.Println(CardConfigs) fmt.Println(CardholderConfigs) fmt.Println(NormalCardStarSequences) fmt.Println(CardSequenceConfigs) }