package dto import ( "apigame/service/constd" "apigame/util/util-lx/lxalilog" "apigame/util/utmysql" "fmt" "github.com/astaxie/beego/orm" ) func LoadPlayerData(gameId string, uid int64, data IPlayerData) (has bool, err error) { tableName := data.TableName(gameId) sql := fmt.Sprintf("select * from %s where uid=%d limit 1", tableName, uid) has, err = utmysql.FindOneSql(constd.MYSQL_MERGECOMMON, sql, data) if err != nil { lxalilog.Errors(err, sql, gameId, uid) return } // 档案不存在 新建 if !has { data.Init(uid) CreatePlayerData(gameId, uid, data) } return } func CreatePlayerData(gameId string, uid int64, data IPlayerData) { text1 := "" text2 := "" for s, s2 := range data.SqlPairs() { text1 += "," + s text2 += "," + s2 } sql := fmt.Sprintf("insert into %s (uid%s) value (%d%s)", data.TableName(gameId), text1, uid, text2) o := orm.NewOrm() o.Using(constd.MYSQL_MERGECOMMON) _, err := o.Raw(sql).Exec() if err != nil { lxalilog.Errors(err, sql, gameId, uid) return } } func SavePlayerData(gameId string, uid int64, data IPlayerData) { text := "" indexPairs := 0 for s, s2 := range data.SqlPairs() { if indexPairs != 0 { text += "," } text += fmt.Sprintf("%s=%s", s, s2) indexPairs++ } sql := fmt.Sprintf("update %s set %s where uid=%d", data.TableName(gameId), text, uid) o := orm.NewOrm() o.Using(constd.MYSQL_MERGECOMMON) _, err := o.Raw(sql).Exec() if err != nil { lxalilog.Errors(err, sql, gameId, uid) return } }