diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index c73c318..3d6102b 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -426,6 +426,23 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { resp.Code = 0 resp.Message = "success" for { + + v, err := redishandler.GetRedisClient().HGet(redis.USER_LAST_CALC_TIME, strconv.Itoa(uuid)) + if err != nil { + logger.Info("HandlerGetMainPageInfo get USER_LAST_CALC_TIME failed=%v", err) + resp.Message = "redishandler failed" + resp.Code = 1 + break + } + + lasttime, _ := strconv.Atoi(v) + nowtime := time.Now().Unix() + if nowtime-int64(lasttime) < 0 { + logger.Error("HandlerGetUserData nowtime=%v lasttime=%v", nowtime, lasttime) + resp.Message = "request time small than zero" + resp.Code = 1 + break + } uinfo, err := GetUserInfo(strconv.Itoa(uuid)) if err != nil || uinfo == nil { logger.Error("HandlerGetMainPageInfo getuserinfo failed=%v", err) @@ -433,6 +450,47 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { resp.Message = "get userinfo failed" break } + + if nowtime-int64(lasttime) > 5*60 { + //在同步资源的时候计算 + + } else { + //按费离线收益计算 + //先计算一下双倍时间是否过期了 + addgold := int64(0) + offsec := nowtime - int64(lasttime) + if uinfo.IsDouble == 1 { + if nowtime > int64(uinfo.IsDouble+150) { + + //加速过期了 + //计算部分三倍的 + if lasttime > uinfo.IsDouble+150 { + addgold = uinfo.Goldrate * offsec + } else { + noroffsec := nowtime - int64(uinfo.IsDouble+150) + accoffsec := offsec - noroffsec + addgold = uinfo.Goldrate*accoffsec*3 + noroffsec*uinfo.Goldrate + } + uinfo.IsDouble = 0 + uinfo.StartDoubleTime = 0 + + } else { + //还在加速期 + addgold = uinfo.Goldrate * offsec * 3 + } + + } + + uinfo.Gold = addgold + uinfo.GoldSum += addgold + uinfo.AddToRank() + } + + //保存此次计算时间 + nowtimestr := strconv.FormatInt(nowtime, 10) + redishandler.GetRedisClient().HSet(redis.USER_LAST_CALC_TIME, strconv.Itoa(uuid), nowtimestr) + logger.Info("HandlerGetUserData save USER_LAST_CALC_TIME time=%v", nowtimestr) + redlist := uinfo.GetRedCatIdList() resp.Data.LimitCatList = append(resp.Data.LimitCatList, redlist...) -- libgit2 0.21.0