diff --git a/src/HttpServer/jsonconf/jsonconf.go b/src/HttpServer/jsonconf/jsonconf.go index 7d3e514..75d350b 100644 --- a/src/HttpServer/jsonconf/jsonconf.go +++ b/src/HttpServer/jsonconf/jsonconf.go @@ -84,6 +84,13 @@ type InvestmentsConfigDesc struct { Reward []int `json:"reward"` } +type GunBigBounceConfigDesc struct { + Id int `json:"id"` + Gun_level int `json:"gun_level"` + Luckybag float32 `json:"Luckybag"` + RewardVideo int `json:"RewardVideo"` +} + type GameConfig struct { WithDrawConfig []WithDrawDesc ActiveWithdrawConfig []ActiveWithdrawConfigDesc @@ -96,6 +103,7 @@ type GameConfig struct { TaskConfig []AchieveDesc SignConfig []SignConfigDesc InvestmentsConfig []InvestmentsConfigDesc + GunBigBounceConfig []GunBigBounceConfigDesc } func GetJsonConf() *GameConfig { @@ -267,10 +275,33 @@ func LoadJsonConf() error { return err } + + path = "../jsonconf/GunBigBounceConfig.json" + content, err = file_get_contents(path) + if err != nil { + logger.Info("loadJsonConf failed1,err=%v", err) + return err + } + + err = json.Unmarshal([]byte(content), &g_jsonconf.GunBigBounceConfig) + if err != nil { + logger.Info("loadJsonConf failed1,err=%v", err) + return err + } + logger.Info("loadJsonConf success pconf=%v,err=%v", *g_jsonconf, err) return nil } +func GetGunBigBonusCfg(id int) *GunBigBounceConfigDesc { + for _, v := range g_jsonconf.GunBigBounceConfig { + if v.Id == id { + return &v + } + } + return nil +} + func GetsignConfig(id int) *SignConfigDesc { for _, v := range g_jsonconf.SignConfig { if v.Id == id { diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index ec2fcc1..8342457 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -56,6 +56,16 @@ type GettaskrewardResp struct { Data GettaskrewardData `json:"data"` } +type QuerygunbonusData struct { + Finished []int `json:"finished"` +} + +type QuerygunbonusResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data QuerygunbonusData `json:"data"` +} + type QuerytaskinfoReq struct { Tasktype int `json:"tasktype"` Gameid string `json:"gameid"` @@ -303,6 +313,7 @@ type UserData struct { Tili int //体力 ReadNum int //玩家微转发阅读量 GetCashCnt int //当天提现次数 + GunBonus []int //以领取的新枪奖励id WithDraw WithDrawInfo //提现记录信息 Task TaskInfo //玩家任务完成相关信息 Achieve AchieveMentInfo //玩家成就完成相关数据 diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 469f753..457a33b 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -54,6 +54,7 @@ func startServerHttpServe() { http.HandleFunc("/gunshot/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 http.HandleFunc("/gunshot/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 http.HandleFunc("/gunshot/gettaskreward", Gettaskreward) //领取任务或者成就奖励 + http.HandleFunc("/gunshot/querygunbonus", Querygunbonus) //获取合成新枪奖励列表 @@ -188,6 +189,27 @@ func Querytaskinfo(w http.ResponseWriter, r *http.Request) { HandlerQuerytaskinfo(w, s, Uuid) } +func Querygunbonus(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("Querygunbonus , body:%v,uuid=%v", s, Uuid) + + HandlerQuerygunbonus(w, s, Uuid) +} + func Gettaskreward(w http.ResponseWriter, r *http.Request) { Uuid := 0 diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 3d1d308..fc8c9b6 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -8,6 +8,7 @@ import ( "encoding/json" "fmt" "net/http" + "sort" "strconv" "sync" "time" @@ -310,6 +311,42 @@ func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) { } +func HandlerQuerygunbonus(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp QuerygunbonusResp + resp.Code = 0 + var rdata CommReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerQuerygunbonus data failed:%v,for:%v", err, data) + resp.Message = "网络错误" + resp.Code = 1 + 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 = 1 + break + } + + resp.Data.Finished = append(resp.Data.Finished,uinfo.GunBonus...) + + resp.Code = 0 + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) + +} + func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { SetHeader(w) var resp GettaskrewardResp @@ -750,7 +787,46 @@ func HandlerFetchredbag(w http.ResponseWriter, data string, uuid int) { } - } else { + } else if rdata.Rtype == 5 { + isin := false + for _,v := range uinfo.GunBonus { + if v == rdata.Param { + isin = true + break + } + } + + if isin { + logger.Info("GetUserInfo HandlerFetchredbag data failed:%v,for:%v", err, data) + resp.Message = "已经领取过了!" + resp.Code = 1 + break + } + + cfg := jsonconf.GetGunBigBonusCfg(rdata.Param) + if cfg == nil { + logger.Info("GetUserInfo HandlerFetchredbag data failed:%v,for:%v", err, data) + resp.Message = "获取配置失败!" + resp.Code = 1 + break + } + + + getnum := int(cfg.Luckybag) + realgold, err := AddCoinToSdk(uuid, getnum, rdata.Gameid, rdata.Channel, 108) + if err !=nil { + logger.Error("HandlerFetchredbag failed err=%v", err) + resp.Message = "服务器错误!" + resp.Code = 1 + break + } + + resp.Data.Getgold = getnum + resp.Data.Walletgold = realgold + + uinfo.GunBonus = append(uinfo.GunBonus,rdata.Param) + sort.Ints(uinfo.GunBonus) + }else { /*if uinfo.SpecialLevel <= uinfo.SpecialNum { logger.Error("HandlerFetchredbag failed err=%v", err) resp.Message = "没有可以领取的随机红包次数了!" -- libgit2 0.21.0