ht-cardholder.go
2.83 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package dto
import (
"apigame/models"
"apigame/service/constd"
"apigame/util/util-lx/lxalilog"
"encoding/json"
"github.com/astaxie/beego/orm"
)
func InitHtCardholder() {
// register model
orm.RegisterModel(new(HtCardHolderData))
// create table
orm.RunSyncdb("default", false, true)
}
// HtCardHolderData 卡牌活动持久数据
type HtCardHolderData struct {
Uid int64 `orm:"pk"` // 玩家唯一ID
ActivityId int64 // 活动ID
Details *HtCardHolderDataDetails `orm:"-"` // 活动详情
DetailsText string `orm:"type(text)"` // 活动详情封装
CreateTime int64 // 创建时间戳
UpdateTime int64 // 修改时间戳
}
// HtCardHolderDataDetails 卡牌活动详情
type HtCardHolderDataDetails struct {
Cardholder map[int]int // 卡包数量 k=卡包ID v=卡包数量
Cards map[int]int // 每张卡集了多少张 k=卡牌ID v=数量
Album map[string]int // 卡组奖励领取 k=卡组ID v=数量
StarSequenceScales map[string]int // 星级序列刻度 k=ID_用户序列_用户分组 v=刻度
CardSequenceScales map[string]int // 卡牌序列刻度 k=ID_用户序列_用户分组 v=刻度
Round int // 卡册完成轮次
}
func NewHtCardHolderData(uid int64) *HtCardHolderData {
return &HtCardHolderData{
Uid: uid,
Details: NewHtCardHolderDataDetails(),
}
}
func NewHtCardHolderDataDetails() *HtCardHolderDataDetails {
return &HtCardHolderDataDetails{
Cardholder: make(map[int]int),
Cards: make(map[int]int),
Album: make(map[string]int),
StarSequenceScales: make(map[string]int),
CardSequenceScales: make(map[string]int),
Round: 0,
}
}
func (d *HtCardHolderData) TableName() string {
return constd.MYSQL_TABLE_S_CARD_DATA + constd.GAME_ID_HT
}
// Encode 打包数据
func (d *HtCardHolderData) Encode() {
details, err := json.Marshal(d.Details)
if err != nil {
lxalilog.Errors(err, "HtCardHolderData Encode Error", d.Uid, d.ActivityId)
return
}
d.DetailsText = string(details)
}
// Decode 分包数据
func (d *HtCardHolderData) Decode() {
err := json.Unmarshal([]byte(d.DetailsText), d.Details)
if err != nil {
lxalilog.Errors(err, "HtCardHolderData Decode Error", d.Uid, d.ActivityId)
return
}
}
// GetInfo 封装成返回数据
func (d *HtCardHolderData) GetInfo() models.HtCardHolderInfo {
info := models.HtCardHolderInfo{
Cardholder: make(map[int]int),
Cards: make(map[int]int),
Album: make(map[string]int),
Round: 0,
}
for i, i2 := range d.Details.Cardholder {
info.Cardholder[i] = i2
}
for i, i2 := range d.Details.Cards {
info.Cards[i] = i2
}
for i, i2 := range d.Details.Album {
info.Album[i] = i2
}
info.Round = d.Details.Round
return info
}