diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index 313f5b6..296b8aa 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -59,6 +59,8 @@ const ( SDKOPGOLD_TYPEWE = 302 //微转发金币类型 GUANGOLDNUMLIMIT = 900 //存钱罐金币上限 LUCKYBAGDAYLIMIT = 10 //每日福袋次数 + FREETICKETCOUNT = 1 //免费抽奖次数 + TICKETCOUNT = 5 //看视频抽奖次数 ) const ( diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 7af0dda..ebe43b9 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -62,6 +62,8 @@ type SyncuserdataData struct { Sumloginday int `json:"sumloginday"` Nowtime int `json:"nowtime"` Luckbaglefttime int `json:"luckbaglefttime"` + Leftfreeticket int `json:"leftfreeticket"` + Leftticket int `json:"leftticket"` } type SyncuserdataResp struct { @@ -250,6 +252,17 @@ type QueryrankinfoResp struct { Data QueryrankinfoData `json:"data"` } +type QuerydrawrewardData struct { + Getgold int `json:"getgold"` + Walletgold int `json:"walletgold"` +} + +type QuerydrawrewardResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data QuerydrawrewardData `json:"data"` +} + type GetcashReq struct { Gameid string `json:"gameid"` Channel string `json:"channel"` @@ -498,6 +511,8 @@ type UserData struct { LastUpdateTime int //上一次同步时间 OfflineGold int //离线金币数量 HighScore int64 //玩家历史最高分 + FreeTicket int //免费抽奖次数 + Ticket int //看视频抽奖次数 WithDraw WithDrawInfo //提现记录信息 Task TaskInfo //玩家任务完成相关信息 Achieve AchieveMentInfo //玩家成就完成相关数据 diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index c06cec7..cb7d252 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -82,6 +82,8 @@ func (u *UserData) HandlePassDay(uuid int, channel string) { u.Task.PlaySmall = 0 u.RedBagFetchIdlist = u.RedBagFetchIdlist[:0] u.LuckyBagLeftTimes = LUCKYBAGDAYLIMIT + u.FreeTicket = FREETICKETCOUNT + u.Ticket = TICKETCOUNT err := InitTaskAndAchievement(uuid, channel) if err != nil { @@ -397,6 +399,8 @@ func InitUserInfo(resp *UserLoginResp, uniqueuid, gameid, channel string, uuid i initdata.HeadUrl = "1" initdata.RegTime = int(time.Now().Unix()) initdata.LuckyBagLeftTimes = LUCKYBAGDAYLIMIT + initdata.FreeTicket = FREETICKETCOUNT + initdata.Ticket = TICKETCOUNT for _, val := range jsonconf.GetJsonConf().RmbConfig { var tmp WithDrawDesc @@ -539,6 +543,40 @@ func AddCoinToSdk(uuid int, goldnum int, gameid string, channel string, atype in return resp.Data.Mycoin, nil } +//计算转盘抽奖 +func CalcTurnTableNum() int { + rtnum := 0 + + sumrate := 0 + tmprate := 0 + idx := -1 + rand.Seed(time.Now().UnixNano()) + randnum := rand.Intn(100) + cflist := jsonconf.GetJsonConf().TrunTableConfig + for _, vv := range cflist { + sumrate += vv.Rate + } + logger.Info("CalcTurnTableNum sumrate=%v,randnum=%v,cflist=%+v", sumrate, randnum, cflist) + for k, v := range cflist { + tmprate += int(v.Rate * 100 / sumrate) + logger.Info("CalcTurnTableNum tmprate=%v", tmprate) + if tmprate >= randnum { + idx = k + break + } + } + + if idx == -1 { + if len(cflist) > 0 { + rtnum = cflist[0].Desc + } + } else { + rtnum = cflist[idx].Desc + } + + return rtnum +} + //计算福袋金额 func CalcLuckYBagNum() int { rtnum := 0 diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index e0b6cf7..a7cc90a 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -58,9 +58,10 @@ func startServerHttpServe() { http.HandleFunc("/russiaxiaoxiao/fetchoffliengold", Fetchoffliengold) //请求领取离线金币 http.HandleFunc("/russiaxiaoxiao/uploadhigestscore", Uploadhigestscore) //上报玩家历史最高分 http.HandleFunc("/russiaxiaoxiao/queryrankinfo", Queryrankinfo) //查询排行榜 + http.HandleFunc("/russiaxiaoxiao/querydrawreward", Querydrawreward) //请求抽奖 //.......................................... - http.HandleFunc("/eliminatestar/getuserdata", Getuserdata) //获取玩家数据 + /*http.HandleFunc("/eliminatestar/getuserdata", Getuserdata) //获取玩家数据 http.HandleFunc("/eliminatestar/watchads", Watchads) //观看激励视频 http.HandleFunc("/eliminatestar/queryguaninfo", Queryguaninfo) //获取存钱罐数据 //http.HandleFunc("/eliminatestar/getguangold", Getguangold) //获取金币到存钱罐 @@ -75,10 +76,10 @@ func startServerHttpServe() { http.HandleFunc("/eliminatestar/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 http.HandleFunc("/eliminatestar/querysigndata", Querysigndata) //获取签到数据 http.HandleFunc("/eliminatestar/usersign", Usersign) //玩家签到 - // - http.HandleFunc("/eliminatestar/readNumUpload", ReadNumUpload) //阅读量上报 - http.HandleFunc("/eliminatestar/queryreadgold", QueryReadGold) //获取微转发金币数 - http.HandleFunc("/eliminatestar/fetchreadgold", Fetchreadgold) //领取微转发金币数 + //*/ + http.HandleFunc("/russiaxiaoxiao/readNumUpload", ReadNumUpload) //阅读量上报 + http.HandleFunc("/russiaxiaoxiao/queryreadgold", QueryReadGold) //获取微转发金币数 + http.HandleFunc("/russiaxiaoxiao/fetchreadgold", Fetchreadgold) //领取微转发金币数 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) @@ -487,6 +488,34 @@ func Querdrawinfo(w http.ResponseWriter, r *http.Request) { //HandlerQuerdrawinfo(w, s, Uuid) } +func Querydrawreward(w http.ResponseWriter, r *http.Request) { + + gameid := "" + channel := "" + uniqueid := "" + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) + gameid = r.Header.Get("Gameid") + channel = r.Header.Get("Channel") + uniqueid = r.Header.Get("Uuid") + r.Header.Get("Channel") + } + + if Uuid == 0 { + SetHeader(w) + logger.Error("Uuid is nil!") + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Querydrawreward , body:%v,uuid=%v", s, uniqueid) + + HandlerQuerydrawreward(w, s, uniqueid, gameid, channel, Uuid) + +} + func Queryrankinfo(w http.ResponseWriter, r *http.Request) { gameid := "" diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 8f6ed4c..e2c04ce 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -38,6 +38,8 @@ func HandlerSyncuserdata(w http.ResponseWriter, data string, uniqueuuid, gameid, resp.Data.Sumloginday = uinfo.SumLoginDay resp.Data.Nowtime = int(time.Now().Unix()) resp.Data.Luckbaglefttime = uinfo.LuckyBagLeftTimes + resp.Data.Leftfreeticket = uinfo.FreeTicket + resp.Data.Leftticket = uinfo.Ticket break } @@ -117,6 +119,67 @@ func HandlerUploaduserbasicinfo(w http.ResponseWriter, data string, uniqueuuid s fmt.Fprint(w, string(respstr)) } +func HandlerQuerydrawreward(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { + SetHeader(w) + var resp QuerydrawrewardResp + resp.Code = 0 + resp.Message = "success" + + for { + + uinfo, err := GetUserInfo(uniqueuuid) + if err != nil { + logger.Info("GetUserInfo HandlerQuerydrawreward data failed:%v,for:%v", err, data) + resp.Message = "GetUserInfo failed" + resp.Code = 1 + break + } + + if uinfo.FreeTicket == 0 && uinfo.Ticket == 0 { + //已经没有抽奖次数了 + logger.Info("GetUserInfo HandlerQuerydrawreward data failed:%v,for:%v", err, data) + resp.Message = "已经没有抽奖次数了" + resp.Code = 1 + break + } + + addgold := CalcTurnTableNum() + + if addgold == 0 { + logger.Info("GetUserInfo HandlerQuerydrawreward data failed:%v,for:%v", err, data) + resp.Message = "CalcTurnTableNumfaile" + resp.Code = 1 + break + } + + realgold, err := AddCoinToSdk(uuid, addgold, gameid, channel, REDBAGTYPE_106) + if err != nil { + logger.Info("GetUserInfo HandlerQuerydrawreward data failed:%v,for:%v", err, data) + resp.Message = "后台加金币失败了" + resp.Code = 1 + break + } + + uinfo.RealGold = realgold + if uinfo.FreeTicket > 0 { + uinfo.FreeTicket-- + } else { + uinfo.Ticket-- + } + + SaveUserInfo(uinfo, uniqueuuid) + resp.Data.Getgold = addgold + resp.Data.Walletgold = uinfo.RealGold + + resp.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerQueryrankinfo(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { SetHeader(w) var resp QueryrankinfoResp -- libgit2 0.21.0