player-data.go
1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
}
}