Commit 8ec7d2615de12ed2ef9c51de1104269c82dcc20c
1 parent
d5604573
Exists in
master
and in
1 other branch
refactor♻️:redis对象和mysql对象持久化和读取
Showing
10 changed files
with
75 additions
and
204 deletions
Show diff stats
configs/registry.go
| @@ -3,6 +3,7 @@ package configs | @@ -3,6 +3,7 @@ package configs | ||
| 3 | import ( | 3 | import ( |
| 4 | "apigame/service-common/svmysql" | 4 | "apigame/service-common/svmysql" |
| 5 | "apigame/service-common/svredis" | 5 | "apigame/service-common/svredis" |
| 6 | + "apigame/util/util-lx/lxalilog" | ||
| 6 | "fmt" | 7 | "fmt" |
| 7 | ) | 8 | ) |
| 8 | 9 | ||
| @@ -16,6 +17,7 @@ func GetApiGameConfig(gameId string) (conf *ApiGameConfig, err error) { | @@ -16,6 +17,7 @@ func GetApiGameConfig(gameId string) (conf *ApiGameConfig, err error) { | ||
| 16 | } | 17 | } |
| 17 | has, err = svmysql.First(conf, gameId) | 18 | has, err = svmysql.First(conf, gameId) |
| 18 | if err != nil { | 19 | if err != nil { |
| 20 | + lxalilog.Errors(err, "configs.GetApiGameConfig error", gameId) | ||
| 19 | return | 21 | return |
| 20 | } | 22 | } |
| 21 | if !has { | 23 | if !has { |
| @@ -39,6 +41,7 @@ func GetCardActivityConfig(gameId string) (conf *CardActivityConfig, has bool) { | @@ -39,6 +41,7 @@ func GetCardActivityConfig(gameId string) (conf *CardActivityConfig, has bool) { | ||
| 39 | confRaw := new(CardActivityConfigRaw) | 41 | confRaw := new(CardActivityConfigRaw) |
| 40 | has, err = svmysql.First(confRaw, gameId) | 42 | has, err = svmysql.First(confRaw, gameId) |
| 41 | if err != nil { | 43 | if err != nil { |
| 44 | + lxalilog.Errors(err, "configs.GetCardActivityConfig error", gameId) | ||
| 42 | return | 45 | return |
| 43 | } | 46 | } |
| 44 | if !has { | 47 | if !has { |
| @@ -65,9 +68,11 @@ func GetRoomRankConfig(gameId string) (conf *RoomRankConfig, has bool) { | @@ -65,9 +68,11 @@ func GetRoomRankConfig(gameId string) (conf *RoomRankConfig, has bool) { | ||
| 65 | confRaw := new(RoomRankConfigRaw) | 68 | confRaw := new(RoomRankConfigRaw) |
| 66 | has, err = svmysql.First(confRaw, gameId) | 69 | has, err = svmysql.First(confRaw, gameId) |
| 67 | if err != nil { | 70 | if err != nil { |
| 71 | + lxalilog.Errors(err, "configs.GetRoomRankConfig error", gameId) | ||
| 68 | return | 72 | return |
| 69 | } | 73 | } |
| 70 | if !has { | 74 | if !has { |
| 75 | + | ||
| 71 | return | 76 | return |
| 72 | } | 77 | } |
| 73 | 78 |
service-common/svconst/mysql.go
| @@ -19,5 +19,5 @@ const ( | @@ -19,5 +19,5 @@ const ( | ||
| 19 | 19 | ||
| 20 | MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_roomrank_activity_" // 房间排行活动配置 | 20 | MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_roomrank_activity_" // 房间排行活动配置 |
| 21 | MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player_" // 房间排行玩家数据 | 21 | MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player_" // 房间排行玩家数据 |
| 22 | - MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room_" // 房间排行房间数据 | 22 | + MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room" // 房间排行房间数据 |
| 23 | ) | 23 | ) |
service-common/svmysql/dto.go
| 1 | package svmysql | 1 | package svmysql |
| 2 | 2 | ||
| 3 | -import ( | ||
| 4 | - "apigame/util/util-lx/lxalilog" | ||
| 5 | - "gorm.io/gorm" | ||
| 6 | - "strings" | ||
| 7 | -) | 3 | +func InitTable(obj IMysqlData, suffix string, notify bool) { |
| 4 | + info := obj.MysqlInfo(suffix) | ||
| 5 | + db := info.DbMysql | ||
| 6 | + _ = db.Table(info.TableName).AutoMigrate(obj) | ||
| 7 | +} | ||
| 8 | 8 | ||
| 9 | -func Insert(obj IMysqlData, suffix string) (err error) { | 9 | +func Create(obj IMysqlData, suffix string) (err error) { |
| 10 | info := obj.MysqlInfo(suffix) | 10 | info := obj.MysqlInfo(suffix) |
| 11 | db := info.DbMysql | 11 | db := info.DbMysql |
| 12 | - stmt := db.Session(&gorm.Session{DryRun: true}).Create(obj).Statement | ||
| 13 | - stmtSQL := stmt.SQL.String() | ||
| 14 | - sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) | ||
| 15 | - result := db.Exec(sql, stmt.Vars...) | 12 | + result := db.Table(info.TableName).Create(obj) |
| 13 | + | ||
| 16 | err = result.Error | 14 | err = result.Error |
| 17 | if err != nil { | 15 | if err != nil { |
| 18 | - lxalilog.Errors(err, suffix) | ||
| 19 | return | 16 | return |
| 20 | } | 17 | } |
| 21 | return | 18 | return |
| @@ -24,13 +21,10 @@ func Insert(obj IMysqlData, suffix string) (err error) { | @@ -24,13 +21,10 @@ func Insert(obj IMysqlData, suffix string) (err error) { | ||
| 24 | func Updates(obj IMysqlData, suffix string) (err error) { | 21 | func Updates(obj IMysqlData, suffix string) (err error) { |
| 25 | info := obj.MysqlInfo(suffix) | 22 | info := obj.MysqlInfo(suffix) |
| 26 | db := info.DbMysql | 23 | db := info.DbMysql |
| 27 | - stmt := db.Session(&gorm.Session{DryRun: true}).Updates(obj).Statement | ||
| 28 | - stmtSQL := stmt.SQL.String() | ||
| 29 | - sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) | ||
| 30 | - result := db.Exec(sql, stmt.Vars...) | 24 | + result := db.Table(info.TableName).Updates(obj) |
| 25 | + | ||
| 31 | err = result.Error | 26 | err = result.Error |
| 32 | if err != nil { | 27 | if err != nil { |
| 33 | - lxalilog.Errors(err, suffix) | ||
| 34 | return | 28 | return |
| 35 | } | 29 | } |
| 36 | return | 30 | return |
| @@ -39,14 +33,10 @@ func Updates(obj IMysqlData, suffix string) (err error) { | @@ -39,14 +33,10 @@ func Updates(obj IMysqlData, suffix string) (err error) { | ||
| 39 | func Save(obj IMysqlData, suffix string) (err error) { | 33 | func Save(obj IMysqlData, suffix string) (err error) { |
| 40 | info := obj.MysqlInfo(suffix) | 34 | info := obj.MysqlInfo(suffix) |
| 41 | db := info.DbMysql | 35 | db := info.DbMysql |
| 42 | - stmt := db.Session(&gorm.Session{DryRun: true}).Save(obj).Statement | ||
| 43 | - stmtSQL := stmt.SQL.String() | ||
| 44 | - sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) | ||
| 45 | - result := db.Exec(sql, stmt.Vars...) | 36 | + result := db.Table(info.TableName).Save(obj) |
| 46 | 37 | ||
| 47 | err = result.Error | 38 | err = result.Error |
| 48 | if err != nil { | 39 | if err != nil { |
| 49 | - lxalilog.Errors(err, suffix) | ||
| 50 | return | 40 | return |
| 51 | } | 41 | } |
| 52 | return | 42 | return |
| @@ -55,31 +45,19 @@ func Save(obj IMysqlData, suffix string) (err error) { | @@ -55,31 +45,19 @@ func Save(obj IMysqlData, suffix string) (err error) { | ||
| 55 | func First(obj IMysqlData, suffix string) (has bool, err error) { | 45 | func First(obj IMysqlData, suffix string) (has bool, err error) { |
| 56 | info := obj.MysqlInfo(suffix) | 46 | info := obj.MysqlInfo(suffix) |
| 57 | db := info.DbMysql | 47 | db := info.DbMysql |
| 58 | - stmt := db.Session(&gorm.Session{DryRun: true}).First(obj).Statement | ||
| 59 | - stmtSQL := stmt.SQL.String() | ||
| 60 | - sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) | ||
| 61 | - result := db.Raw(sql, stmt.Vars...).Scan(obj) | 48 | + result := db.Table(info.TableName).First(obj) |
| 49 | + | ||
| 62 | has = result.RowsAffected != 0 | 50 | has = result.RowsAffected != 0 |
| 63 | err = result.Error | 51 | err = result.Error |
| 64 | - if err != nil { | ||
| 65 | - lxalilog.Errors(err, suffix) | ||
| 66 | - return | ||
| 67 | - } | ||
| 68 | return | 52 | return |
| 69 | } | 53 | } |
| 70 | 54 | ||
| 71 | func Find(obj IMysqlData, suffix string) (has bool, err error) { | 55 | func Find(obj IMysqlData, suffix string) (has bool, err error) { |
| 72 | info := obj.MysqlInfo(suffix) | 56 | info := obj.MysqlInfo(suffix) |
| 73 | db := info.DbMysql | 57 | db := info.DbMysql |
| 74 | - stmt := db.Session(&gorm.Session{DryRun: true}).Find(obj).Statement | ||
| 75 | - stmtSQL := stmt.SQL.String() | ||
| 76 | - sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) | ||
| 77 | - result := db.Raw(sql, stmt.Vars...).Scan(obj) | 58 | + result := db.Table(info.TableName).Find(obj) |
| 59 | + | ||
| 78 | has = result.RowsAffected != 0 | 60 | has = result.RowsAffected != 0 |
| 79 | err = result.Error | 61 | err = result.Error |
| 80 | - if err != nil { | ||
| 81 | - lxalilog.Errors(err, suffix) | ||
| 82 | - return | ||
| 83 | - } | ||
| 84 | return | 62 | return |
| 85 | } | 63 | } |
service-common/svmysql/index.go
| @@ -6,6 +6,10 @@ import ( | @@ -6,6 +6,10 @@ import ( | ||
| 6 | "github.com/astaxie/beego" | 6 | "github.com/astaxie/beego" |
| 7 | "gorm.io/driver/mysql" | 7 | "gorm.io/driver/mysql" |
| 8 | "gorm.io/gorm" | 8 | "gorm.io/gorm" |
| 9 | + "gorm.io/gorm/logger" | ||
| 10 | + "log" | ||
| 11 | + "os" | ||
| 12 | + "time" | ||
| 9 | ) | 13 | ) |
| 10 | 14 | ||
| 11 | func Init() bool { | 15 | func Init() bool { |
| @@ -34,5 +38,17 @@ func Init() bool { | @@ -34,5 +38,17 @@ func Init() bool { | ||
| 34 | } | 38 | } |
| 35 | 39 | ||
| 36 | func ConnectMySQL(dsn string) (db *gorm.DB, err error) { | 40 | func ConnectMySQL(dsn string) (db *gorm.DB, err error) { |
| 37 | - return gorm.Open(mysql.Open(dsn), &gorm.Config{}) | 41 | + newLogger := logger.New( |
| 42 | + log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer | ||
| 43 | + logger.Config{ | ||
| 44 | + SlowThreshold: time.Second, // Slow SQL threshold | ||
| 45 | + LogLevel: logger.Silent, // Log level | ||
| 46 | + IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger | ||
| 47 | + ParameterizedQueries: true, // Don't include params in the SQL log | ||
| 48 | + Colorful: false, // Disable color | ||
| 49 | + }, | ||
| 50 | + ) | ||
| 51 | + return gorm.Open(mysql.Open(dsn), &gorm.Config{ | ||
| 52 | + Logger: newLogger, | ||
| 53 | + }) | ||
| 38 | } | 54 | } |
service-common/svmysql/table.go
| @@ -1,137 +0,0 @@ | @@ -1,137 +0,0 @@ | ||
| 1 | -package svmysql | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "fmt" | ||
| 5 | - "gorm.io/driver/mysql" | ||
| 6 | - "gorm.io/gorm" | ||
| 7 | - "gorm.io/gorm/clause" | ||
| 8 | - "gorm.io/gorm/migrator" | ||
| 9 | - "strings" | ||
| 10 | -) | ||
| 11 | - | ||
| 12 | -func InitTable(obj IMysqlData, suffix string, notify bool) { | ||
| 13 | - info := obj.MysqlInfo(suffix) | ||
| 14 | - db := info.DbMysql | ||
| 15 | - tableName := info.TableName | ||
| 16 | - m := db.Migrator().(mysql.Migrator).Migrator | ||
| 17 | - queryTx, execTx := m.GetQueryAndExecTx() | ||
| 18 | - if HasTable(queryTx.Migrator().(mysql.Migrator).Migrator, obj, tableName) { | ||
| 19 | - if notify { | ||
| 20 | - fmt.Println(tableName + " exist, skip!") | ||
| 21 | - } | ||
| 22 | - } else { | ||
| 23 | - err := CreateTable(execTx, obj, tableName) | ||
| 24 | - if err != nil { | ||
| 25 | - fmt.Println("err", err) | ||
| 26 | - } | ||
| 27 | - } | ||
| 28 | -} | ||
| 29 | - | ||
| 30 | -func HasTable(m migrator.Migrator, obj any, tableName string) bool { | ||
| 31 | - var count int64 | ||
| 32 | - | ||
| 33 | - m.RunWithValue(obj, func(stmt *gorm.Statement) error { | ||
| 34 | - currentDatabase := m.DB.Migrator().CurrentDatabase() | ||
| 35 | - return m.DB.Raw("SELECT count(*) FROM information_schema.tables WHERE table_schema = ? AND table_name = ? AND table_type = ?", currentDatabase, tableName, "BASE TABLE").Row().Scan(&count) | ||
| 36 | - }) | ||
| 37 | - | ||
| 38 | - return count > 0 | ||
| 39 | -} | ||
| 40 | - | ||
| 41 | -func CreateTable(execTx *gorm.DB, value any, tableName string) error { | ||
| 42 | - m := execTx.Migrator().(mysql.Migrator).Migrator | ||
| 43 | - tx := m.DB.Session(&gorm.Session{}) | ||
| 44 | - | ||
| 45 | - if err := m.RunWithValue(value, func(stmt *gorm.Statement) (err error) { | ||
| 46 | - var ( | ||
| 47 | - createTableSQL = "CREATE TABLE ? (" | ||
| 48 | - values = []interface{}{clause.Table{Name: tableName}} | ||
| 49 | - hasPrimaryKeyInDataType bool | ||
| 50 | - ) | ||
| 51 | - | ||
| 52 | - for _, dbName := range stmt.Schema.DBNames { | ||
| 53 | - field := stmt.Schema.FieldsByDBName[dbName] | ||
| 54 | - if !field.IgnoreMigration { | ||
| 55 | - createTableSQL += "? ?" | ||
| 56 | - hasPrimaryKeyInDataType = hasPrimaryKeyInDataType || strings.Contains(strings.ToUpper(m.DataTypeOf(field)), "PRIMARY KEY") | ||
| 57 | - values = append(values, clause.Column{Name: dbName}, m.DB.Migrator().FullDataTypeOf(field)) | ||
| 58 | - createTableSQL += "," | ||
| 59 | - } | ||
| 60 | - } | ||
| 61 | - | ||
| 62 | - if !hasPrimaryKeyInDataType && len(stmt.Schema.PrimaryFields) > 0 { | ||
| 63 | - createTableSQL += "PRIMARY KEY ?," | ||
| 64 | - primaryKeys := make([]interface{}, 0, len(stmt.Schema.PrimaryFields)) | ||
| 65 | - for _, field := range stmt.Schema.PrimaryFields { | ||
| 66 | - primaryKeys = append(primaryKeys, clause.Column{Name: field.DBName}) | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - values = append(values, primaryKeys) | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - for _, idx := range stmt.Schema.ParseIndexes() { | ||
| 73 | - if m.CreateIndexAfterCreateTable { | ||
| 74 | - defer func(value interface{}, name string) { | ||
| 75 | - if err == nil { | ||
| 76 | - err = tx.Migrator().CreateIndex(value, name) | ||
| 77 | - } | ||
| 78 | - }(value, idx.Name) | ||
| 79 | - } else { | ||
| 80 | - if idx.Class != "" { | ||
| 81 | - createTableSQL += idx.Class + " " | ||
| 82 | - } | ||
| 83 | - createTableSQL += "INDEX ? ?" | ||
| 84 | - | ||
| 85 | - if idx.Comment != "" { | ||
| 86 | - createTableSQL += fmt.Sprintf(" COMMENT '%s'", idx.Comment) | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - if idx.Option != "" { | ||
| 90 | - createTableSQL += " " + idx.Option | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - createTableSQL += "," | ||
| 94 | - values = append(values, clause.Column{Name: idx.Name}, tx.Migrator().(migrator.BuildIndexOptionsInterface).BuildIndexOptions(idx.Fields, stmt)) | ||
| 95 | - } | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | - if !m.DB.DisableForeignKeyConstraintWhenMigrating && !m.DB.IgnoreRelationshipsWhenMigrating { | ||
| 99 | - for _, rel := range stmt.Schema.Relationships.Relations { | ||
| 100 | - if rel.Field.IgnoreMigration { | ||
| 101 | - continue | ||
| 102 | - } | ||
| 103 | - if constraint := rel.ParseConstraint(); constraint != nil { | ||
| 104 | - if constraint.Schema == stmt.Schema { | ||
| 105 | - sql, vars := constraint.Build() | ||
| 106 | - createTableSQL += sql + "," | ||
| 107 | - values = append(values, vars...) | ||
| 108 | - } | ||
| 109 | - } | ||
| 110 | - } | ||
| 111 | - } | ||
| 112 | - | ||
| 113 | - for _, uni := range stmt.Schema.ParseUniqueConstraints() { | ||
| 114 | - createTableSQL += "CONSTRAINT ? UNIQUE (?)," | ||
| 115 | - values = append(values, clause.Column{Name: uni.Name}, clause.Expr{SQL: stmt.Quote(uni.Field.DBName)}) | ||
| 116 | - } | ||
| 117 | - | ||
| 118 | - for _, chk := range stmt.Schema.ParseCheckConstraints() { | ||
| 119 | - createTableSQL += "CONSTRAINT ? CHECK (?)," | ||
| 120 | - values = append(values, clause.Column{Name: chk.Name}, clause.Expr{SQL: chk.Constraint}) | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | - createTableSQL = strings.TrimSuffix(createTableSQL, ",") | ||
| 124 | - | ||
| 125 | - createTableSQL += ")" | ||
| 126 | - | ||
| 127 | - if tableOption, ok := m.DB.Get("gorm:table_options"); ok { | ||
| 128 | - createTableSQL += fmt.Sprint(tableOption) | ||
| 129 | - } | ||
| 130 | - | ||
| 131 | - err = tx.Exec(createTableSQL, values...).Error | ||
| 132 | - return err | ||
| 133 | - }); err != nil { | ||
| 134 | - return err | ||
| 135 | - } | ||
| 136 | - return nil | ||
| 137 | -} |
service/cardholder/logic.go
| @@ -196,7 +196,7 @@ func DoOpen(gameId string, | @@ -196,7 +196,7 @@ func DoOpen(gameId string, | ||
| 196 | // 记录开卡包日志 | 196 | // 记录开卡包日志 |
| 197 | { | 197 | { |
| 198 | recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | 198 | recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) |
| 199 | - _ = svmysql.Insert(NewRecordCardHolderOpen(recordBase, | 199 | + _ = svmysql.Create(NewRecordCardHolderOpen(recordBase, |
| 200 | openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards)), | 200 | openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards)), |
| 201 | gameId) | 201 | gameId) |
| 202 | } | 202 | } |
| @@ -245,7 +245,7 @@ func DoOpenCheckAward(gameId string, | @@ -245,7 +245,7 @@ func DoOpenCheckAward(gameId string, | ||
| 245 | { | 245 | { |
| 246 | // 记录日志 | 246 | // 记录日志 |
| 247 | recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | 247 | recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) |
| 248 | - _ = svmysql.Insert(NewRecordCardHolderRewardAlbum(recordBase, | 248 | + _ = svmysql.Create(NewRecordCardHolderRewardAlbum(recordBase, |
| 249 | albumId, award), | 249 | albumId, award), |
| 250 | gameId) | 250 | gameId) |
| 251 | } | 251 | } |
| @@ -257,7 +257,7 @@ func DoOpenCheckAward(gameId string, | @@ -257,7 +257,7 @@ func DoOpenCheckAward(gameId string, | ||
| 257 | 257 | ||
| 258 | // 记录日志 | 258 | // 记录日志 |
| 259 | recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | 259 | recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) |
| 260 | - _ = svmysql.Insert(NewRecordCardHolderRewardRound(recordBase, | 260 | + _ = svmysql.Create(NewRecordCardHolderRewardRound(recordBase, |
| 261 | awardRound), | 261 | awardRound), |
| 262 | gameId) | 262 | gameId) |
| 263 | 263 |
service/cardholder/player.go
| @@ -3,6 +3,7 @@ package cardholder | @@ -3,6 +3,7 @@ package cardholder | ||
| 3 | import ( | 3 | import ( |
| 4 | "apigame/configs" | 4 | "apigame/configs" |
| 5 | "apigame/service-common/svmysql" | 5 | "apigame/service-common/svmysql" |
| 6 | + "apigame/util/util-lx/lxalilog" | ||
| 6 | "apigame/util/util-lx/lxtime" | 7 | "apigame/util/util-lx/lxtime" |
| 7 | ) | 8 | ) |
| 8 | 9 | ||
| @@ -11,20 +12,24 @@ func SavePlayer(gameId string, d *DataCardHolder) { | @@ -11,20 +12,24 @@ func SavePlayer(gameId string, d *DataCardHolder) { | ||
| 11 | d.UpdateTime = lxtime.NowUninx() | 12 | d.UpdateTime = lxtime.NowUninx() |
| 12 | d.Encode() | 13 | d.Encode() |
| 13 | 14 | ||
| 14 | - _ = svmysql.Save(d, gameId) | 15 | + err := svmysql.Save(d, gameId) |
| 16 | + if err != nil { | ||
| 17 | + lxalilog.Errors(err, "cardholder.SavePlayer error", gameId, d.Uid, d.ActivityId) | ||
| 18 | + } | ||
| 15 | } | 19 | } |
| 16 | 20 | ||
| 17 | func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) { | 21 | func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) { |
| 18 | d = NewDataCardHolder(uid) | 22 | d = NewDataCardHolder(uid) |
| 19 | has, err := svmysql.First(d, gameId) | 23 | has, err := svmysql.First(d, gameId) |
| 20 | - if err != nil { | ||
| 21 | - return | ||
| 22 | - } | ||
| 23 | if has { | 24 | if has { |
| 24 | d.Decode() | 25 | d.Decode() |
| 25 | } else { | 26 | } else { |
| 26 | d.Init(uid) | 27 | d.Init(uid) |
| 27 | - _ = svmysql.Insert(d, gameId) | 28 | + err = svmysql.Create(d, gameId) |
| 29 | + if err != nil { | ||
| 30 | + lxalilog.Errors(err, "cardholder._LoadPlayer Create error", gameId, d.Uid, d.ActivityId) | ||
| 31 | + return | ||
| 32 | + } | ||
| 28 | } | 33 | } |
| 29 | return | 34 | return |
| 30 | } | 35 | } |
service/roomrank/dto-room.go
| @@ -20,10 +20,6 @@ func (d *DataRoomRankRoom) MysqlInfo(suffix string) *svmysql.MysqlInfo { | @@ -20,10 +20,6 @@ func (d *DataRoomRankRoom) MysqlInfo(suffix string) *svmysql.MysqlInfo { | ||
| 20 | tableName := svconst.MYSQL_TABLE_S_ROOMRANK_ROOM | 20 | tableName := svconst.MYSQL_TABLE_S_ROOMRANK_ROOM |
| 21 | return &svmysql.MysqlInfo{ | 21 | return &svmysql.MysqlInfo{ |
| 22 | DbMysql: svconst.DbCommon, | 22 | DbMysql: svconst.DbCommon, |
| 23 | - TableName: tableName + suffix, | 23 | + TableName: fmt.Sprintf("%s_%s_%d", tableName, suffix, d.ActivityId), |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
| 26 | - | ||
| 27 | -func (d *DataRoomRankRoom) GetSuffix(gameId string) string { | ||
| 28 | - return fmt.Sprintf("%s_%d", gameId, d.ActivityId) | ||
| 29 | -} |
service/roomrank/player.go
| @@ -4,6 +4,7 @@ import ( | @@ -4,6 +4,7 @@ import ( | ||
| 4 | "apigame/configs" | 4 | "apigame/configs" |
| 5 | "apigame/models" | 5 | "apigame/models" |
| 6 | "apigame/service-common/svmysql" | 6 | "apigame/service-common/svmysql" |
| 7 | + "apigame/util/util-lx/lxalilog" | ||
| 7 | "apigame/util/util-lx/lxtime" | 8 | "apigame/util/util-lx/lxtime" |
| 8 | ) | 9 | ) |
| 9 | 10 | ||
| @@ -11,19 +12,24 @@ import ( | @@ -11,19 +12,24 @@ import ( | ||
| 11 | func SavePlayer(gameId string, d *DataRoomRankPlayer) { | 12 | func SavePlayer(gameId string, d *DataRoomRankPlayer) { |
| 12 | d.UpdateTime = lxtime.NowUninx() | 13 | d.UpdateTime = lxtime.NowUninx() |
| 13 | 14 | ||
| 14 | - _ = svmysql.Save(d, gameId) | 15 | + err := svmysql.Save(d, gameId) |
| 16 | + if err != nil { | ||
| 17 | + lxalilog.Errors(err, "roomrank.SavePlayer error", gameId, d.Uid, d.ActivityId) | ||
| 18 | + return | ||
| 19 | + } | ||
| 15 | } | 20 | } |
| 16 | 21 | ||
| 17 | func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) { | 22 | func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) { |
| 18 | d = NewDataRoomRankPlayer(uid) | 23 | d = NewDataRoomRankPlayer(uid) |
| 19 | has, err := svmysql.First(d, gameId) | 24 | has, err := svmysql.First(d, gameId) |
| 20 | - if err != nil { | ||
| 21 | - return | ||
| 22 | - } | ||
| 23 | if has { | 25 | if has { |
| 24 | } else { | 26 | } else { |
| 25 | d.Init(uid) | 27 | d.Init(uid) |
| 26 | - _ = svmysql.Insert(d, gameId) | 28 | + err = svmysql.Create(d, gameId) |
| 29 | + if err != nil { | ||
| 30 | + lxalilog.Errors(err, "roomrank._LoadPlayer Create error", gameId, d.Uid, d.ActivityId) | ||
| 31 | + return | ||
| 32 | + } | ||
| 27 | } | 33 | } |
| 28 | return | 34 | return |
| 29 | } | 35 | } |
service/roomrank/room.go
| @@ -7,8 +7,7 @@ import ( | @@ -7,8 +7,7 @@ import ( | ||
| 7 | ) | 7 | ) |
| 8 | 8 | ||
| 9 | func tryInitTable(gameId string, d *DataRoomRankRoom) { | 9 | func tryInitTable(gameId string, d *DataRoomRankRoom) { |
| 10 | - suffix := d.GetSuffix(gameId) | ||
| 11 | - svmysql.InitTable(d, suffix, false) | 10 | + svmysql.InitTable(d, gameId, false) |
| 12 | } | 11 | } |
| 13 | 12 | ||
| 14 | // SaveRoom 存储数据 | 13 | // SaveRoom 存储数据 |
| @@ -17,21 +16,24 @@ func SaveRoom(gameId string, d *DataRoomRankRoom) { | @@ -17,21 +16,24 @@ func SaveRoom(gameId string, d *DataRoomRankRoom) { | ||
| 17 | 16 | ||
| 18 | d.UpdateTime = lxtime.NowUninx() | 17 | d.UpdateTime = lxtime.NowUninx() |
| 19 | 18 | ||
| 20 | - suffix := d.GetSuffix(gameId) | ||
| 21 | - _ = svmysql.Save(d, suffix) | 19 | + err := svmysql.Save(d, gameId) |
| 20 | + if err != nil { | ||
| 21 | + lxalilog.Errors(err, "roomrank.SaveRoom error", gameId, d.Uid, d.ActivityId) | ||
| 22 | + return | ||
| 23 | + } | ||
| 22 | } | 24 | } |
| 23 | 25 | ||
| 24 | // LoadRoom 获取数据 外部接口 | 26 | // LoadRoom 获取数据 外部接口 |
| 25 | -func LoadRoom(gameId string, id int64, activityId int64) (d *DataRoomRankRoom) { | 27 | +func LoadRoom(gameId string, id int64, activityId int64) (d *DataRoomRankRoom, has bool) { |
| 26 | d = &DataRoomRankRoom{Id: id, ActivityId: activityId} | 28 | d = &DataRoomRankRoom{Id: id, ActivityId: activityId} |
| 27 | tryInitTable(gameId, d) | 29 | tryInitTable(gameId, d) |
| 28 | - suffix := d.GetSuffix(gameId) | ||
| 29 | - has, err := svmysql.First(d, suffix) | 30 | + |
| 31 | + var err error | ||
| 32 | + has, err = svmysql.First(d, gameId) | ||
| 30 | if err != nil { | 33 | if err != nil { |
| 31 | - return | ||
| 32 | - } | ||
| 33 | - if !has { | ||
| 34 | lxalilog.Errors(err, "roomrank.LoadRoom error", gameId, id, activityId) | 34 | lxalilog.Errors(err, "roomrank.LoadRoom error", gameId, id, activityId) |
| 35 | + return | ||
| 35 | } | 36 | } |
| 37 | + | ||
| 36 | return | 38 | return |
| 37 | } | 39 | } |