diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 5794c8d..b715368 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -92,6 +92,40 @@ type AddgoldResp struct { RetData AddgoldData `json:"retData"` } +type QuersigndataReq struct { + Openid string `json:"openid"` +} + +type QuersigndataData struct { + Curround int `json:"curround"` + Curday int `json:"curday"` + Issigntaday int `json:"issigntaday"` +} + +type QuersigndataResp struct { + ErrNum int `json:"errNum"` + RetMsg string `json:"retMsg"` + RetData QuersigndataData `json:"retData"` +} + +type DosignReq struct { + Openid string `json:"openid"` + Device_id int `json:"device_id"` +} + +type DosignData struct { + Curround int `json:"curround"` + Curday int `json:"curday"` + Issigntaday int `json:"issigntaday"` + Taoalgoldnum int `json:"taoalgoldnum"` +} + +type DosignResp struct { + ErrNum int `json:"errNum"` + RetMsg string `json:"retMsg"` + RetData DosignData `json:"retData"` +} + //------------------------------------------------------------------------------------------------------ type UserData struct { diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index d2c5b89..c18a062 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -10,5 +10,6 @@ const ( ERROR_TOUTIAOAPI_FAILED = 6 //头条接口失败 ERROR_PARAM_INVALID = 7 //等级参数无效 ERROR_GOLD_LIMIT = 8 //当日合成获得金币已达上限 + ERROR_ALREADY_SIGNED = 9 //当日已签到 ) diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 1cb1743..20e3f17 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -47,10 +47,33 @@ func startServerHttpServe() { http.HandleFunc("/daycs/fetchproterybox", Fetchproterybox) //请求领取物资宝箱 http.HandleFunc("/daycs/uploadgunlv", Uploadgunlv) //上报当前枪支等级 http.HandleFunc("/daycs/addgold", Addgold) //增加金币接口(过关加金币用) + http.HandleFunc("/daycs/quersigndata", Quersigndata) //获取签到数据 + http.HandleFunc("/daycs/dosign", Dosign) //签到 + err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } +func Dosign(w http.ResponseWriter, r *http.Request) { + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Dosign , body:%v", s) + + HandlerDosign(w, s) +} + +func Quersigndata(w http.ResponseWriter, r *http.Request) { + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Quersigndata , body:%v", s) + + HandlerQuersigndata(w, s) +} + func Addgold(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 e300393..17ff8bd 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -8,10 +8,112 @@ import ( "net/http" ) +func HandlerDosign(w http.ResponseWriter, data string) { + SetHeader(w) + var resp DosignResp + resp.ErrNum = 0 + resp.RetMsg = "success" + var rdata DosignReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerDosign 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(" HandlerDosign getdata failed:%v,for:%v", err, data) + resp.RetMsg = "服务器读取数据失败" + resp.ErrNum = ERROR_SERVER_FAILED + break + } + + if uinfo.IsSign == 1 { + logger.Info(" HandlerDosign issign failed:%v,for:%v", err, data) + resp.RetMsg = "当天已签到" + resp.ErrNum = ERROR_ALREADY_SIGNED + break + } + + uinfo.IsSign = 1 + uinfo.SingDay++ + if uinfo.SingDay > 7 { + uinfo.SingDay = 1 + uinfo.SignRound++ + } + + //加金币 + cfg := jsonconf.GetSignConfig(uinfo.SingDay) + if cfg == nil { + logger.Info(" HandlerDosign issign failed:%v,for:%v", err, data) + resp.RetMsg = "读取配置错误" + resp.ErrNum = ERROR_READCFG_FAILED + break + } + + //加金币 + _, sumgold, err := AddCoinToTouTiao(rdata.Openid, rdata.Device_id, cfg.Num, "签到奖励", "other") + if err != nil { + logger.Info(" HandlerAddgold AddCoinToTouTiao failed:%v,for:%v", err, data) + resp.RetMsg = "调用头条接口失败" + resp.ErrNum = ERROR_TOUTIAOAPI_FAILED + break + } + + resp.RetData.Issigntaday = uinfo.IsSign + resp.RetData.Curround = uinfo.SignRound + resp.RetData.Curday = uinfo.SingDay + resp.RetData.Taoalgoldnum = sumgold + + break + } + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandlerQuersigndata(w http.ResponseWriter, data string) { + SetHeader(w) + var resp QuersigndataResp + resp.ErrNum = 0 + resp.RetMsg = "success" + var rdata QuersigndataReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerQuersigndata 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(" HandlerQuersigndata getdata failed:%v,for:%v", err, data) + resp.RetMsg = "服务器读取数据失败" + resp.ErrNum = ERROR_SERVER_FAILED + break + } + + resp.RetData.Curday = uinfo.SingDay + resp.RetData.Curround = uinfo.SignRound + resp.RetData.Issigntaday = uinfo.IsSign + + break + } + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerAddgold(w http.ResponseWriter, data string) { SetHeader(w) var resp AddgoldResp resp.ErrNum = 0 + resp.RetMsg = "success" var rdata AddgoldReq err := json.Unmarshal([]byte(data), &rdata) for { -- libgit2 0.21.0