ht-cardholder.go 1.91 KB
package models

import (
	"apigame/lx-util/lxalilog"
	"apigame/service/constd"
	"encoding/json"
	"github.com/astaxie/beego/orm"
)

// HtCardHolderData 卡牌活动持久数据
type HtCardHolderData struct {
	Uid         int64                    `orm:"pk"` // 玩家唯一ID
	ActivityId  int64                    // 活动ID
	DetailsData *HtCardHolderDataDetails `orm:"-"`          // 活动详情
	Details     string                   `orm:"type(text)"` // 活动详情封装
}

// HtCardHolderDataDetails 卡牌活动详情
type HtCardHolderDataDetails struct {
	Cards              map[int]int    // 每张卡集了多少张 k=卡牌ID v=数量
	StarSequenceScales map[string]int // 星级序列刻度 k=ID_用户序列_用户分组 v=刻度
	CardSequenceScales map[string]int // 卡牌序列刻度 k=ID_用户序列_用户分组 v=刻度
}

func NewHtCardHolderData(uid int64) *HtCardHolderData {
	return &HtCardHolderData{
		Uid:         uid,
		DetailsData: NewHtCardHolderDataDetails(),
	}
}

func NewHtCardHolderDataDetails() *HtCardHolderDataDetails {
	return &HtCardHolderDataDetails{
		Cards:              make(map[int]int),
		StarSequenceScales: make(map[string]int),
		CardSequenceScales: make(map[string]int),
	}
}

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.DetailsData)
	if err != nil {
		lxalilog.Errors(err, "HtCardHolderData Encode Error", d.Uid, d.ActivityId)
		return
	}
	d.Details = string(details)
}

// Decode 分包数据
func (d *HtCardHolderData) Decode() {
	err := json.Unmarshal([]byte(d.Details), d.DetailsData)
	if err != nil {
		lxalilog.Errors(err, "HtCardHolderData Decode Error", d.Uid, d.ActivityId)
		return
	}
}

func InitHtCardholder() {

	// register model
	orm.RegisterModel(new(HtCardHolderData))

	// create table
	orm.RunSyncdb("default", false, true)
}