Commit 8fddadc52f4957279042a5f8ec5bf369960890dc

Authored by 陆恒
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  
... ...