handle.go
4.16 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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
}
// 检查卡包ID
_, okCardholderConfig := Registry.Config.CardholderConfig[strconv.Itoa(req.Id)]
if !okCardholderConfig {
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()
// 检查活动状态
code = CheckStatus()
if code != constd.RECODE_OK {
return
}
//// 检查卡包ID
//confCardholder, okCardholderConfig := Registry.Config.CardholderConfig[strconv.Itoa(req.Id)]
//if !okCardholderConfig {
// code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR
// return
//}
//
//// 读取游戏数据
//gameData := LoadData(req.UID)
//
//// 判断卡包数目
//countOld, _ := gameData.DetailsData.Cardholder[req.Id]
//if countOld < 1 {
// code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR
// return
//}
//
//// 开始处理抽卡
//sequenceId, cohort := GetUserSequenceIdAndCohort(req.UID)
//// 先抽保底卡
//if confCardholder.GuaranteedStar != "0" {
// confGuaranteed, hasGuaranteed := FindCardSequenceConfig(confCardholder.GuaranteedStar, sequenceId, cohort)
// if hasGuaranteed {
//
// }
//}
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
}
// GetUserSequenceIdAndCohort 获取 用户序列组ID(sequenceId) 用户分组(cohort)
func GetUserSequenceIdAndCohort(uid int64) (sequenceId, cohort string) {
// todo 这里后续要对接
sequenceId = "1"
cohort = "1"
return
}