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,6 +426,23 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { | ||
426 | resp.Code = 0 | 426 | resp.Code = 0 |
427 | resp.Message = "success" | 427 | resp.Message = "success" |
428 | for { | 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 | uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | 446 | uinfo, err := GetUserInfo(strconv.Itoa(uuid)) |
430 | if err != nil || uinfo == nil { | 447 | if err != nil || uinfo == nil { |
431 | logger.Error("HandlerGetMainPageInfo getuserinfo failed=%v", err) | 448 | logger.Error("HandlerGetMainPageInfo getuserinfo failed=%v", err) |
@@ -433,6 +450,47 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { | @@ -433,6 +450,47 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { | ||
433 | resp.Message = "get userinfo failed" | 450 | resp.Message = "get userinfo failed" |
434 | break | 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 | redlist := uinfo.GetRedCatIdList() | 494 | redlist := uinfo.GetRedCatIdList() |
437 | resp.Data.LimitCatList = append(resp.Data.LimitCatList, redlist...) | 495 | resp.Data.LimitCatList = append(resp.Data.LimitCatList, redlist...) |
438 | 496 |