Commit 048f6f517d91d34858e11c5b61afabd7fd094439

Authored by 陆恒
1 parent ff521f50

提交

src/HttpServer/logic/datadef.go
@@ -76,7 +76,9 @@ type QueryguaninfoResp struct { @@ -76,7 +76,9 @@ type QueryguaninfoResp struct {
76 } 76 }
77 77
78 type GetguangoldReq struct { 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 type GetguangoldData struct { 84 type GetguangoldData struct {
@@ -123,6 +125,11 @@ type GetcashReq struct { @@ -123,6 +125,11 @@ type GetcashReq struct {
123 Ver string `json:"ver"` 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 type GetcashData struct { 133 type GetcashData struct {
127 Walletgold int `json:"walletgold"` 134 Walletgold int `json:"walletgold"`
128 } 135 }
@@ -149,8 +156,10 @@ type OnlinentfResp struct { @@ -149,8 +156,10 @@ type OnlinentfResp struct {
149 } 156 }
150 157
151 type UpdatetaskReq struct { 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 type UpdatetaskResp struct { 165 type UpdatetaskResp struct {
@@ -159,7 +168,9 @@ type UpdatetaskResp struct { @@ -159,7 +168,9 @@ type UpdatetaskResp struct {
159 } 168 }
160 169
161 type QuerytaskinfoReq struct { 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 type QuerytaskinfoResp struct { 176 type QuerytaskinfoResp struct {
@@ -290,7 +301,7 @@ type WithDrawDesc struct { @@ -290,7 +301,7 @@ type WithDrawDesc struct {
290 301
291 //玩家数据 302 //玩家数据
292 type UserData struct { 303 type UserData struct {
293 - Userid int //玩家id 304 + Userid string //玩家id
294 Lv int //玩家当前等级 305 Lv int //玩家当前等级
295 LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 306 LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取
296 Exp int //玩家当前经验值 307 Exp int //玩家当前经验值
src/HttpServer/logic/function.go
@@ -45,14 +45,14 @@ func SaveUserInfo(data *UserData) error { @@ -45,14 +45,14 @@ func SaveUserInfo(data *UserData) error {
45 return err 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 return err 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 if err != nil { 56 if err != nil {
57 return nil, err 57 return nil, err
58 } 58 }
@@ -276,7 +276,7 @@ func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList { @@ -276,7 +276,7 @@ func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList {
276 return newlist 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 savestr, err := json.Marshal(list) 280 savestr, err := json.Marshal(list)
281 if err != nil { 281 if err != nil {
282 logger.Error("SaveTaskInfo err =%v", err) 282 logger.Error("SaveTaskInfo err =%v", err)
@@ -284,9 +284,9 @@ func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { @@ -284,9 +284,9 @@ func SaveTaskInfo(uuid, tasktype int, list *TaskList) error {
284 } 284 }
285 285
286 if tasktype == 1 { 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 } else if tasktype == 2 { 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 //logger.Info("SaveTaskInfo savestr=%v", string(savestr)) 290 //logger.Info("SaveTaskInfo savestr=%v", string(savestr))
291 } else { 291 } else {
292 logger.Error("tasktype invalid") 292 logger.Error("tasktype invalid")
@@ -295,13 +295,28 @@ func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { @@ -295,13 +295,28 @@ func SaveTaskInfo(uuid, tasktype int, list *TaskList) error {
295 return err 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 var data string 300 var data string
300 var err error 301 var err error
301 if tasktype == 1 { 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 } else if tasktype == 2 { 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 } else { 320 } else {
306 logger.Error("tasktype invalid") 321 logger.Error("tasktype invalid")
307 return nil, errors.New("tasktype invalid") 322 return nil, errors.New("tasktype invalid")
@@ -322,7 +337,7 @@ func GetTaskInfo(uuid, tasktype int) (*TaskList, error) { @@ -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 isfind := false 341 isfind := false
327 index := -1 342 index := -1
328 var taskdesc *TaskListDesc 343 var taskdesc *TaskListDesc
@@ -385,7 +400,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *Gettaskr @@ -385,7 +400,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *Gettaskr
385 for i := 0; i < sub; i++ { 400 for i := 0; i < sub; i++ {
386 rtype := cfg.Reward[i*2] 401 rtype := cfg.Reward[i*2]
387 rnum := cfg.Reward[i*2+1] 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 if resp.Data.Lv != r1 { 404 if resp.Data.Lv != r1 {
390 resp.Data.Lv = r1 405 resp.Data.Lv = r1
391 resp.Data.Costtime = uinfo.UpLvCostTime / 3600 406 resp.Data.Costtime = uinfo.UpLvCostTime / 3600
@@ -401,7 +416,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *Gettaskr @@ -401,7 +416,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *Gettaskr
401 return nil 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 logger.Info("RewardUser rtype=%v,num=%v", rtype, num) 420 logger.Info("RewardUser rtype=%v,num=%v", rtype, num)
406 switch rtype { 421 switch rtype {
407 case REWARDTYPE_STAR: 422 case REWARDTYPE_STAR:
@@ -422,7 +437,7 @@ func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel str @@ -422,7 +437,7 @@ func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel str
422 return 0, 0, 0, 0, 0, 0, 0 437 return 0, 0, 0, 0, 0, 0, 0
423 } 438 }
424 case REWARDTYPE_GOLD: 439 case REWARDTYPE_GOLD:
425 - goldnum, err := AddCoinToSdk(uinfo.Userid, num, gameid, channel, 102) 440 + goldnum, err := AddCoinToSdk(uuid, num, gameid, channel, 102)
426 if err != nil { 441 if err != nil {
427 logger.Error("RewardUser failer err=%v", err) 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,13 +450,13 @@ func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel str
435 return 0, 0, 0, 0, 0, 0, 0 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 var initdata UserData 455 var initdata UserData
441 initdata.Lv = 1 456 initdata.Lv = 1
442 initdata.LvRewardGet = 1 457 initdata.LvRewardGet = 1
443 initdata.Exp = 0 458 initdata.Exp = 0
444 - initdata.Userid = uuid 459 + initdata.Userid = uniqueuid //加上渠道的唯一id
445 initdata.ContinueLoginDay = 1 460 initdata.ContinueLoginDay = 1
446 initdata.GetFromGuanCnt = 0 461 initdata.GetFromGuanCnt = 0
447 initdata.GuanGold = 0 462 initdata.GuanGold = 0
@@ -483,7 +498,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error { @@ -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 return err 503 return err
489 } 504 }
@@ -497,9 +512,10 @@ func (t *TaskList) IsInTaskList(id int) bool { @@ -497,9 +512,10 @@ func (t *TaskList) IsInTaskList(id int) bool {
497 return false 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 if tlist == nil { 519 if tlist == nil {
504 tasklist := new(TaskList) 520 tasklist := new(TaskList)
505 for _, val := range jsonconf.GetJsonConf().TaskConfig { 521 for _, val := range jsonconf.GetJsonConf().TaskConfig {
@@ -510,7 +526,7 @@ func InitTaskAndAchievement(uuid int) error { @@ -510,7 +526,7 @@ func InitTaskAndAchievement(uuid int) error {
510 tasklist.Taskdata = append(tasklist.Taskdata, tmp) 526 tasklist.Taskdata = append(tasklist.Taskdata, tmp)
511 } 527 }
512 528
513 - err := SaveTaskInfo(uuid, 1, tasklist) 529 + err := SaveTaskInfo(unqiueid, 1, tasklist)
514 if err != nil { 530 if err != nil {
515 logger.Error("InitTaskAndAchievement err=%v", err) 531 logger.Error("InitTaskAndAchievement err=%v", err)
516 //return err 532 //return err
@@ -532,7 +548,7 @@ func InitTaskAndAchievement(uuid int) error { @@ -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 if err != nil { 552 if err != nil {
537 logger.Error("InitTaskAndAchievement err=%v", err) 553 logger.Error("InitTaskAndAchievement err=%v", err)
538 //return err 554 //return err
@@ -540,7 +556,7 @@ func InitTaskAndAchievement(uuid int) error { @@ -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 if alist == nil { 560 if alist == nil {
545 achievelist := new(TaskList) 561 achievelist := new(TaskList)
546 for _, val := range jsonconf.GetJsonConf().AchieventConfig { 562 for _, val := range jsonconf.GetJsonConf().AchieventConfig {
@@ -551,7 +567,7 @@ func InitTaskAndAchievement(uuid int) error { @@ -551,7 +567,7 @@ func InitTaskAndAchievement(uuid int) error {
551 achievelist.Taskdata = append(achievelist.Taskdata, tmp) 567 achievelist.Taskdata = append(achievelist.Taskdata, tmp)
552 } 568 }
553 569
554 - err = SaveTaskInfo(uuid, 2, achievelist) 570 + err = SaveTaskInfo(unqiueid, 2, achievelist)
555 if err != nil { 571 if err != nil {
556 logger.Error("InitTaskAndAchievement err=%v", err) 572 logger.Error("InitTaskAndAchievement err=%v", err)
557 return err 573 return err
@@ -567,7 +583,7 @@ func InitTaskAndAchievement(uuid int) error { @@ -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 if err != nil { 587 if err != nil {
572 logger.Error("InitTaskAndAchievement err=%v", err) 588 logger.Error("InitTaskAndAchievement err=%v", err)
573 return err 589 return err
@@ -596,7 +612,7 @@ func (u *UserData) CalcTotalCnt() int { @@ -596,7 +612,7 @@ func (u *UserData) CalcTotalCnt() int {
596 return usertime 612 return usertime
597 } 613 }
598 614
599 -func (u *UserData) HandlePassDay() { 615 +func (u *UserData) HandlePassDay(uuid int, channel string) {
600 isdiffday := false 616 isdiffday := false
601 nowtime := time.Now() 617 nowtime := time.Now()
602 lasttime := time.Unix(int64(u.LastLoginTime), 0) 618 lasttime := time.Unix(int64(u.LastLoginTime), 0)
@@ -663,7 +679,7 @@ func (u *UserData) HandlePassDay() { @@ -663,7 +679,7 @@ func (u *UserData) HandlePassDay() {
663 if err != nil { 679 if err != nil {
664 logger.Error("InitTaskAndAchievement err=%v", err) 680 logger.Error("InitTaskAndAchievement err=%v", err)
665 }*/ 681 }*/
666 - err := InitTaskAndAchievement(u.Userid) 682 + err := InitTaskAndAchievement(uuid, channel)
667 if err != nil { 683 if err != nil {
668 logger.Error("InitTaskAndAchievement err=%v", err) 684 logger.Error("InitTaskAndAchievement err=%v", err)
669 } 685 }
@@ -682,8 +698,8 @@ func (u *UserData) HandlePassDay() { @@ -682,8 +698,8 @@ func (u *UserData) HandlePassDay() {
682 SaveUserInfo(u) 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 if err != nil || data == nil { 703 if err != nil || data == nil {
688 resp.Code = ERROR_SRV_ERROR 704 resp.Code = ERROR_SRV_ERROR
689 resp.Message = "ERROR_SRV_ERROR" 705 resp.Message = "ERROR_SRV_ERROR"
@@ -691,7 +707,7 @@ func GetUserData(uuid int, req *UserLoginReq, resp *UserLoginResp) 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 //此处处理一下从sdk拉取钱包金币数量 712 //此处处理一下从sdk拉取钱包金币数量
697 gold, err := GetCoinFromSdk(uuid, req.Gameid, req.Channel) 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,9 +137,11 @@ func Querysigndata(w http.ResponseWriter, r *http.Request) {
137 func Addcoin(w http.ResponseWriter, r *http.Request) { 137 func Addcoin(w http.ResponseWriter, r *http.Request) {
138 SetHeader(w) 138 SetHeader(w)
139 query := r.URL.Query() 139 query := r.URL.Query()
140 - uuid := query.Get("uuid") 140 + uuid := query.Get("uuid") //需要加上渠道号 460012
  141 + channel := query.Get("channel")
141 uuidnum, _ := strconv.Atoi(uuid) 142 uuidnum, _ := strconv.Atoi(uuid)
142 - uinfo, err := GetUserInfo(uuidnum) 143 + uniqueuuid := uuid + channel
  144 + uinfo, err := GetUserInfo(uniqueuuid)
143 if err != nil || uinfo == nil { 145 if err != nil || uinfo == nil {
144 logger.Error("redis failed err=%v", err) 146 logger.Error("redis failed err=%v", err)
145 fmt.Fprint(w, "failed") 147 fmt.Fprint(w, "failed")
@@ -187,7 +189,9 @@ func Testapi(w http.ResponseWriter, r *http.Request) { @@ -187,7 +189,9 @@ func Testapi(w http.ResponseWriter, r *http.Request) {
187 return 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 if err != nil || uinfo == nil { 195 if err != nil || uinfo == nil {
192 logger.Error("redis failed err=%v", err) 196 logger.Error("redis failed err=%v", err)
193 fmt.Fprint(w, "failed") 197 fmt.Fprint(w, "failed")
src/HttpServer/logic/logic.go
@@ -9,15 +9,24 @@ import ( @@ -9,15 +9,24 @@ import (
9 "fmt" 9 "fmt"
10 "net/http" 10 "net/http"
11 "strconv" 11 "strconv"
12 - "time"  
13 ) 12 )
14 13
15 func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) { 14 func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) {
16 SetHeader(w) 15 SetHeader(w)
17 var resp QueryguaninfoResp 16 var resp QueryguaninfoResp
18 resp.Code = 0 17 resp.Code = 0
  18 + var rdata CommReq
  19 + err := json.Unmarshal([]byte(data), &rdata)
19 for { 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 if err != nil || uinfo == nil { 30 if err != nil || uinfo == nil {
22 logger.Error("redis failed err=%v", err) 31 logger.Error("redis failed err=%v", err)
23 resp.Message = "服务器错误" 32 resp.Message = "服务器错误"
@@ -25,7 +34,7 @@ func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) { @@ -25,7 +34,7 @@ func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) {
25 break 34 break
26 } 35 }
27 36
28 - uinfo.HandlePassDay() 37 + uinfo.HandlePassDay(uuid, rdata.Channel)
29 38
30 //获取存钱罐等级配置 39 //获取存钱罐等级配置
31 mcfg := jsonconf.GetMoneyBoxCfg(uinfo.Lv) 40 mcfg := jsonconf.GetMoneyBoxCfg(uinfo.Lv)
@@ -59,7 +68,7 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) { @@ -59,7 +68,7 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) {
59 var resp WatchadsResp 68 var resp WatchadsResp
60 resp.Code = 0 69 resp.Code = 0
61 70
62 - for { 71 + /*for {
63 uinfo, err := GetUserInfo(uuid) 72 uinfo, err := GetUserInfo(uuid)
64 if err != nil || uinfo == nil { 73 if err != nil || uinfo == nil {
65 logger.Error("redis failed err=%v", err) 74 logger.Error("redis failed err=%v", err)
@@ -91,7 +100,7 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) { @@ -91,7 +100,7 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) {
91 100
92 //回包 101 //回包
93 respstr, _ := json.Marshal(&resp) 102 respstr, _ := json.Marshal(&resp)
94 - fmt.Fprint(w, string(respstr)) 103 + fmt.Fprint(w, string(respstr))*/
95 } 104 }
96 105
97 func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { 106 func HandlerGetcash(w http.ResponseWriter, data string, uuid int) {
@@ -112,7 +121,9 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { @@ -112,7 +121,9 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) {
112 rdata.Ver = "2.0.0" 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 if err != nil || uinfo == nil { 127 if err != nil || uinfo == nil {
117 logger.Error("redis failed err=%v", err) 128 logger.Error("redis failed err=%v", err)
118 resp.Message = "服务器错误" 129 resp.Message = "服务器错误"
@@ -186,16 +197,16 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { @@ -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 if info.Isnew == 1 { 211 if info.Isnew == 1 {
201 uinfo.WithDraw.Cashdata[index].Isnew = 0 212 uinfo.WithDraw.Cashdata[index].Isnew = 0
@@ -221,10 +232,19 @@ func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { @@ -221,10 +232,19 @@ func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) {
221 SetHeader(w) 232 SetHeader(w)
222 var resp QuerysigndataResp 233 var resp QuerysigndataResp
223 resp.Code = 0 234 resp.Code = 0
224 - 235 + var rdata CommReq
  236 + err := json.Unmarshal([]byte(data), &rdata)
225 for { 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 if err != nil || uinfo == nil { 248 if err != nil || uinfo == nil {
229 logger.Error("redis failed err=%v", err) 249 logger.Error("redis failed err=%v", err)
230 resp.Message = "服务器错误" 250 resp.Message = "服务器错误"
@@ -233,7 +253,7 @@ func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { @@ -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 resp.Data.Continuessign = uinfo.SignSum 258 resp.Data.Continuessign = uinfo.SignSum
239 resp.Data.IssignToday = uinfo.IsSignToday 259 resp.Data.IssignToday = uinfo.IsSignToday
@@ -263,7 +283,9 @@ func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) { @@ -263,7 +283,9 @@ func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) {
263 resp.Code = ERROR_JSONUNMASH_ERROR 283 resp.Code = ERROR_JSONUNMASH_ERROR
264 break 284 break
265 } 285 }
266 - uinfo, err := GetUserInfo(uuid) 286 + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据
  287 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel
  288 + uinfo, err := GetUserInfo(uniqueuuid)
267 if err != nil || uinfo == nil { 289 if err != nil || uinfo == nil {
268 logger.Error("redis failed err=%v", err) 290 logger.Error("redis failed err=%v", err)
269 resp.Message = "服务器错误" 291 resp.Message = "服务器错误"
@@ -339,7 +361,10 @@ func HandlerUsersign(w http.ResponseWriter, data string, uuid int) { @@ -339,7 +361,10 @@ func HandlerUsersign(w http.ResponseWriter, data string, uuid int) {
339 resp.Code = ERROR_JSONUNMASH_ERROR 361 resp.Code = ERROR_JSONUNMASH_ERROR
340 break 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 if err != nil || uinfo == nil { 368 if err != nil || uinfo == nil {
344 logger.Error("redis failed err=%v", err) 369 logger.Error("redis failed err=%v", err)
345 resp.Message = "服务器错误" 370 resp.Message = "服务器错误"
@@ -415,7 +440,10 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { @@ -415,7 +440,10 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) {
415 resp.Code = ERROR_JSONUNMASH_ERROR 440 resp.Code = ERROR_JSONUNMASH_ERROR
416 break 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 if err != nil || uinfo == nil { 447 if err != nil || uinfo == nil {
420 logger.Error("redis failed err=%v", err) 448 logger.Error("redis failed err=%v", err)
421 resp.Message = "服务器错误" 449 resp.Message = "服务器错误"
@@ -426,7 +454,7 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { @@ -426,7 +454,7 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) {
426 //需要先计算出任务或者成就 454 //需要先计算出任务或者成就
427 var tasklist *TaskList 455 var tasklist *TaskList
428 //先查询一下当前的任务数据 456 //先查询一下当前的任务数据
429 - tasklist, err = GetTaskInfo(uuid, rdata.Tasktype) 457 + tasklist, err = GetTaskInfo(uuid, rdata.Tasktype, rdata.Channel)
430 if err != nil || tasklist == nil { 458 if err != nil || tasklist == nil {
431 logger.Error("GetTaskInfo failed err=%v", err) 459 logger.Error("GetTaskInfo failed err=%v", err)
432 resp.Message = "服务器错误" 460 resp.Message = "服务器错误"
@@ -434,7 +462,7 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { @@ -434,7 +462,7 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) {
434 break 462 break
435 } 463 }
436 464
437 - err = uinfo.HandleGetTaskReward(&rdata, &resp, tasklist) 465 + err = uinfo.HandleGetTaskReward(&rdata, &resp, tasklist, uuid)
438 logger.Info("HandlerGettaskreward tasklist=%v", tasklist) 466 logger.Info("HandlerGettaskreward tasklist=%v", tasklist)
439 logger.Info("HandlerGettaskreward uinfo=%v", uinfo) 467 logger.Info("HandlerGettaskreward uinfo=%v", uinfo)
440 if err != nil { 468 if err != nil {
@@ -471,7 +499,9 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) { @@ -471,7 +499,9 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) {
471 resp.Code = ERROR_JSONUNMASH_ERROR 499 resp.Code = ERROR_JSONUNMASH_ERROR
472 break 500 break
473 } 501 }
474 - uinfo, err := GetUserInfo(uuid) 502 + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据
  503 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel
  504 + uinfo, err := GetUserInfo(uniqueuuid)
475 if err != nil || uinfo == nil { 505 if err != nil || uinfo == nil {
476 logger.Error("redis failed err=%v", err) 506 logger.Error("redis failed err=%v", err)
477 resp.Message = "服务器错误" 507 resp.Message = "服务器错误"
@@ -479,12 +509,12 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) { @@ -479,12 +509,12 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) {
479 break 509 break
480 } 510 }
481 511
482 - uinfo.HandlePassDay() 512 + uinfo.HandlePassDay(uuid, rdata.Channel)
483 513
484 //需要先计算出任务或者成就 514 //需要先计算出任务或者成就
485 var tasklist *TaskList 515 var tasklist *TaskList
486 //先查询一下当前的任务数据 516 //先查询一下当前的任务数据
487 - tasklist, err = GetTaskInfo(uuid, rdata.Tasktype) 517 + tasklist, err = GetTaskInfo(uuid, rdata.Tasktype, rdata.Channel)
488 if err != nil || tasklist == nil { 518 if err != nil || tasklist == nil {
489 logger.Error("redis failed err=%v", err) 519 logger.Error("redis failed err=%v", err)
490 resp.Message = "服务器错误" 520 resp.Message = "服务器错误"
@@ -534,7 +564,9 @@ func HandlerUpdatetaskandachieve(w http.ResponseWriter, data string, uuid int) { @@ -534,7 +564,9 @@ func HandlerUpdatetaskandachieve(w http.ResponseWriter, data string, uuid int) {
534 resp.Code = ERROR_JSONUNMASH_ERROR 564 resp.Code = ERROR_JSONUNMASH_ERROR
535 break 565 break
536 } 566 }
537 - uinfo, err := GetUserInfo(uuid) 567 + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据
  568 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel
  569 + uinfo, err := GetUserInfo(uniqueuuid)
538 if err != nil || uinfo == nil { 570 if err != nil || uinfo == nil {
539 logger.Error("redis failed err=%v", err) 571 logger.Error("redis failed err=%v", err)
540 resp.Message = "服务器错误" 572 resp.Message = "服务器错误"
@@ -577,9 +609,19 @@ func HandlerOnlinentf(w http.ResponseWriter, data string, uuid int) { @@ -577,9 +609,19 @@ func HandlerOnlinentf(w http.ResponseWriter, data string, uuid int) {
577 SetHeader(w) 609 SetHeader(w)
578 var resp OnlinentfResp 610 var resp OnlinentfResp
579 resp.Code = 0 611 resp.Code = 0
  612 + var rdata CommReq
  613 + err := json.Unmarshal([]byte(data), &rdata)
580 for { 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 if err != nil || uinfo == nil { 625 if err != nil || uinfo == nil {
584 logger.Error("redis failed err=%v", err) 626 logger.Error("redis failed err=%v", err)
585 resp.Message = "服务器错误" 627 resp.Message = "服务器错误"
@@ -646,8 +688,19 @@ func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uuid int) { @@ -646,8 +688,19 @@ func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uuid int) {
646 SetHeader(w) 688 SetHeader(w)
647 var resp QuerdrawinfoResp 689 var resp QuerdrawinfoResp
648 resp.Code = 0 690 resp.Code = 0
  691 + var rdata CommReq
  692 + err := json.Unmarshal([]byte(data), &rdata)
649 for { 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 if err != nil || uinfo == nil { 704 if err != nil || uinfo == nil {
652 logger.Error("redis failed err=%v", err) 705 logger.Error("redis failed err=%v", err)
653 resp.Message = "服务器错误" 706 resp.Message = "服务器错误"
@@ -682,7 +735,9 @@ func HandlerDrawguangold(w http.ResponseWriter, data string, uuid int) { @@ -682,7 +735,9 @@ func HandlerDrawguangold(w http.ResponseWriter, data string, uuid int) {
682 break 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 if err != nil || uinfo == nil { 741 if err != nil || uinfo == nil {
687 logger.Error("redis failed err=%v", err) 742 logger.Error("redis failed err=%v", err)
688 resp.Message = "服务器错误" 743 resp.Message = "服务器错误"
@@ -767,7 +822,9 @@ func HandlerGetguangold(w http.ResponseWriter, data string, uuid int) { @@ -767,7 +822,9 @@ func HandlerGetguangold(w http.ResponseWriter, data string, uuid int) {
767 break 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 if err != nil || uinfo == nil { 828 if err != nil || uinfo == nil {
772 logger.Error("redis failed err=%v", err) 829 logger.Error("redis failed err=%v", err)
773 resp.Message = "服务器错误" 830 resp.Message = "服务器错误"
@@ -818,7 +875,9 @@ func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) { @@ -818,7 +875,9 @@ func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) {
818 break 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 if err != nil || data == nil { 881 if err != nil || data == nil {
823 resp.Code = ERROR_SRV_ERROR 882 resp.Code = ERROR_SRV_ERROR
824 resp.Message = "ERROR_SRV_ERROR" 883 resp.Message = "ERROR_SRV_ERROR"
@@ -854,6 +913,7 @@ func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) { @@ -854,6 +913,7 @@ func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) {
854 913
855 func HandlerLogin(w http.ResponseWriter, data string, uuid int) { 914 func HandlerLogin(w http.ResponseWriter, data string, uuid int) {
856 SetHeader(w) 915 SetHeader(w)
  916 +
857 var resp UserLoginResp 917 var resp UserLoginResp
858 resp.Code = 0 918 resp.Code = 0
859 var rdata UserLoginReq 919 var rdata UserLoginReq
@@ -866,8 +926,11 @@ func HandlerLogin(w http.ResponseWriter, data string, uuid int) { @@ -866,8 +926,11 @@ func HandlerLogin(w http.ResponseWriter, data string, uuid int) {
866 break 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 if err != nil { 934 if err != nil {
872 logger.Error("redis failed err=%v", err) 935 logger.Error("redis failed err=%v", err)
873 resp.Message = "服务器错误" 936 resp.Message = "服务器错误"
@@ -878,10 +941,38 @@ func HandlerLogin(w http.ResponseWriter, data string, uuid int) { @@ -878,10 +941,38 @@ func HandlerLogin(w http.ResponseWriter, data string, uuid int) {
878 if !isexist { 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 } else { 972 } else {
  973 + //已经迁移过的数据之间返回
883 //已经登陆过了 需要获取玩家数据 974 //已经登陆过了 需要获取玩家数据
884 - err = GetUserData(uuid, &rdata, &resp) 975 + err = GetUserData(uuid, uniqueuuid, &rdata, &resp)
885 } 976 }
886 977
887 if err != nil { 978 if err != nil {