package logic import ( "HttpServer/jsonconf" "HttpServer/redishandler" "common/logger" "common/redis" "encoding/json" "fmt" "net/http" "time" ) func HandlerGetStampTime(w http.ResponseWriter, data string) { SetHeader(w) var resp GetStampTimeResp resp.ErrNum = 0 resp.RetMsg = "success" for { resp.RetData.Stamp = int(time.Now().Unix()) break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } func HandlerUpdatedata(w http.ResponseWriter, data string) { SetHeader(w) var resp UpdatedataResp resp.ErrNum = 0 resp.RetMsg = "success" var rdata UpdatedataReq err := json.Unmarshal([]byte(data), &rdata) for { if err != nil { logger.Info("json decode HandlerUpdatedata data failed:%v,for:%v", err, data) resp.RetMsg = "json解析失败" resp.ErrNum = ERROR_UNMASH_JSONFAILED break } uinfo, err := GetUserInfo(rdata.Openid) if err != nil { logger.Info(" HandlerDosign getdata failed:%v,for:%v", err, data) resp.RetMsg = "服务器读取数据失败" resp.ErrNum = ERROR_SERVER_FAILED break } uinfo.PlayerData = rdata.PlayerData err = SaveUserInfo(uinfo) if err != nil { logger.Error("HandlerUpdatedata failed err=%v", err) } break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } func HandlerUserlogin(w http.ResponseWriter, data string) { SetHeader(w) var resp UserloginResp resp.ErrNum = 0 resp.RetMsg = "success" var rdata UserloginReq 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 } //先判断是否存在 isexist, err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, rdata.Openid) if err != nil { logger.Info("json decode HandlerDosign data failed:%v,for:%v", err, data) resp.RetMsg = "json解析失败" resp.ErrNum = ERROR_UNMASH_JSONFAILED break } if !isexist { //不存在 新号 tmp := new(UserData) err = tmp.InitUserInfo(rdata.Openid) if err != nil { logger.Info(" HandlerDosign getdata failed:%v,for:%v", err, data) resp.RetMsg = "服务器读取数据失败" resp.ErrNum = ERROR_SERVER_FAILED break } resp.RetData.IsNew = 1 resp.RetData.PlayerData = tmp.PlayerData resp.RetData.Id = rdata.Openid resp.RetData.RegisterTime = tmp.RegTime resp.RetData.Curday = tmp.SingDay resp.RetData.Curround = tmp.SignRound resp.RetData.Issigntaday = tmp.IsSign break } uinfo, err := GetUserInfo(rdata.Openid) if err != nil { logger.Info(" HandlerDosign getdata failed:%v,for:%v", err, data) resp.RetMsg = "服务器读取数据失败" resp.ErrNum = ERROR_SERVER_FAILED break } resp.RetData.RegisterTime = uinfo.RegTime resp.RetData.IsNew = 0 resp.RetData.Id = rdata.Openid resp.RetData.PlayerData = uinfo.PlayerData 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 HandlerGetopenid(w http.ResponseWriter, data string) { SetHeader(w) var resp GetopenidResp resp.ErrNum = 0 resp.RetMsg = "success" var rdata GetopenidReq 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 } openid, err := GetOpenid(rdata.Code) if err != nil { logger.Info(" HandlerGetopenid AddCoinToTouTiao failed:%v,for:%v", err, data) resp.RetMsg = "调用头条接口失败" resp.ErrNum = ERROR_TOUTIAOAPI_FAILED break } resp.RetData.Openid = openid break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } 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++ } logger.Info("HandlerDosign fin uinfo=%v", uinfo) SaveUserInfo(uinfo) //加金币 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, 1, cfg.Reward, "签到奖励", "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 //过关金币值改为5 rdata.Gold_num = 5 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, 1, 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 } uinfo.CalcProperty() //判断物资是否足够 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, 1, 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 resp.RetData.Curpoerty = uinfo.Property //保存 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, 1) if err != nil { logger.Error("HandlerGetcurproperty err=%v", err) } resp.RetData.Curgold = newgold break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) }