From db30a4ee7c08818ebc085a7b9c628da819d9df35 Mon Sep 17 00:00:00 2001 From: 陆恒 Date: Tue, 29 Sep 2020 10:05:24 +0800 Subject: [PATCH] 增加抽奖功能 --- src/HttpServer/logic/datadef.go | 18 ++++++++++++++++++ src/HttpServer/logic/function.go | 2 ++ src/HttpServer/logic/httpserver.go | 22 ++++++++++++++++++++++ src/HttpServer/logic/logic.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 0 deletions(-) diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index c4768ad..70547f0 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -26,6 +26,7 @@ type UserLoginData struct { IsNew int `json:"isnew"` Issignshow int `json:"issignshow"` Leftredbagnum int `json:"leftredbagnum"` + Curtime int `json:"curtime"` } type UserLoginResp struct { @@ -470,6 +471,23 @@ type WithDrawDesc struct { Day int `json:"day"` } +type TurntablebagReq struct { + Num int `json:"num"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` +} + +type TurntablebagData struct { + Getgoldnum int `json:"getgoldnum"` + Walletgold int `json:"walletgold"` +} + +type TurntablebagResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data TurntablebagData `json:"data"` +} + //玩家数据 type UserData struct { Userid int //玩家id diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index f588493..512e519 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -688,6 +688,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int, uniqueuid s resp.Data.IsNew = initdata.IsNew resp.Data.Issignshow = initdata.SignShow resp.Data.Leftredbagnum = DAILYFETCHREDBAGNUMLIMIT - initdata.FetchRdBagNum + resp.Data.Curtime = int(time.Now().Unix()) err := SaveUserInfo(&initdata, uniqueuid) logger.Info("InitUserInfoddddd uinfo=%+v", initdata) @@ -982,6 +983,7 @@ func GetUserData(uuid int, uniqueuid string, req *UserLoginReq, resp *UserLoginR resp.Data.IsNew = data.IsNew resp.Data.Issignshow = data.SignShow resp.Data.Leftredbagnum = DAILYFETCHREDBAGNUMLIMIT - data.FetchRdBagNum + resp.Data.Curtime = int(time.Now().Unix()) return nil } diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index d206f82..7b21196 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -77,6 +77,7 @@ func startServerHttpServe() { http.HandleFunc("/sixstar/getdata", Getdata) //获取数据 http.HandleFunc("/sixstar/uploadscore", Uploadscore) //上报当天积分 http.HandleFunc("/sixstar/queryrankinfo", Queryrankinfo) //获取排行榜信息 + http.HandleFunc("/sixstar/turntablebag", Turntablebag) //转盘红包 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) @@ -153,6 +154,27 @@ func Savadata(w http.ResponseWriter, r *http.Request) { HandlerSavadata(w, s, Uuid) } +func Turntablebag(w http.ResponseWriter, r *http.Request) { + + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) + } + + if Uuid == 0 { + SetHeader(w) + //logger.Error("Uuid is nil!") + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Turntablebag , body:%v,uuid=%v", s, Uuid) + + HandlerTurntablebag(w, s, Uuid) +} + func Queryrankinfo(w http.ResponseWriter, r *http.Request) { Uuid := 0 diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index daa4c28..d15858b 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -800,6 +800,54 @@ func HandlerUploadscore(w http.ResponseWriter, data string, uuid int) { fmt.Fprint(w, string(respstr)) } +func HandlerTurntablebag(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp TurntablebagResp + resp.Code = 0 + resp.Message = "success" + var rdata TurntablebagReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerTurntablebag data failed:%v,for:%v", err, data) + resp.Message = "网络错误" + resp.Code = ERROR_JSONUNMASH_ERROR + break + } + + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel + uinfo, err := GetUserInfo(uniqueuuid) + if err != nil || uinfo == nil { + logger.Error("redis failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + goldnum, _, err := AddCoinToSdk(uuid, rdata.Num, rdata.Gameid, rdata.Channel, 104) + if err != nil { + logger.Error("AddCoinToSdk failed rdata=%v", rdata) + resp.Message = "网络错误" + resp.Code = ERROR_SRV_ERROR + break + } + uinfo.RealGold = goldnum + + resp.Data.Walletgold = goldnum + resp.Data.Getgoldnum = rdata.Num + //加入排行榜 + SaveUserInfo(uinfo, uniqueuuid) + + resp.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerSavadata(w http.ResponseWriter, data string, uuid int) { SetHeader(w) var resp SavadataResp -- libgit2 0.21.0