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 }