Commit 048f6f517d91d34858e11c5b61afabd7fd094439
1 parent
ff521f50
Exists in
master
and in
4 other branches
提交
Showing
4 changed files
with
194 additions
and
72 deletions
Show diff stats
src/HttpServer/logic/datadef.go
... | ... | @@ -76,7 +76,9 @@ type QueryguaninfoResp struct { |
76 | 76 | } |
77 | 77 | |
78 | 78 | type GetguangoldReq struct { |
79 | - Goldnum int `json:"goldnum"` | |
79 | + Goldnum int `json:"goldnum"` | |
80 | + Gameid string `json:"gameid"` | |
81 | + Channel string `json:"channel"` | |
80 | 82 | } |
81 | 83 | |
82 | 84 | type GetguangoldData struct { |
... | ... | @@ -123,6 +125,11 @@ type GetcashReq struct { |
123 | 125 | Ver string `json:"ver"` |
124 | 126 | } |
125 | 127 | |
128 | +type CommReq struct { | |
129 | + Gameid string `json:"gameid"` | |
130 | + Channel string `json:"channel"` | |
131 | +} | |
132 | + | |
126 | 133 | type GetcashData struct { |
127 | 134 | Walletgold int `json:"walletgold"` |
128 | 135 | } |
... | ... | @@ -149,8 +156,10 @@ type OnlinentfResp struct { |
149 | 156 | } |
150 | 157 | |
151 | 158 | type UpdatetaskReq struct { |
152 | - Tasktype int `json:"tasktype"` | |
153 | - Value int `json:"value"` | |
159 | + Tasktype int `json:"tasktype"` | |
160 | + Value int `json:"value"` | |
161 | + Gameid string `json:"gameid"` | |
162 | + Channel string `json:"channel"` | |
154 | 163 | } |
155 | 164 | |
156 | 165 | type UpdatetaskResp struct { |
... | ... | @@ -159,7 +168,9 @@ type UpdatetaskResp struct { |
159 | 168 | } |
160 | 169 | |
161 | 170 | type QuerytaskinfoReq struct { |
162 | - Tasktype int `json:"tasktype"` | |
171 | + Tasktype int `json:"tasktype"` | |
172 | + Gameid string `json:"gameid"` | |
173 | + Channel string `json:"channel"` | |
163 | 174 | } |
164 | 175 | |
165 | 176 | type QuerytaskinfoResp struct { |
... | ... | @@ -290,7 +301,7 @@ type WithDrawDesc struct { |
290 | 301 | |
291 | 302 | //玩家数据 |
292 | 303 | type UserData struct { |
293 | - Userid int //玩家id | |
304 | + Userid string //玩家id | |
294 | 305 | Lv int //玩家当前等级 |
295 | 306 | LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 |
296 | 307 | Exp int //玩家当前经验值 | ... | ... |
src/HttpServer/logic/function.go
... | ... | @@ -45,14 +45,14 @@ func SaveUserInfo(data *UserData) error { |
45 | 45 | return err |
46 | 46 | } |
47 | 47 | |
48 | - err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, strconv.Itoa(data.Userid), string(savestr)) | |
48 | + err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, data.Userid, string(savestr)) | |
49 | 49 | |
50 | 50 | return err |
51 | 51 | } |
52 | 52 | |
53 | -func GetUserInfo(uuid int) (*UserData, error) { | |
53 | +func GetUserInfo(uniqueid string) (*UserData, error) { | |
54 | 54 | |
55 | - data, err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY, strconv.Itoa(uuid)) | |
55 | + data, err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY, uniqueid) | |
56 | 56 | if err != nil { |
57 | 57 | return nil, err |
58 | 58 | } |
... | ... | @@ -276,7 +276,7 @@ func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList { |
276 | 276 | return newlist |
277 | 277 | } |
278 | 278 | |
279 | -func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { | |
279 | +func SaveTaskInfo(uuid string, tasktype int, list *TaskList) error { | |
280 | 280 | savestr, err := json.Marshal(list) |
281 | 281 | if err != nil { |
282 | 282 | logger.Error("SaveTaskInfo err =%v", err) |
... | ... | @@ -284,9 +284,9 @@ func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { |
284 | 284 | } |
285 | 285 | |
286 | 286 | if tasktype == 1 { |
287 | - err = redishandler.GetRedisClient().HSet(redis.USER_TASKINFO_LIST, strconv.Itoa(uuid), string(savestr)) | |
287 | + err = redishandler.GetRedisClient().HSet(redis.USER_TASKINFO_LIST, uuid, string(savestr)) | |
288 | 288 | } else if tasktype == 2 { |
289 | - err = redishandler.GetRedisClient().HSet(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid), string(savestr)) | |
289 | + err = redishandler.GetRedisClient().HSet(redis.USER_ACHIEVEMENTINFO_LIST, uuid, string(savestr)) | |
290 | 290 | //logger.Info("SaveTaskInfo savestr=%v", string(savestr)) |
291 | 291 | } else { |
292 | 292 | logger.Error("tasktype invalid") |
... | ... | @@ -295,13 +295,28 @@ func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { |
295 | 295 | return err |
296 | 296 | } |
297 | 297 | |
298 | -func GetTaskInfo(uuid, tasktype int) (*TaskList, error) { | |
298 | +func GetTaskInfo(uuid int, tasktype int, channel string) (*TaskList, error) { | |
299 | + unqiueuuid := strconv.Itoa(uuid) + channel | |
299 | 300 | var data string |
300 | 301 | var err error |
301 | 302 | if tasktype == 1 { |
302 | - data, err = redishandler.GetRedisClient().HGet(redis.USER_TASKINFO_LIST, strconv.Itoa(uuid)) | |
303 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_TASKINFO_LIST, unqiueuuid) | |
303 | 304 | } else if tasktype == 2 { |
304 | - data, err = redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid)) | |
305 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, unqiueuuid) | |
306 | + //成就这一块需要兼容老的数据 | |
307 | + if err != nil { | |
308 | + //没有读到数据 则去读取一下老的id | |
309 | + olddata, err := redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid)) | |
310 | + if err == nil { | |
311 | + err = redishandler.GetRedisClient().HSet(redis.USER_ACHIEVEMENTINFO_LIST, unqiueuuid, olddata) | |
312 | + if err == nil { | |
313 | + //删除老的数据 以后都走新的数据 | |
314 | + err = redishandler.GetRedisClient().HDel(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid)) | |
315 | + | |
316 | + } | |
317 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, unqiueuuid) | |
318 | + } | |
319 | + } | |
305 | 320 | } else { |
306 | 321 | logger.Error("tasktype invalid") |
307 | 322 | return nil, errors.New("tasktype invalid") |
... | ... | @@ -322,7 +337,7 @@ func GetTaskInfo(uuid, tasktype int) (*TaskList, error) { |
322 | 337 | } |
323 | 338 | |
324 | 339 | //处理领取任务 |
325 | -func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *GettaskrewardResp, list *TaskList) error { | |
340 | +func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *GettaskrewardResp, list *TaskList, uuid int) error { | |
326 | 341 | isfind := false |
327 | 342 | index := -1 |
328 | 343 | var taskdesc *TaskListDesc |
... | ... | @@ -385,7 +400,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *Gettaskr |
385 | 400 | for i := 0; i < sub; i++ { |
386 | 401 | rtype := cfg.Reward[i*2] |
387 | 402 | rnum := cfg.Reward[i*2+1] |
388 | - r1, r2, r3, r4, r5, r6, r7 := uinfo.RewardUser(rtype, rnum, req.Gameid, req.Channel) | |
403 | + r1, r2, r3, r4, r5, r6, r7 := uinfo.RewardUser(rtype, rnum, req.Gameid, req.Channel, uuid) | |
389 | 404 | if resp.Data.Lv != r1 { |
390 | 405 | resp.Data.Lv = r1 |
391 | 406 | resp.Data.Costtime = uinfo.UpLvCostTime / 3600 |
... | ... | @@ -401,7 +416,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *Gettaskr |
401 | 416 | return nil |
402 | 417 | } |
403 | 418 | |
404 | -func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel string) (int, int, int, int, int, int, int) { | |
419 | +func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel string, uuid int) (int, int, int, int, int, int, int) { | |
405 | 420 | logger.Info("RewardUser rtype=%v,num=%v", rtype, num) |
406 | 421 | switch rtype { |
407 | 422 | case REWARDTYPE_STAR: |
... | ... | @@ -422,7 +437,7 @@ func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel str |
422 | 437 | return 0, 0, 0, 0, 0, 0, 0 |
423 | 438 | } |
424 | 439 | case REWARDTYPE_GOLD: |
425 | - goldnum, err := AddCoinToSdk(uinfo.Userid, num, gameid, channel, 102) | |
440 | + goldnum, err := AddCoinToSdk(uuid, num, gameid, channel, 102) | |
426 | 441 | if err != nil { |
427 | 442 | logger.Error("RewardUser failer err=%v", err) |
428 | 443 | } |
... | ... | @@ -435,13 +450,13 @@ func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel str |
435 | 450 | return 0, 0, 0, 0, 0, 0, 0 |
436 | 451 | } |
437 | 452 | |
438 | -func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error { | |
453 | +func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int, uniqueuid string) error { | |
439 | 454 | |
440 | 455 | var initdata UserData |
441 | 456 | initdata.Lv = 1 |
442 | 457 | initdata.LvRewardGet = 1 |
443 | 458 | initdata.Exp = 0 |
444 | - initdata.Userid = uuid | |
459 | + initdata.Userid = uniqueuid //加上渠道的唯一id | |
445 | 460 | initdata.ContinueLoginDay = 1 |
446 | 461 | initdata.GetFromGuanCnt = 0 |
447 | 462 | initdata.GuanGold = 0 |
... | ... | @@ -483,7 +498,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error { |
483 | 498 | } |
484 | 499 | |
485 | 500 | //初始化一下玩家的任务与成就数据数据 |
486 | - err = InitTaskAndAchievement(uuid) | |
501 | + err = InitTaskAndAchievement(uuid, data.Channel) | |
487 | 502 | |
488 | 503 | return err |
489 | 504 | } |
... | ... | @@ -497,9 +512,10 @@ func (t *TaskList) IsInTaskList(id int) bool { |
497 | 512 | return false |
498 | 513 | } |
499 | 514 | |
500 | -func InitTaskAndAchievement(uuid int) error { | |
515 | +func InitTaskAndAchievement(uuid int, channel string) error { | |
516 | + unqiueid := strconv.Itoa(uuid) + channel | |
501 | 517 | //先初始化任务 |
502 | - tlist, err := GetTaskInfo(uuid, 1) | |
518 | + tlist, err := GetTaskInfo(uuid, 1, channel) | |
503 | 519 | if tlist == nil { |
504 | 520 | tasklist := new(TaskList) |
505 | 521 | for _, val := range jsonconf.GetJsonConf().TaskConfig { |
... | ... | @@ -510,7 +526,7 @@ func InitTaskAndAchievement(uuid int) error { |
510 | 526 | tasklist.Taskdata = append(tasklist.Taskdata, tmp) |
511 | 527 | } |
512 | 528 | |
513 | - err := SaveTaskInfo(uuid, 1, tasklist) | |
529 | + err := SaveTaskInfo(unqiueid, 1, tasklist) | |
514 | 530 | if err != nil { |
515 | 531 | logger.Error("InitTaskAndAchievement err=%v", err) |
516 | 532 | //return err |
... | ... | @@ -532,7 +548,7 @@ func InitTaskAndAchievement(uuid int) error { |
532 | 548 | |
533 | 549 | } |
534 | 550 | |
535 | - err := SaveTaskInfo(uuid, 1, tlist) | |
551 | + err := SaveTaskInfo(unqiueid, 1, tlist) | |
536 | 552 | if err != nil { |
537 | 553 | logger.Error("InitTaskAndAchievement err=%v", err) |
538 | 554 | //return err |
... | ... | @@ -540,7 +556,7 @@ func InitTaskAndAchievement(uuid int) error { |
540 | 556 | } |
541 | 557 | |
542 | 558 | //成就 |
543 | - alist, err := GetTaskInfo(uuid, 2) | |
559 | + alist, err := GetTaskInfo(uuid, 2, channel) | |
544 | 560 | if alist == nil { |
545 | 561 | achievelist := new(TaskList) |
546 | 562 | for _, val := range jsonconf.GetJsonConf().AchieventConfig { |
... | ... | @@ -551,7 +567,7 @@ func InitTaskAndAchievement(uuid int) error { |
551 | 567 | achievelist.Taskdata = append(achievelist.Taskdata, tmp) |
552 | 568 | } |
553 | 569 | |
554 | - err = SaveTaskInfo(uuid, 2, achievelist) | |
570 | + err = SaveTaskInfo(unqiueid, 2, achievelist) | |
555 | 571 | if err != nil { |
556 | 572 | logger.Error("InitTaskAndAchievement err=%v", err) |
557 | 573 | return err |
... | ... | @@ -567,7 +583,7 @@ func InitTaskAndAchievement(uuid int) error { |
567 | 583 | } |
568 | 584 | } |
569 | 585 | |
570 | - err = SaveTaskInfo(uuid, 2, alist) | |
586 | + err = SaveTaskInfo(unqiueid, 2, alist) | |
571 | 587 | if err != nil { |
572 | 588 | logger.Error("InitTaskAndAchievement err=%v", err) |
573 | 589 | return err |
... | ... | @@ -596,7 +612,7 @@ func (u *UserData) CalcTotalCnt() int { |
596 | 612 | return usertime |
597 | 613 | } |
598 | 614 | |
599 | -func (u *UserData) HandlePassDay() { | |
615 | +func (u *UserData) HandlePassDay(uuid int, channel string) { | |
600 | 616 | isdiffday := false |
601 | 617 | nowtime := time.Now() |
602 | 618 | lasttime := time.Unix(int64(u.LastLoginTime), 0) |
... | ... | @@ -663,7 +679,7 @@ func (u *UserData) HandlePassDay() { |
663 | 679 | if err != nil { |
664 | 680 | logger.Error("InitTaskAndAchievement err=%v", err) |
665 | 681 | }*/ |
666 | - err := InitTaskAndAchievement(u.Userid) | |
682 | + err := InitTaskAndAchievement(uuid, channel) | |
667 | 683 | if err != nil { |
668 | 684 | logger.Error("InitTaskAndAchievement err=%v", err) |
669 | 685 | } |
... | ... | @@ -682,8 +698,8 @@ func (u *UserData) HandlePassDay() { |
682 | 698 | SaveUserInfo(u) |
683 | 699 | } |
684 | 700 | |
685 | -func GetUserData(uuid int, req *UserLoginReq, resp *UserLoginResp) error { | |
686 | - data, err := GetUserInfo(uuid) | |
701 | +func GetUserData(uuid int, uniqueuid string, req *UserLoginReq, resp *UserLoginResp) error { | |
702 | + data, err := GetUserInfo(uniqueuid) | |
687 | 703 | if err != nil || data == nil { |
688 | 704 | resp.Code = ERROR_SRV_ERROR |
689 | 705 | resp.Message = "ERROR_SRV_ERROR" |
... | ... | @@ -691,7 +707,7 @@ func GetUserData(uuid int, req *UserLoginReq, resp *UserLoginResp) error { |
691 | 707 | } |
692 | 708 | |
693 | 709 | //此处要处理一下跨天逻辑 |
694 | - data.HandlePassDay() | |
710 | + data.HandlePassDay(uuid, req.Channel) | |
695 | 711 | |
696 | 712 | //此处处理一下从sdk拉取钱包金币数量 |
697 | 713 | gold, err := GetCoinFromSdk(uuid, req.Gameid, req.Channel) | ... | ... |
src/HttpServer/logic/httpserver.go
... | ... | @@ -137,9 +137,11 @@ func Querysigndata(w http.ResponseWriter, r *http.Request) { |
137 | 137 | func Addcoin(w http.ResponseWriter, r *http.Request) { |
138 | 138 | SetHeader(w) |
139 | 139 | query := r.URL.Query() |
140 | - uuid := query.Get("uuid") | |
140 | + uuid := query.Get("uuid") //需要加上渠道号 460012 | |
141 | + channel := query.Get("channel") | |
141 | 142 | uuidnum, _ := strconv.Atoi(uuid) |
142 | - uinfo, err := GetUserInfo(uuidnum) | |
143 | + uniqueuuid := uuid + channel | |
144 | + uinfo, err := GetUserInfo(uniqueuuid) | |
143 | 145 | if err != nil || uinfo == nil { |
144 | 146 | logger.Error("redis failed err=%v", err) |
145 | 147 | fmt.Fprint(w, "failed") |
... | ... | @@ -187,7 +189,9 @@ func Testapi(w http.ResponseWriter, r *http.Request) { |
187 | 189 | return |
188 | 190 | } |
189 | 191 | |
190 | - uinfo, err := GetUserInfo(Uuid) | |
192 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
193 | + uniqueuuid := strconv.Itoa(Uuid) + rdata.Channel | |
194 | + uinfo, err := GetUserInfo(uniqueuuid) | |
191 | 195 | if err != nil || uinfo == nil { |
192 | 196 | logger.Error("redis failed err=%v", err) |
193 | 197 | fmt.Fprint(w, "failed") | ... | ... |
src/HttpServer/logic/logic.go
... | ... | @@ -9,15 +9,24 @@ import ( |
9 | 9 | "fmt" |
10 | 10 | "net/http" |
11 | 11 | "strconv" |
12 | - "time" | |
13 | 12 | ) |
14 | 13 | |
15 | 14 | func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) { |
16 | 15 | SetHeader(w) |
17 | 16 | var resp QueryguaninfoResp |
18 | 17 | resp.Code = 0 |
18 | + var rdata CommReq | |
19 | + err := json.Unmarshal([]byte(data), &rdata) | |
19 | 20 | for { |
20 | - uinfo, err := GetUserInfo(uuid) | |
21 | + if err != nil { | |
22 | + logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data) | |
23 | + resp.Message = "json解析错误" | |
24 | + resp.Code = ERROR_JSONUNMASH_ERROR | |
25 | + break | |
26 | + } | |
27 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
28 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
29 | + uinfo, err := GetUserInfo(uniqueuuid) | |
21 | 30 | if err != nil || uinfo == nil { |
22 | 31 | logger.Error("redis failed err=%v", err) |
23 | 32 | resp.Message = "服务器错误" |
... | ... | @@ -25,7 +34,7 @@ func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) { |
25 | 34 | break |
26 | 35 | } |
27 | 36 | |
28 | - uinfo.HandlePassDay() | |
37 | + uinfo.HandlePassDay(uuid, rdata.Channel) | |
29 | 38 | |
30 | 39 | //获取存钱罐等级配置 |
31 | 40 | mcfg := jsonconf.GetMoneyBoxCfg(uinfo.Lv) |
... | ... | @@ -59,7 +68,7 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) { |
59 | 68 | var resp WatchadsResp |
60 | 69 | resp.Code = 0 |
61 | 70 | |
62 | - for { | |
71 | + /*for { | |
63 | 72 | uinfo, err := GetUserInfo(uuid) |
64 | 73 | if err != nil || uinfo == nil { |
65 | 74 | logger.Error("redis failed err=%v", err) |
... | ... | @@ -91,7 +100,7 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) { |
91 | 100 | |
92 | 101 | //回包 |
93 | 102 | respstr, _ := json.Marshal(&resp) |
94 | - fmt.Fprint(w, string(respstr)) | |
103 | + fmt.Fprint(w, string(respstr))*/ | |
95 | 104 | } |
96 | 105 | |
97 | 106 | func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { |
... | ... | @@ -112,7 +121,9 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { |
112 | 121 | rdata.Ver = "2.0.0" |
113 | 122 | }*/ |
114 | 123 | |
115 | - uinfo, err := GetUserInfo(uuid) | |
124 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
125 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
126 | + uinfo, err := GetUserInfo(uniqueuuid) | |
116 | 127 | if err != nil || uinfo == nil { |
117 | 128 | logger.Error("redis failed err=%v", err) |
118 | 129 | resp.Message = "服务器错误" |
... | ... | @@ -186,16 +197,16 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { |
186 | 197 | } |
187 | 198 | |
188 | 199 | //需要保存一下提现记录 |
189 | - sdata := new(WithDrawRecord) | |
190 | - sdata.Coin = int(rdata.Money * 100) | |
191 | - sdata.Create_time = int(time.Now().Unix()) | |
192 | - err = AddWithDrawList(uuid, sdata) | |
193 | - if err != nil { | |
194 | - logger.Error("AddWithDrawList failed err=%v", err) | |
195 | - /*resp.Message = "网络错误" | |
196 | - resp.Code = ERROR_SRV_ERROR | |
197 | - break*/ | |
198 | - } | |
200 | + /* sdata := new(WithDrawRecord) | |
201 | + sdata.Coin = int(rdata.Money * 100) | |
202 | + sdata.Create_time = int(time.Now().Unix()) | |
203 | + err = AddWithDrawList(uuid, sdata) | |
204 | + if err != nil { | |
205 | + logger.Error("AddWithDrawList failed err=%v", err) | |
206 | + resp.Message = "网络错误" | |
207 | + resp.Code = ERROR_SRV_ERROR | |
208 | + break | |
209 | + }*/ | |
199 | 210 | |
200 | 211 | if info.Isnew == 1 { |
201 | 212 | uinfo.WithDraw.Cashdata[index].Isnew = 0 |
... | ... | @@ -221,10 +232,19 @@ func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { |
221 | 232 | SetHeader(w) |
222 | 233 | var resp QuerysigndataResp |
223 | 234 | resp.Code = 0 |
224 | - | |
235 | + var rdata CommReq | |
236 | + err := json.Unmarshal([]byte(data), &rdata) | |
225 | 237 | for { |
226 | 238 | |
227 | - uinfo, err := GetUserInfo(uuid) | |
239 | + if err != nil { | |
240 | + logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data) | |
241 | + resp.Message = "json解析错误" | |
242 | + resp.Code = ERROR_JSONUNMASH_ERROR | |
243 | + break | |
244 | + } | |
245 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
246 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
247 | + uinfo, err := GetUserInfo(uniqueuuid) | |
228 | 248 | if err != nil || uinfo == nil { |
229 | 249 | logger.Error("redis failed err=%v", err) |
230 | 250 | resp.Message = "服务器错误" |
... | ... | @@ -233,7 +253,7 @@ func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { |
233 | 253 | } |
234 | 254 | |
235 | 255 | //此处要处理一下跨天逻辑 |
236 | - uinfo.HandlePassDay() | |
256 | + uinfo.HandlePassDay(uuid, rdata.Channel) | |
237 | 257 | |
238 | 258 | resp.Data.Continuessign = uinfo.SignSum |
239 | 259 | resp.Data.IssignToday = uinfo.IsSignToday |
... | ... | @@ -263,7 +283,9 @@ func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) { |
263 | 283 | resp.Code = ERROR_JSONUNMASH_ERROR |
264 | 284 | break |
265 | 285 | } |
266 | - uinfo, err := GetUserInfo(uuid) | |
286 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
287 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
288 | + uinfo, err := GetUserInfo(uniqueuuid) | |
267 | 289 | if err != nil || uinfo == nil { |
268 | 290 | logger.Error("redis failed err=%v", err) |
269 | 291 | resp.Message = "服务器错误" |
... | ... | @@ -339,7 +361,10 @@ func HandlerUsersign(w http.ResponseWriter, data string, uuid int) { |
339 | 361 | resp.Code = ERROR_JSONUNMASH_ERROR |
340 | 362 | break |
341 | 363 | } |
342 | - uinfo, err := GetUserInfo(uuid) | |
364 | + | |
365 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
366 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
367 | + uinfo, err := GetUserInfo(uniqueuuid) | |
343 | 368 | if err != nil || uinfo == nil { |
344 | 369 | logger.Error("redis failed err=%v", err) |
345 | 370 | resp.Message = "服务器错误" |
... | ... | @@ -415,7 +440,10 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { |
415 | 440 | resp.Code = ERROR_JSONUNMASH_ERROR |
416 | 441 | break |
417 | 442 | } |
418 | - uinfo, err := GetUserInfo(uuid) | |
443 | + | |
444 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
445 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
446 | + uinfo, err := GetUserInfo(uniqueuuid) | |
419 | 447 | if err != nil || uinfo == nil { |
420 | 448 | logger.Error("redis failed err=%v", err) |
421 | 449 | resp.Message = "服务器错误" |
... | ... | @@ -426,7 +454,7 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { |
426 | 454 | //需要先计算出任务或者成就 |
427 | 455 | var tasklist *TaskList |
428 | 456 | //先查询一下当前的任务数据 |
429 | - tasklist, err = GetTaskInfo(uuid, rdata.Tasktype) | |
457 | + tasklist, err = GetTaskInfo(uuid, rdata.Tasktype, rdata.Channel) | |
430 | 458 | if err != nil || tasklist == nil { |
431 | 459 | logger.Error("GetTaskInfo failed err=%v", err) |
432 | 460 | resp.Message = "服务器错误" |
... | ... | @@ -434,7 +462,7 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { |
434 | 462 | break |
435 | 463 | } |
436 | 464 | |
437 | - err = uinfo.HandleGetTaskReward(&rdata, &resp, tasklist) | |
465 | + err = uinfo.HandleGetTaskReward(&rdata, &resp, tasklist, uuid) | |
438 | 466 | logger.Info("HandlerGettaskreward tasklist=%v", tasklist) |
439 | 467 | logger.Info("HandlerGettaskreward uinfo=%v", uinfo) |
440 | 468 | if err != nil { |
... | ... | @@ -471,7 +499,9 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) { |
471 | 499 | resp.Code = ERROR_JSONUNMASH_ERROR |
472 | 500 | break |
473 | 501 | } |
474 | - uinfo, err := GetUserInfo(uuid) | |
502 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
503 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
504 | + uinfo, err := GetUserInfo(uniqueuuid) | |
475 | 505 | if err != nil || uinfo == nil { |
476 | 506 | logger.Error("redis failed err=%v", err) |
477 | 507 | resp.Message = "服务器错误" |
... | ... | @@ -479,12 +509,12 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) { |
479 | 509 | break |
480 | 510 | } |
481 | 511 | |
482 | - uinfo.HandlePassDay() | |
512 | + uinfo.HandlePassDay(uuid, rdata.Channel) | |
483 | 513 | |
484 | 514 | //需要先计算出任务或者成就 |
485 | 515 | var tasklist *TaskList |
486 | 516 | //先查询一下当前的任务数据 |
487 | - tasklist, err = GetTaskInfo(uuid, rdata.Tasktype) | |
517 | + tasklist, err = GetTaskInfo(uuid, rdata.Tasktype, rdata.Channel) | |
488 | 518 | if err != nil || tasklist == nil { |
489 | 519 | logger.Error("redis failed err=%v", err) |
490 | 520 | resp.Message = "服务器错误" |
... | ... | @@ -534,7 +564,9 @@ func HandlerUpdatetaskandachieve(w http.ResponseWriter, data string, uuid int) { |
534 | 564 | resp.Code = ERROR_JSONUNMASH_ERROR |
535 | 565 | break |
536 | 566 | } |
537 | - uinfo, err := GetUserInfo(uuid) | |
567 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
568 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
569 | + uinfo, err := GetUserInfo(uniqueuuid) | |
538 | 570 | if err != nil || uinfo == nil { |
539 | 571 | logger.Error("redis failed err=%v", err) |
540 | 572 | resp.Message = "服务器错误" |
... | ... | @@ -577,9 +609,19 @@ func HandlerOnlinentf(w http.ResponseWriter, data string, uuid int) { |
577 | 609 | SetHeader(w) |
578 | 610 | var resp OnlinentfResp |
579 | 611 | resp.Code = 0 |
612 | + var rdata CommReq | |
613 | + err := json.Unmarshal([]byte(data), &rdata) | |
580 | 614 | for { |
581 | 615 | |
582 | - uinfo, err := GetUserInfo(uuid) | |
616 | + if err != nil { | |
617 | + logger.Info("json decode HandlerOnlinentf data failed:%v,for:%v", err, data) | |
618 | + resp.Message = "json解析错误" | |
619 | + resp.Code = ERROR_JSONUNMASH_ERROR | |
620 | + break | |
621 | + } | |
622 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
623 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
624 | + uinfo, err := GetUserInfo(uniqueuuid) | |
583 | 625 | if err != nil || uinfo == nil { |
584 | 626 | logger.Error("redis failed err=%v", err) |
585 | 627 | resp.Message = "服务器错误" |
... | ... | @@ -646,8 +688,19 @@ func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uuid int) { |
646 | 688 | SetHeader(w) |
647 | 689 | var resp QuerdrawinfoResp |
648 | 690 | resp.Code = 0 |
691 | + var rdata CommReq | |
692 | + err := json.Unmarshal([]byte(data), &rdata) | |
649 | 693 | for { |
650 | - uinfo, err := GetUserInfo(uuid) | |
694 | + | |
695 | + if err != nil { | |
696 | + logger.Info("json decode HandlerQuerdrawinfo data failed:%v,for:%v", err, data) | |
697 | + resp.Message = "json解析错误" | |
698 | + resp.Code = ERROR_JSONUNMASH_ERROR | |
699 | + break | |
700 | + } | |
701 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
702 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
703 | + uinfo, err := GetUserInfo(uniqueuuid) | |
651 | 704 | if err != nil || uinfo == nil { |
652 | 705 | logger.Error("redis failed err=%v", err) |
653 | 706 | resp.Message = "服务器错误" |
... | ... | @@ -682,7 +735,9 @@ func HandlerDrawguangold(w http.ResponseWriter, data string, uuid int) { |
682 | 735 | break |
683 | 736 | } |
684 | 737 | |
685 | - uinfo, err := GetUserInfo(uuid) | |
738 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
739 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
740 | + uinfo, err := GetUserInfo(uniqueuuid) | |
686 | 741 | if err != nil || uinfo == nil { |
687 | 742 | logger.Error("redis failed err=%v", err) |
688 | 743 | resp.Message = "服务器错误" |
... | ... | @@ -767,7 +822,9 @@ func HandlerGetguangold(w http.ResponseWriter, data string, uuid int) { |
767 | 822 | break |
768 | 823 | } |
769 | 824 | |
770 | - uinfo, err := GetUserInfo(uuid) | |
825 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
826 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
827 | + uinfo, err := GetUserInfo(uniqueuuid) | |
771 | 828 | if err != nil || uinfo == nil { |
772 | 829 | logger.Error("redis failed err=%v", err) |
773 | 830 | resp.Message = "服务器错误" |
... | ... | @@ -818,7 +875,9 @@ func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) { |
818 | 875 | break |
819 | 876 | } |
820 | 877 | |
821 | - data, err := GetUserInfo(uuid) | |
878 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
879 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
880 | + data, err := GetUserInfo(uniqueuuid) | |
822 | 881 | if err != nil || data == nil { |
823 | 882 | resp.Code = ERROR_SRV_ERROR |
824 | 883 | resp.Message = "ERROR_SRV_ERROR" |
... | ... | @@ -854,6 +913,7 @@ func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) { |
854 | 913 | |
855 | 914 | func HandlerLogin(w http.ResponseWriter, data string, uuid int) { |
856 | 915 | SetHeader(w) |
916 | + | |
857 | 917 | var resp UserLoginResp |
858 | 918 | resp.Code = 0 |
859 | 919 | var rdata UserLoginReq |
... | ... | @@ -866,8 +926,11 @@ func HandlerLogin(w http.ResponseWriter, data string, uuid int) { |
866 | 926 | break |
867 | 927 | } |
868 | 928 | |
929 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
930 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
931 | + //此处需要做一下数据兼容 先判断uuid+channel的key是否存在 | |
869 | 932 | //先判断一下是否是新用户 |
870 | - isexist, err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, strconv.Itoa(uuid)) | |
933 | + isexist, err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, uniqueuuid) | |
871 | 934 | if err != nil { |
872 | 935 | logger.Error("redis failed err=%v", err) |
873 | 936 | resp.Message = "服务器错误" |
... | ... | @@ -878,10 +941,38 @@ func HandlerLogin(w http.ResponseWriter, data string, uuid int) { |
878 | 941 | if !isexist { |
879 | 942 | //不存在 |
880 | 943 | //属于新登录的玩家数据 |
881 | - err = InitUserInfo(&rdata, &resp, uuid) | |
944 | + //需要判断是否存在老的版本的数据 | |
945 | + isexist, err = redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, strconv.Itoa(uuid)) | |
946 | + if err == nil && isexist { | |
947 | + //如果存在老的数据 做数据迁移 | |
948 | + oldstr, err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY, strconv.Itoa(uuid)) | |
949 | + if err != nil { | |
950 | + logger.Error("HandlerLogin redis failed err=%v,uuid=%v", err, uuid) | |
951 | + resp.Message = "服务器错误" | |
952 | + resp.Code = ERROR_SRV_ERROR | |
953 | + break | |
954 | + } | |
955 | + err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, uniqueuuid, oldstr) | |
956 | + if err != nil { | |
957 | + logger.Error("HandlerLogin redis failed err=%v,uuid=%v", err, uuid) | |
958 | + resp.Message = "服务器错误" | |
959 | + resp.Code = ERROR_SRV_ERROR | |
960 | + break | |
961 | + } | |
962 | + err = GetUserData(uuid, uniqueuuid, &rdata, &resp) | |
963 | + if err == nil { | |
964 | + //删除老的数据 | |
965 | + redishandler.GetRedisClient().HDel(redis.USER_DATA_KEY, strconv.Itoa(uuid)) | |
966 | + } | |
967 | + } else { | |
968 | + //不存在老的数据 之间走新号流程 | |
969 | + err = InitUserInfo(&rdata, &resp, uuid, uniqueuuid) | |
970 | + } | |
971 | + | |
882 | 972 | } else { |
973 | + //已经迁移过的数据之间返回 | |
883 | 974 | //已经登陆过了 需要获取玩家数据 |
884 | - err = GetUserData(uuid, &rdata, &resp) | |
975 | + err = GetUserData(uuid, uniqueuuid, &rdata, &resp) | |
885 | 976 | } |
886 | 977 | |
887 | 978 | if err != nil { | ... | ... |