diff --git a/controllers/ht-cardholder.go b/controllers/ht-cardholder.go index ebd77f9..b4c97ac 100644 --- a/controllers/ht-cardholder.go +++ b/controllers/ht-cardholder.go @@ -12,22 +12,13 @@ type HtCardHolderController struct { func (c *HtCardHolderController) Info() { // 获取请求 + //req := new(dto.ReqHtCardHolderInfo) var req dto.ReqHtCardHolderInfo if !c.GetPostData(&req) { return } - // 尝试更新配置 - ht_cardholder.TryUpdateConfigs() - - rsp := dto.RspHtCardHolderInfo{ - HtCardHolderInfo: dto.HtCardHolderInfo{ - BagList: make(map[int]int), - }, - } - - rsp.BagList[1] = 2 - rsp.BagList[2] = 5 + rsp := ht_cardholder.HandleInfo(&req) c.RetRspData(rsp) } diff --git a/main.go b/main.go index 1797775..8c111f0 100644 --- a/main.go +++ b/main.go @@ -33,5 +33,5 @@ func main() { // 初始化配置 ht_cardholder.Init() - //beego.Run() + beego.Run() } diff --git a/models/ht-cardholder.go b/models/ht-cardholder.go index 9d45ce9..24c5723 100644 --- a/models/ht-cardholder.go +++ b/models/ht-cardholder.go @@ -1,20 +1,65 @@ 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 + 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 diff --git a/service/ht-cardholder/config-registry.go b/service/ht-cardholder/config-registry.go index d7aa53e..4e11949 100644 --- a/service/ht-cardholder/config-registry.go +++ b/service/ht-cardholder/config-registry.go @@ -22,7 +22,7 @@ func NewRegistryConfigs() { } // Decode 解析配置原始数据 -func (r RegistryConfigs) Decode(confRaw CardActivityConfigRaw) { +func (r *RegistryConfigs) Decode(confRaw CardActivityConfigRaw) { conf := CardActivityConfig{ Raw: confRaw, Id: confRaw.Id, diff --git a/service/ht-cardholder/handle.go b/service/ht-cardholder/handle.go new file mode 100644 index 0000000..47cd680 --- /dev/null +++ b/service/ht-cardholder/handle.go @@ -0,0 +1,58 @@ +package ht_cardholder + +import ( + "apigame/dto" + "apigame/lx-util/lxalilog" + "apigame/models" + "apigame/service/constd" + "github.com/astaxie/beego/orm" +) + +func HandleInfo(req *dto.ReqHtCardHolderInfo) dto.RspHtCardHolderInfo { + // 尝试更新配置 + TryUpdateConfigs() + + //// 测试存档 + //userData := models.NewHtCardHolderData(req.UID) + //userData.ActivityId = Registry.Config.Id + //userData.DetailsData.Cards[101] = 1 + //userData.DetailsData.Cards[102] = 3 + //SaveData(userData) + // + //// 测试读档 + //lData := LoadData(req.UID) + //logs.Debug(lData) + + rsp := dto.RspHtCardHolderInfo{ + HtCardHolderInfo: dto.HtCardHolderInfo{ + BagList: make(map[int]int), + }, + } + + rsp.BagList[1] = 2 + rsp.BagList[2] = 5 + + return rsp +} + +func SaveData(d *models.HtCardHolderData) { + d.Encode() + + o := orm.NewOrm() + o.Using(constd.MYSQL_DEFAULT) + if _, err := o.InsertOrUpdate(d); err != nil { + lxalilog.Errors(err, "ht_cardholder SaveData Error", d.Uid) + } +} + +func LoadData(uid int64) (d *models.HtCardHolderData) { + d = models.NewHtCardHolderData(uid) + o := orm.NewOrm() + o.Using(constd.MYSQL_DEFAULT) + if err := o.QueryTable(d).One(d); err != nil { + lxalilog.Errors(err, "ht_cardholder LoadData Error", d.Uid) + } + d.DetailsData = models.NewHtCardHolderDataDetails() + d.Decode() + return +} -- libgit2 0.21.0