Commit 048f6f517d91d34858e11c5b61afabd7fd094439

Authored by 陆恒
1 parent ff521f50

提交

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 {
... ...