package logic import ( "HttpServer/jsonconf" "common/logger" "encoding/json" "fmt" "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 { if err != nil { logger.Info("json decode HandlerFetchproterybox 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 uinfo.LeftCnt == 0 { logger.Info(" HandlerFetchproterybox LeftCnt failed:%v,for:%v", err, data) resp.RetMsg = "当天领取已达上限" resp.ErrNum = ERROR_FETCHLIMIT break } //判断物资是否足够 cfg := jsonconf.GetGoldChestConfig(uinfo.TotalFetchCnt + 1) if cfg == nil { logger.Info(" HandlerFetchproterybox cfg failed:%v,for:%v", err, data) resp.RetMsg = "读取配置错误" resp.ErrNum = ERROR_READCFG_FAILED break } if uinfo.Property < cfg.Score { logger.Info(" HandlerFetchproterybox property failed:%v,for:%v", err, data) resp.RetMsg = "当前物资不足" resp.ErrNum = ERROR_PROPERTY_NOTENOUGH break } //加金币 addgold, sumgold, err := AddCoinToTouTiao(rdata.Openid, rdata.Device_id, cfg.Reward, "每日领取宝箱奖励", "other") if err != nil { logger.Info(" HandlerFetchproterybox property failed:%v,for:%v", err, data) resp.RetMsg = "调用头条接口失败" resp.ErrNum = ERROR_TOUTIAOAPI_FAILED break } uinfo.TotalFetchCnt++ uinfo.Property -= cfg.Score uinfo.LeftCnt-- resp.RetData.Goldnum = addgold resp.RetData.Sumgold = sumgold resp.RetData.Curlevle = uinfo.CalcCurLe() resp.RetData.Leftcnt = uinfo.LeftCnt //保存 err = SaveUserInfo(uinfo) if err != nil { logger.Error("HandlerFetchproterybox err=%v", err) } break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } 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 { if err != nil { logger.Info("json decode HandlerGetcurproperty 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(" HandlerGetcurproperty getdata failed:%v,for:%v", err, data) resp.RetMsg = "服务器读取数据失败" resp.ErrNum = ERROR_SERVER_FAILED break } //需要处理一下物资计算 uinfo.CalcProperty() //返回 resp.RetData.Leftcnt = uinfo.LeftCnt 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 } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) }