diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index 88d0110..58f42eb 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -53,6 +53,8 @@ const ( WATCH_ADD_DAY_LIMIT = 50 //当天获取红包次数限制 ACCGOLDRATELIMIT = 3 //玩家每天看视频加速金币次数 WATCHADSGOLDLIMIT = 15 //玩家每天看广告领金币限制次数 + TIMEINGREWARDLIMIT = 15 //整点奖励限制次数 + OFFLINETIMESLIMIT = 10 //离线奖励领取次数限制 WATCHADSGOLDLRATE = 10800 //看广告领取金币的秒数 ZHENGHOURMULT = 3600 //整点领取金币的秒数 DRAWTICKETNUM = 5 //每日送的抽奖券次数 diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 389d065..2bb5c9f 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -43,6 +43,7 @@ type GetUserDataReq struct { type offlineRewardDesc struct { OfflineTime int `json:"offlineTime"` Income string `json:"income"` + LeftTimes int `json:"leftTimes"` } type GetUserDataData struct { @@ -838,60 +839,62 @@ type WithDrawInfo struct { //玩家数据 type UserData struct { - UserId int //玩家id - Gameid string //玩家Gameid - Channel string //玩家Channel - RegTime int //注册时间 - ContinueLoginDay int //连续登陆天数 - SumLoginDay int //累计登录天数 - Gold int64 //金币 - GoldSum int64 //玩家累计金币 - Love int64 //爱心值 - Goldrate int64 //金币生成速率 - Loverate int64 //爱心生产速率 - Highestlv int //当前最高猫等级 - InviteId int //邀请者uid - CurBoxLv int //当前猫箱子等级 - IsDouble int //当前加速标签 1表示3倍收益 0表示正常 - StartDoubleTime int //开始双倍时间 - DoubleLeftTimes int //剩余加速金币次数 - GetWatchAdsGoldTime int //看广告领金币次数 - DrawTicket int //抽奖券次数 - DrawTicketTimes int //剩余增加抽奖券次数 - DratMult int //下次抽奖的倍数 - DrawLastRewardId int //上一次的奖励ID - DrawTableCount int //当前抽奖次数 5次以后归零 - IsAuto int //当前是否自动合成 - IsBoxAcc int //是否处于加速生成箱子状态 - RandGiftNum int //当前剩余空投猫粮次数 - RandGiftDay int //记录当前猫粮日期,当日期变化则重置RandGiftNum - RandGiftTime int //记录上一次空投猫粮时间 - Redbag float32 //红包值 单位为分 - Head string //头像地址 - NickName string //昵称 - RealName string //实名 - IsFirstRedBgCat int //是否合成过红包猫 0表示否1表示是 - OfflineGold int64 //离线金币 - OfflineLove int64 //离线爱心 - LastLoginTime int //上次登陆时间 - LastTimingRewardHour int //上次领取整点奖励的时刻 - FlopCardCnt int //翻牌次数计数 - FlopCardLefCnt int //剩余翻拍次数 - TodayZhaocai float32 //当天招财猫收益 - IsNew int //是否需要引导 - RandRedBagLeftTime int //剩余随机红包次数 - SumRandRedBagTimes int //已领取的随机红包总次数 - StoreRandRedBag int //存储的随机红包个数 - FlyBoxNumTimes int //生意飞天宝箱次数 - CatShopInfo CatShopData //猫咖门店数据 - Taskinfo TaskData //任务数据 - AchieveMent AchieveMentData //成就数据 - PosInfo []CatPosInfo //位置信息 从0开始 - DuboCat []DuboCatInfo //赌博猫信息 - BuyCatInfo []BuyCatInfoData //商店购买猫数据 第一个元素为1级猫 第二个为2级猫以此类推 - CatRoomInfo []CatRoomData //猫咖店数据 - CaiPiaoInfo []UserCaiPiaoHistory //记录玩家参与过的赌博猫历史记录 - WithDraw WithDrawInfo //提现记录信息 + UserId int //玩家id + Gameid string //玩家Gameid + Channel string //玩家Channel + RegTime int //注册时间 + ContinueLoginDay int //连续登陆天数 + SumLoginDay int //累计登录天数 + Gold int64 //金币 + GoldSum int64 //玩家累计金币 + Love int64 //爱心值 + Goldrate int64 //金币生成速率 + Loverate int64 //爱心生产速率 + Highestlv int //当前最高猫等级 + InviteId int //邀请者uid + CurBoxLv int //当前猫箱子等级 + IsDouble int //当前加速标签 1表示3倍收益 0表示正常 + StartDoubleTime int //开始双倍时间 + DoubleLeftTimes int //剩余加速金币次数 + GetWatchAdsGoldTime int //看广告领金币次数 + DrawTicket int //抽奖券次数 + DrawTicketTimes int //剩余增加抽奖券次数 + DratMult int //下次抽奖的倍数 + DrawLastRewardId int //上一次的奖励ID + DrawTableCount int //当前抽奖次数 5次以后归零 + IsAuto int //当前是否自动合成 + IsBoxAcc int //是否处于加速生成箱子状态 + RandGiftNum int //当前剩余空投猫粮次数 + RandGiftDay int //记录当前猫粮日期,当日期变化则重置RandGiftNum + RandGiftTime int //记录上一次空投猫粮时间 + Redbag float32 //红包值 单位为分 + Head string //头像地址 + NickName string //昵称 + RealName string //实名 + IsFirstRedBgCat int //是否合成过红包猫 0表示否1表示是 + OfflineGold int64 //离线金币 + OfflineLove int64 //离线爱心 + LastLoginTime int //上次登陆时间 + LastTimingRewardHour int //当天领取整点奖励的次数 + LeftTimingRewardTimes int //剩余整点奖励次数 + FlopCardCnt int //翻牌次数计数 + FlopCardLefCnt int //剩余翻拍次数 + TodayZhaocai float32 //当天招财猫收益 + IsNew int //是否需要引导 + RandRedBagLeftTime int //剩余随机红包次数 + SumRandRedBagTimes int //已领取的随机红包总次数 + StoreRandRedBag int //存储的随机红包个数 + FlyBoxNumTimes int //生意飞天宝箱次数 + LeftOfflineTimes int //离线奖励剩余领取次数 + CatShopInfo CatShopData //猫咖门店数据 + Taskinfo TaskData //任务数据 + AchieveMent AchieveMentData //成就数据 + PosInfo []CatPosInfo //位置信息 从0开始 + DuboCat []DuboCatInfo //赌博猫信息 + BuyCatInfo []BuyCatInfoData //商店购买猫数据 第一个元素为1级猫 第二个为2级猫以此类推 + CatRoomInfo []CatRoomData //猫咖店数据 + CaiPiaoInfo []UserCaiPiaoHistory //记录玩家参与过的赌博猫历史记录 + WithDraw WithDrawInfo //提现记录信息 } diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 1e08bcc..6c78791 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -471,6 +471,11 @@ func (u *UserData) HandlePassDay() { u.DrawTicketTimes = DRAWTICKETGETLIMIT u.RandRedBagLeftTime = RANDGIFTLIMIT u.FlyBoxNumTimes = FLYBOXNUMLIMIT + u.LeftTimingRewardTimes = TIMEINGREWARDLIMIT + u.LeftOfflineTimes = OFFLINETIMESLIMIT + /*randint := rand.Intn(100) + floatval := float32(randint) / 100 + u.TodayZhaocai = 180 + floatval*/ } u.LastLoginTime = int(nowtime.Unix()) @@ -546,6 +551,12 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) { udata.SumLoginDay = 1 udata.RandRedBagLeftTime = RANDGIFTLIMIT udata.FlyBoxNumTimes = FLYBOXNUMLIMIT + udata.LeftTimingRewardTimes = TIMEINGREWARDLIMIT + udata.LeftOfflineTimes = OFFLINETIMESLIMIT + /*randint := rand.Intn(100) + floatval := float32(randint) / 100 + udata.TodayZhaocai = 180 + floatval*/ + udata.SumRandRedBagTimes = 0 udata.StoreRandRedBag = 0 udata.Gameid = data.Gameid diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 2ceb56e..e30c1b5 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -18,11 +18,18 @@ import ( "net/http" ) +var G_randVal = float32(188.11) + func StartHttpTicker() { ticker := time.NewTicker(time.Second * time.Duration(30)) go func() { for range ticker.C { + if time.Now().Hour() == 0 && time.Now().Minute() < 1 { + randint := rand.Intn(100) + floatval := float32(randint) / 100 + G_randVal = 180 + floatval + } if time.Now().Hour() == 12 { //处理开奖 waits := GetWaitCaiCatList() diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 45709ee..52b0086 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -752,7 +752,7 @@ func HandlerGetUserData(w http.ResponseWriter, data string, uuid int) { if nowtime-int64(lasttime) > 5*60 { //算离线收益 - resp.Data.TimingReward = false + offsec := nowtime - int64(lasttime) if offsec > 2*3600 { offsec = 2 * 3600 @@ -764,6 +764,7 @@ func HandlerGetUserData(w http.ResponseWriter, data string, uuid int) { resp.Data.Output = "0" resp.Data.OfflineReward.OfflineTime = int(offsec) resp.Data.OfflineReward.Income = strconv.FormatInt(uinfo.OfflineGold, 10) + resp.Data.OfflineReward.LeftTimes = uinfo.LeftOfflineTimes } else { //按费离线收益计算 //先计算一下双倍时间是否过期了 @@ -793,7 +794,7 @@ func HandlerGetUserData(w http.ResponseWriter, data string, uuid int) { addgold = uinfo.Goldrate * offsec } - resp.Data.TimingReward = true + //resp.Data.TimingReward = true resp.Data.Now = int(time.Now().Unix()) * 1000 uinfo.Gold += addgold @@ -812,7 +813,16 @@ func HandlerGetUserData(w http.ResponseWriter, data string, uuid int) { SaveUserInfo(uinfo, strconv.Itoa(uuid)) } - resp.Data.TimingRewardTimes = uinfo.GetWatchAdsGoldTime + //计算一下整点奖励是否可以领取 + resp.Data.TimingReward = false + nowt := time.Now() + nowmin := nowt.Minute() + nowt.Hour()*60 + if nowmin/30 >= uinfo.LastTimingRewardHour { + resp.Data.TimingReward = true + } + + resp.Data.TimingReward = false + resp.Data.TimingRewardTimes = uinfo.LeftTimingRewardTimes //保存此次计算时间 nowtimestr := strconv.FormatInt(nowtime, 10) @@ -851,6 +861,13 @@ func HandlerGetOfflineReward(w http.ResponseWriter, data string, uuid int) { break } + if uinfo.LeftOfflineTimes < 1 { + logger.Error("HandlerGetUserData LeftOfflineTimes failed=%v", err) + resp.Code = 1 + resp.Message = "离线奖励剩余领取次数为0" + break + } + addgold := uinfo.OfflineGold if rdata.Optype == 2 { @@ -862,6 +879,7 @@ func HandlerGetOfflineReward(w http.ResponseWriter, data string, uuid int) { uinfo.AddToRank() //此处todo 记录离线领取的次数 + uinfo.LeftOfflineTimes-- //领取过后将离线金币清零 uinfo.OfflineGold = 0 @@ -1016,7 +1034,8 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { } resp.Data.Level = len(uinfo.BuyCatInfo) - resp.Data.TotalCashReward = uinfo.TodayZhaocai + resp.Data.TotalCashReward = G_randVal + resp.Data.Guide = true if uinfo.IsNew == 0 { resp.Data.Guide = false @@ -1376,7 +1395,7 @@ func HandlerRecvRedCat(w http.ResponseWriter, data string, uuid int) { uinfo.CleadPos(cpos) uinfo.CalcGoldRate() - uinfo.TodayZhaocai += addredpack + //uinfo.TodayZhaocai += addredpack SaveUserInfo(uinfo, strconv.Itoa(uuid)) resp.Data.Num = addredpack @@ -1572,16 +1591,23 @@ func HandlerRecvTimingReward(w http.ResponseWriter, data string, uuid int) { } //判断一下领取的时间点是否正确 - nowt := time.Now() - if nowt.Minute() < 50 && nowt.Minute() > 10 { + if uinfo.LeftTimingRewardTimes < 1 { + logger.Error("HandlerRecvTimingReward LeftTimingRewardTimes failed=%v", err) + resp.Code = 1 + resp.Message = "剩余领取次数为0" + break + } + //nowt := time.Now() + /*if nowt.Minute() < 50 && nowt.Minute() > 10 { logger.Error("HandlerRecvTimingReward time failed=%v", err) resp.Code = 1 resp.Message = "time failed" break - } + }*/ - nowh := 0 - if nowt.Minute() >= 50 { + //nowmin := nowt.Hour()*60+nowt.Minute() + //if nowmin /30 < + /*if nowt.Minute() >= 50 { //领取的是笑一个小时 if nowt.Hour() < 23 { if uinfo.LastTimingRewardHour >= nowt.Hour()+1 { @@ -1615,11 +1641,12 @@ func HandlerRecvTimingReward(w http.ResponseWriter, data string, uuid int) { break } nowh = nowt.Hour() - } + }*/ addgold := uinfo.Goldrate * ZHENGHOURMULT uinfo.Gold += addgold - uinfo.LastTimingRewardHour = nowh + uinfo.LastTimingRewardHour++ + uinfo.LeftTimingRewardTimes-- //uinfo.GetWatchAdsGoldTime-- SaveUserInfo(uinfo, strconv.Itoa(uuid)) -- libgit2 0.21.0