Commit 78655da056e1a6b81feee9393f2456a7da95b4a1

Authored by 王家文
1 parent 95c75dc4
Exists in master and in 1 other branch dev-wjw

feat:活动数据存读

controllers/ht-cardholder.go
@@ -12,22 +12,13 @@ type HtCardHolderController struct { @@ -12,22 +12,13 @@ type HtCardHolderController struct {
12 12
13 func (c *HtCardHolderController) Info() { 13 func (c *HtCardHolderController) Info() {
14 // 获取请求 14 // 获取请求
  15 + //req := new(dto.ReqHtCardHolderInfo)
15 var req dto.ReqHtCardHolderInfo 16 var req dto.ReqHtCardHolderInfo
16 if !c.GetPostData(&req) { 17 if !c.GetPostData(&req) {
17 return 18 return
18 } 19 }
19 20
20 - // 尝试更新配置  
21 - ht_cardholder.TryUpdateConfigs()  
22 -  
23 - rsp := dto.RspHtCardHolderInfo{  
24 - HtCardHolderInfo: dto.HtCardHolderInfo{  
25 - BagList: make(map[int]int),  
26 - },  
27 - }  
28 -  
29 - rsp.BagList[1] = 2  
30 - rsp.BagList[2] = 5 21 + rsp := ht_cardholder.HandleInfo(&req)
31 22
32 c.RetRspData(rsp) 23 c.RetRspData(rsp)
33 } 24 }
@@ -33,5 +33,5 @@ func main() { @@ -33,5 +33,5 @@ func main() {
33 // 初始化配置 33 // 初始化配置
34 ht_cardholder.Init() 34 ht_cardholder.Init()
35 35
36 - //beego.Run() 36 + beego.Run()
37 } 37 }
models/ht-cardholder.go
1 package models 1 package models
2 2
3 import ( 3 import (
  4 + "apigame/lx-util/lxalilog"
4 "apigame/service/constd" 5 "apigame/service/constd"
  6 + "encoding/json"
5 "github.com/astaxie/beego/orm" 7 "github.com/astaxie/beego/orm"
6 ) 8 )
7 9
8 // HtCardHolderData 卡牌活动持久数据 10 // HtCardHolderData 卡牌活动持久数据
9 type HtCardHolderData struct { 11 type HtCardHolderData struct {
10 - Uid int64 `orm:"pk"` // 玩家唯一ID  
11 - ActivityId int64 // 活动ID 12 + Uid int64 `orm:"pk"` // 玩家唯一ID
  13 + ActivityId int64 // 活动ID
  14 + DetailsData *HtCardHolderDataDetails `orm:"-"` // 活动详情
  15 + Details string `orm:"type(text)"` // 活动详情封装
  16 +}
  17 +
  18 +// HtCardHolderDataDetails 卡牌活动详情
  19 +type HtCardHolderDataDetails struct {
  20 + Cards map[int]int // 每张卡集了多少张 k=卡牌ID v=数量
  21 + StarSequenceScales map[string]int // 星级序列刻度 k=ID_用户序列_用户分组 v=刻度
  22 + CardSequenceScales map[string]int // 卡牌序列刻度 k=ID_用户序列_用户分组 v=刻度
  23 +}
  24 +
  25 +func NewHtCardHolderData(uid int64) *HtCardHolderData {
  26 + return &HtCardHolderData{
  27 + Uid: uid,
  28 + DetailsData: NewHtCardHolderDataDetails(),
  29 + }
  30 +}
  31 +
  32 +func NewHtCardHolderDataDetails() *HtCardHolderDataDetails {
  33 + return &HtCardHolderDataDetails{
  34 + Cards: make(map[int]int),
  35 + StarSequenceScales: make(map[string]int),
  36 + CardSequenceScales: make(map[string]int),
  37 + }
12 } 38 }
13 39
14 func (d *HtCardHolderData) TableName() string { 40 func (d *HtCardHolderData) TableName() string {
15 return constd.MYSQL_TABLE_S_CARD_DATA + constd.GAME_ID_HT 41 return constd.MYSQL_TABLE_S_CARD_DATA + constd.GAME_ID_HT
16 } 42 }
17 43
  44 +// Encode 打包数据
  45 +func (d *HtCardHolderData) Encode() {
  46 + details, err := json.Marshal(d.DetailsData)
  47 + if err != nil {
  48 + lxalilog.Errors(err, "HtCardHolderData Encode Error", d.Uid, d.ActivityId)
  49 + return
  50 + }
  51 + d.Details = string(details)
  52 +}
  53 +
  54 +// Decode 分包数据
  55 +func (d *HtCardHolderData) Decode() {
  56 + err := json.Unmarshal([]byte(d.Details), d.DetailsData)
  57 + if err != nil {
  58 + lxalilog.Errors(err, "HtCardHolderData Decode Error", d.Uid, d.ActivityId)
  59 + return
  60 + }
  61 +}
  62 +
18 func InitHtCardholder() { 63 func InitHtCardholder() {
19 64
20 // register model 65 // register model
service/ht-cardholder/config-registry.go
@@ -22,7 +22,7 @@ func NewRegistryConfigs() { @@ -22,7 +22,7 @@ func NewRegistryConfigs() {
22 } 22 }
23 23
24 // Decode 解析配置原始数据 24 // Decode 解析配置原始数据
25 -func (r RegistryConfigs) Decode(confRaw CardActivityConfigRaw) { 25 +func (r *RegistryConfigs) Decode(confRaw CardActivityConfigRaw) {
26 conf := CardActivityConfig{ 26 conf := CardActivityConfig{
27 Raw: confRaw, 27 Raw: confRaw,
28 Id: confRaw.Id, 28 Id: confRaw.Id,
service/ht-cardholder/handle.go 0 → 100644
@@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
  1 +package ht_cardholder
  2 +
  3 +import (
  4 + "apigame/dto"
  5 + "apigame/lx-util/lxalilog"
  6 + "apigame/models"
  7 + "apigame/service/constd"
  8 + "github.com/astaxie/beego/orm"
  9 +)
  10 +
  11 +func HandleInfo(req *dto.ReqHtCardHolderInfo) dto.RspHtCardHolderInfo {
  12 + // 尝试更新配置
  13 + TryUpdateConfigs()
  14 +
  15 + //// 测试存档
  16 + //userData := models.NewHtCardHolderData(req.UID)
  17 + //userData.ActivityId = Registry.Config.Id
  18 + //userData.DetailsData.Cards[101] = 1
  19 + //userData.DetailsData.Cards[102] = 3
  20 + //SaveData(userData)
  21 + //
  22 + //// 测试读档
  23 + //lData := LoadData(req.UID)
  24 + //logs.Debug(lData)
  25 +
  26 + rsp := dto.RspHtCardHolderInfo{
  27 + HtCardHolderInfo: dto.HtCardHolderInfo{
  28 + BagList: make(map[int]int),
  29 + },
  30 + }
  31 +
  32 + rsp.BagList[1] = 2
  33 + rsp.BagList[2] = 5
  34 +
  35 + return rsp
  36 +}
  37 +
  38 +func SaveData(d *models.HtCardHolderData) {
  39 + d.Encode()
  40 +
  41 + o := orm.NewOrm()
  42 + o.Using(constd.MYSQL_DEFAULT)
  43 + if _, err := o.InsertOrUpdate(d); err != nil {
  44 + lxalilog.Errors(err, "ht_cardholder SaveData Error", d.Uid)
  45 + }
  46 +}
  47 +
  48 +func LoadData(uid int64) (d *models.HtCardHolderData) {
  49 + d = models.NewHtCardHolderData(uid)
  50 + o := orm.NewOrm()
  51 + o.Using(constd.MYSQL_DEFAULT)
  52 + if err := o.QueryTable(d).One(d); err != nil {
  53 + lxalilog.Errors(err, "ht_cardholder LoadData Error", d.Uid)
  54 + }
  55 + d.DetailsData = models.NewHtCardHolderDataDetails()
  56 + d.Decode()
  57 + return
  58 +}