From e62063c8ab914fb99ec4e4b06acd8d2675459847 Mon Sep 17 00:00:00 2001 From: 陆恒 Date: Wed, 27 May 2020 14:21:52 +0800 Subject: [PATCH] 提交相关接口 --- src/HttpServer/logic/datadef.go | 36 +++++++++++++++++++++++++++++++++++- src/HttpServer/logic/errordef.go | 2 ++ src/HttpServer/logic/function.go | 2 ++ src/HttpServer/logic/httpserver.go | 22 ++++++++++++++++++++++ src/HttpServer/logic/logic.go | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 167 insertions(+), 1 deletion(-) diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index b93e5cc..5794c8d 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -25,7 +25,8 @@ type GetAccessTokenResp struct { //-------------------------------------------------------------------------- type GetcurpropertyReq struct { - Openid string `json:"openid"` + Openid string `json:"openid"` + Device_id int `json:"device_id"` } type GetcurpropertyData struct { @@ -33,6 +34,7 @@ type GetcurpropertyData struct { Speed int64 `json:"speed"` Curlevle int64 `json:"curlevle"` Leftcnt int `json:"leftcnt"` + Curgold int `json:"curgold"` } type GetcurpropertyResp struct { @@ -59,6 +61,37 @@ type FetchproteryboxResp struct { RetData FetchproteryboxData `json:"retData"` } +type UploadgunlvReq struct { + Openid string `json:"openid"` + Maxlevel int `json:"maxlevel"` +} + +type UploadgunlvData struct { + Speed int64 `json:"speed"` +} + +type UploadgunlvResp struct { + ErrNum int `json:"errNum"` + RetMsg string `json:"retMsg"` + RetData UploadgunlvData `json:"retData"` +} + +type AddgoldReq struct { + Openid string `json:"openid"` + Device_id int `json:"device_id"` + Gold_num int `json:"gold_num"` +} + +type AddgoldData struct { + Taoalgoldnum int `json:"taoalgoldnum"` +} + +type AddgoldResp struct { + ErrNum int `json:"errNum"` + RetMsg string `json:"retMsg"` + RetData AddgoldData `json:"retData"` +} + //------------------------------------------------------------------------------------------------------ type UserData struct { @@ -72,4 +105,5 @@ type UserData struct { SingDay int //签到天数 IsSign int //当天是否已经签到 TodaySec int //当天零点时间戳,用于判断跨天 + PassLvGold int //当天过关获得的金币 } diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index 7030912..d2c5b89 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -8,5 +8,7 @@ const ( ERROR_READCFG_FAILED = 4 //读取配置错误 ERROR_PROPERTY_NOTENOUGH = 5 //当前物资不足 ERROR_TOUTIAOAPI_FAILED = 6 //头条接口失败 + ERROR_PARAM_INVALID = 7 //等级参数无效 + ERROR_GOLD_LIMIT = 8 //当日合成获得金币已达上限 ) diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index f5a771a..e9d18c3 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -72,6 +72,7 @@ func (u *UserData) InitUserInfo(openid string) error { u.MaxLevel = 1 u.Property = 0 u.SingDay = 0 + u.PassLvGold = 0 u.TodaySec = int(time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 0, 0, 0, 0, nowtime.Location()).Unix()) u.TotalFetchCnt = 0 //用于计算当前领取次数 @@ -135,6 +136,7 @@ func (u *UserData) CalcProperty() { u.SingDay = 0 u.SignRound++ } + u.PassLvGold = 0 } } //保存 diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index d05b1de..1cb1743 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -45,10 +45,32 @@ func startServerHttpServe() { //---------------------------------------------------------------------------------------- http.HandleFunc("/daycs/getcurproperty", Getcurproperty) //请求当前物资 http.HandleFunc("/daycs/fetchproterybox", Fetchproterybox) //请求领取物资宝箱 + http.HandleFunc("/daycs/uploadgunlv", Uploadgunlv) //上报当前枪支等级 + http.HandleFunc("/daycs/addgold", Addgold) //增加金币接口(过关加金币用) err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } +func Addgold(w http.ResponseWriter, r *http.Request) { + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Addgold , body:%v", s) + + HandlerAddgold(w, s) +} + +func Uploadgunlv(w http.ResponseWriter, r *http.Request) { + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Uploadgunlv , body:%v", s) + + HandlerUploadgunlv(w, s) +} + func Fetchproterybox(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 50ffae9..e300393 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -8,10 +8,110 @@ import ( "net/http" ) +func HandlerAddgold(w http.ResponseWriter, data string) { + SetHeader(w) + var resp AddgoldResp + resp.ErrNum = 0 + var rdata AddgoldReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerAddgold data failed:%v,for:%v", err, data) + resp.RetMsg = "json解析失败" + resp.ErrNum = ERROR_UNMASH_JSONFAILED + break + } + + uinfo, err := GetUserInfo(rdata.Openid) + if err != nil || uinfo == nil { + logger.Info(" HandlerAddgold getdata failed:%v,for:%v", err, data) + resp.RetMsg = "服务器读取数据失败" + resp.ErrNum = ERROR_SERVER_FAILED + break + } + + if uinfo.PassLvGold >= 100 { + logger.Info(" HandlerAddgold PassLvGold failed:%v,for:%v", err, data) + resp.RetMsg = "当日合成获得金币已达上限" + resp.ErrNum = ERROR_GOLD_LIMIT + break + } + + addnum, sumnum, err := AddCoinToTouTiao(rdata.Openid, rdata.Device_id, rdata.Gold_num, "闯关送金币", "other") + if err != nil { + logger.Info(" HandlerAddgold property failed:%v,for:%v", err, data) + resp.RetMsg = "调用头条接口失败" + resp.ErrNum = ERROR_TOUTIAOAPI_FAILED + break + } + + uinfo.PassLvGold += addnum + resp.RetData.Taoalgoldnum = sumnum + //保存 + err = SaveUserInfo(uinfo) + if err != nil { + logger.Error("HandlerFetchproterybox err=%v", err) + } + + break + } + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandlerUploadgunlv(w http.ResponseWriter, data string) { + SetHeader(w) + var resp UploadgunlvResp + resp.ErrNum = 0 + resp.RetMsg = "success" + var rdata UploadgunlvReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerUploadgunlv data failed:%v,for:%v", err, data) + resp.RetMsg = "json解析失败" + resp.ErrNum = ERROR_UNMASH_JSONFAILED + break + } + + uinfo, err := GetUserInfo(rdata.Openid) + if err != nil || uinfo == nil { + logger.Info(" HandlerFetchproterybox getdata failed:%v,for:%v", err, data) + resp.RetMsg = "服务器读取数据失败" + resp.ErrNum = ERROR_SERVER_FAILED + break + } + + if rdata.Maxlevel < uinfo.MaxLevel { + logger.Info(" HandlerFetchproterybox MaxLevel failed:%v,for:%v", err, data) + resp.RetMsg = "等级参数不正确" + resp.ErrNum = ERROR_PARAM_INVALID + break + } + + uinfo.MaxLevel = rdata.Maxlevel + + resp.RetData.Speed = uinfo.CalcSpeed() + + //保存 + err = SaveUserInfo(uinfo) + if err != nil { + logger.Error("HandlerFetchproterybox err=%v", err) + } + + break + } + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerFetchproterybox(w http.ResponseWriter, data string) { SetHeader(w) var resp FetchproteryboxResp resp.ErrNum = 0 + resp.RetMsg = "success" var rdata FetchproteryboxReq err := json.Unmarshal([]byte(data), &rdata) for { @@ -88,6 +188,7 @@ func HandlerGetcurproperty(w http.ResponseWriter, data string) { SetHeader(w) var resp GetcurpropertyResp resp.ErrNum = 0 + resp.RetMsg = "success" var rdata GetcurpropertyReq err := json.Unmarshal([]byte(data), &rdata) for { @@ -114,6 +215,11 @@ func HandlerGetcurproperty(w http.ResponseWriter, data string) { resp.RetData.Curlevle = uinfo.CalcCurLe() resp.RetData.Protery = uinfo.Property resp.RetData.Speed = uinfo.CalcSpeed() + newgold, err := GetCoinFromToutiao(rdata.Openid, rdata.Device_id) + if err != nil { + logger.Error("HandlerGetcurproperty err=%v", err) + } + resp.RetData.Curgold = newgold break } -- libgit2 0.21.0