diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index 48881a9..b23a0d8 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -53,6 +53,8 @@ const ( ) const ( - WATCH_ADD_DAY_LIMIT = 50 //当天获取红包次数限制 - FREE_REDBAG_NUM = 3 //玩家免费红包次数 + WATCH_ADD_DAY_LIMIT = 50 //当天获取红包次数限制 + FREE_REDBAG_NUM = 3 //玩家免费红包次数 + READGOLDMULTI = 10 //阅读量到金币转化倍数 + SDKOPGOLD_TYPEWE = 302 //微转发金币类型 ) diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 09f864a..2be5ded 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -223,6 +223,26 @@ type QuerysigndataData struct { IssignToday int `json:"issignToday"` } +type QueryReadGoldData struct { + Goldnum int `json:"goldnum"` +} + +type QueryReadGoldResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data QueryReadGoldData `json:"data"` +} + +type FetchreadgoldData struct { + Goldnum int `json:"goldnum"` +} + +type FetchreadgoldResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data FetchreadgoldData `json:"data"` +} + type QuerysigndataResp struct { Code int `json:"code"` Message string `json:"message"` diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index b626648..8a83fec 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -63,6 +63,8 @@ func startServerHttpServe() { http.HandleFunc("/eliminatestar/usersign", Usersign) //玩家签到 // http.HandleFunc("/eliminatestar/readNumUpload", ReadNumUpload) //阅读量上报 + http.HandleFunc("/eliminatestar/queryreadgold", QueryReadGold) //获取微转发金币数 + http.HandleFunc("/eliminatestar/fetchreadgold", Fetchreadgold) //领取微转发金币数 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) @@ -160,6 +162,48 @@ func Querysigndata(w http.ResponseWriter, r *http.Request) { HandlerQuerysigndata(w, s, Uuid) } +func Fetchreadgold(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("Fetchreadgold , body:%v,uuid=%v", s, Uuid) + + HandlerFetchreadgold(w, s, Uuid) +} + +func QueryReadGold(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("QueryReadGold , body:%v,uuid=%v", s, Uuid) + + HandlerQueryReadGold(w, s, Uuid) +} + func Addcoin(w http.ResponseWriter, r *http.Request) { SetHeader(w) query := r.URL.Query() diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index e5ceb06..5fc5a74 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -228,6 +228,90 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { } +func HandlerFetchreadgold(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp FetchreadgoldResp + resp.Code = 0 + var rdata CommReq + err := json.Unmarshal([]byte(data), &rdata) + for { + + if err != nil { + logger.Info("json decode HandlerFetchreadgold data failed:%v,for:%v", err, data) + resp.Message = "json解析错误" + 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 + } + + //加金币到后台 + addgold := uinfo.ReadNum * READGOLDMULTI + realgiold, err := AddCoinToSdk(uuid, addgold, rdata.Gameid, rdata.Channel, SDKOPGOLD_TYPEWE) + if err != nil { + logger.Error("HandlerFetchreadgold failed err=%v", err) + resp.Message = "后台加金币失败" + resp.Code = ERROR_SRV_ERROR + } + + uinfo.RealGold = realgiold + uinfo.ReadNum = 0 + + err = SaveUserInfo(uinfo, uniqueuuid) + if err != nil { + logger.Error("HandlerFetchreadgold failed err=%v", err) + } + //resp.Data.Goldnum = uinfo.ReadNum * READGOLDMULTI + + resp.Code = ERROR_OK + break + } + + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandlerQueryReadGold(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp QueryReadGoldResp + resp.Code = 0 + var rdata CommReq + err := json.Unmarshal([]byte(data), &rdata) + for { + + if err != nil { + logger.Info("json decode HandlerQueryReadGold data failed:%v,for:%v", err, data) + resp.Message = "json解析错误" + 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 + } + + resp.Data.Goldnum = uinfo.ReadNum * READGOLDMULTI + + resp.Code = ERROR_OK + break + } + + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { SetHeader(w) var resp QuerysigndataResp -- libgit2 0.21.0