Commit 8fddadc52f4957279042a5f8ec5bf369960890dc
1 parent
48cd35a4
Exists in
master
提交修改
Showing
1 changed file
with
58 additions
and
0 deletions
Show diff stats
src/HttpServer/logic/logic.go
| ... | ... | @@ -426,6 +426,23 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { |
| 426 | 426 | resp.Code = 0 |
| 427 | 427 | resp.Message = "success" |
| 428 | 428 | for { |
| 429 | + | |
| 430 | + v, err := redishandler.GetRedisClient().HGet(redis.USER_LAST_CALC_TIME, strconv.Itoa(uuid)) | |
| 431 | + if err != nil { | |
| 432 | + logger.Info("HandlerGetMainPageInfo get USER_LAST_CALC_TIME failed=%v", err) | |
| 433 | + resp.Message = "redishandler failed" | |
| 434 | + resp.Code = 1 | |
| 435 | + break | |
| 436 | + } | |
| 437 | + | |
| 438 | + lasttime, _ := strconv.Atoi(v) | |
| 439 | + nowtime := time.Now().Unix() | |
| 440 | + if nowtime-int64(lasttime) < 0 { | |
| 441 | + logger.Error("HandlerGetUserData nowtime=%v lasttime=%v", nowtime, lasttime) | |
| 442 | + resp.Message = "request time small than zero" | |
| 443 | + resp.Code = 1 | |
| 444 | + break | |
| 445 | + } | |
| 429 | 446 | uinfo, err := GetUserInfo(strconv.Itoa(uuid)) |
| 430 | 447 | if err != nil || uinfo == nil { |
| 431 | 448 | logger.Error("HandlerGetMainPageInfo getuserinfo failed=%v", err) |
| ... | ... | @@ -433,6 +450,47 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { |
| 433 | 450 | resp.Message = "get userinfo failed" |
| 434 | 451 | break |
| 435 | 452 | } |
| 453 | + | |
| 454 | + if nowtime-int64(lasttime) > 5*60 { | |
| 455 | + //在同步资源的时候计算 | |
| 456 | + | |
| 457 | + } else { | |
| 458 | + //按费离线收益计算 | |
| 459 | + //先计算一下双倍时间是否过期了 | |
| 460 | + addgold := int64(0) | |
| 461 | + offsec := nowtime - int64(lasttime) | |
| 462 | + if uinfo.IsDouble == 1 { | |
| 463 | + if nowtime > int64(uinfo.IsDouble+150) { | |
| 464 | + | |
| 465 | + //加速过期了 | |
| 466 | + //计算部分三倍的 | |
| 467 | + if lasttime > uinfo.IsDouble+150 { | |
| 468 | + addgold = uinfo.Goldrate * offsec | |
| 469 | + } else { | |
| 470 | + noroffsec := nowtime - int64(uinfo.IsDouble+150) | |
| 471 | + accoffsec := offsec - noroffsec | |
| 472 | + addgold = uinfo.Goldrate*accoffsec*3 + noroffsec*uinfo.Goldrate | |
| 473 | + } | |
| 474 | + uinfo.IsDouble = 0 | |
| 475 | + uinfo.StartDoubleTime = 0 | |
| 476 | + | |
| 477 | + } else { | |
| 478 | + //还在加速期 | |
| 479 | + addgold = uinfo.Goldrate * offsec * 3 | |
| 480 | + } | |
| 481 | + | |
| 482 | + } | |
| 483 | + | |
| 484 | + uinfo.Gold = addgold | |
| 485 | + uinfo.GoldSum += addgold | |
| 486 | + uinfo.AddToRank() | |
| 487 | + } | |
| 488 | + | |
| 489 | + //保存此次计算时间 | |
| 490 | + nowtimestr := strconv.FormatInt(nowtime, 10) | |
| 491 | + redishandler.GetRedisClient().HSet(redis.USER_LAST_CALC_TIME, strconv.Itoa(uuid), nowtimestr) | |
| 492 | + logger.Info("HandlerGetUserData save USER_LAST_CALC_TIME time=%v", nowtimestr) | |
| 493 | + | |
| 436 | 494 | redlist := uinfo.GetRedCatIdList() |
| 437 | 495 | resp.Data.LimitCatList = append(resp.Data.LimitCatList, redlist...) |
| 438 | 496 | ... | ... |