handle.go
3.04 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package ht_cardholder
import (
"apigame/dto"
"apigame/lx-util/lxalilog"
"apigame/lx-util/lxtime"
"apigame/models"
"apigame/service/constd"
"github.com/astaxie/beego/orm"
"strconv"
)
// HandleInfo 卡包信息
func HandleInfo(req *dto.ReqHtCardHolderInfo) (code string, rsp dto.RspHtCardHolderInfo) {
rsp = dto.RspHtCardHolderInfo{}
code = constd.RECODE_OK
// 尝试更新配置
TryUpdateConfigs()
// 读取游戏数据
gameData := LoadData(req.UID)
rsp.HtCardHolderInfo = gameData.GetInfo()
return
}
// HandleGetNew 获取卡包
func HandleGetNew(req *dto.ReqHtCardHolderGetNew) (code string, rsp dto.RspHtCardHolderGetNew) {
rsp = dto.RspHtCardHolderGetNew{}
code = constd.RECODE_OK
// 尝试更新配置
TryUpdateConfigs()
code = CheckStatus()
if code != constd.RECODE_OK {
return
}
if _, ok := Registry.Config.CardholderConfig[strconv.Itoa(req.Id)]; !ok {
code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR
return
}
if req.Count < 1 {
code = constd.RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR
return
}
// 读取游戏数据
gameData := LoadData(req.UID)
gameData.DetailsData.Cardholder[req.Id] += req.Count
SaveData(gameData)
rsp.HtCardHolderInfo = gameData.GetInfo()
return
}
// HandleOpen 打开卡包
func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHolderOpen) {
rsp = dto.RspHtCardHolderOpen{}
code = constd.RECODE_OK
// 尝试更新配置
TryUpdateConfigs()
// 读取游戏数据
//gameData := LoadData(req.UID)
return
}
// SaveData 存储数据
func SaveData(d *models.HtCardHolderData) {
d.UpdateTime = lxtime.NowUninx()
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)
qs := o.QueryTable(d)
qs = qs.Filter("uid", uid)
count, err := qs.Count()
if count == 0 {
d.CreateTime = lxtime.NowUninx()
} else {
err = qs.One(d)
if err != nil {
lxalilog.Errors(err, "ht_cardholder LoadData Error", uid)
} else {
d.DetailsData = models.NewHtCardHolderDataDetails()
d.Decode()
}
}
return
}
// LoadData 获取数据 外部接口
func LoadData(uid int64) (d *models.HtCardHolderData) {
d = _LoadData(uid)
// 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
if Registry.Config.Id != 0 &&
Registry.Config.Id != d.ActivityId {
d.ActivityId = Registry.Config.Id
d.DetailsData = models.NewHtCardHolderDataDetails()
SaveData(d)
}
return
}
// CheckStatus 判断活动是否开启
func CheckStatus() string {
sec := lxtime.NowUninx()
if Registry.Config.Id == 0 {
return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR
}
if sec < Registry.Config.Raw.StartTime {
return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR
}
if sec > Registry.Config.Raw.EndTime {
return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR
}
return constd.RECODE_OK
}