diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 602cddb..d35e585 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -158,6 +158,23 @@ type GettaskrewardResp struct { } + +type GetnewlevelrewardReq struct { + Rewardtype int `json:"rewardtype"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` +} + +type GetnewlevelrewardData struct { + Goldnum int `json:"goldnum"` +} +type GetnewlevelrewardResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data GetnewlevelrewardData `json:"data"` +} + + //********************************************************************************************************** type TaskListDesc struct { @@ -214,6 +231,7 @@ type WithDrawDesc struct { type UserData struct { Userid int //玩家id Lv int //玩家当前等级 + LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 Exp int //玩家当前经验值 GuanGold int //玩家存钱罐中金币数量 RealGold int //玩家实际金币数量(可用于提现的) diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index bc32dd1..1e86155 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -19,4 +19,5 @@ const ( ERROR_TASKCANNOTGET =14 //当前任务未完成或已领取 ERROR_TASKID_WRONG =15 //当前任务id错误 ERROR_TASKPRE_NOTGET =16 //前置任务还未领取 + ERROR_LVREWARDALREADYGET =17 //当前等级奖励已经领取过了 ) \ No newline at end of file diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 1368bab..dad60f6 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -403,6 +403,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error{ var initdata UserData initdata.Lv = 1 + initdata.LvRewardGet = 1 initdata.Exp = 0 initdata.Userid = uuid initdata.ContinueLoginDay = 1 @@ -672,6 +673,7 @@ func (uinfo* UserData) AddUserExp(num int) bool { }else { //够升级的 升一级 uinfo.Lv ++ + uinfo.LvRewardGet = 1 //当前等级奖励置位可以领取 isup = true totalexp -= needexp uinfo.Exp = 0 diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index f9e7722..78bcc0a 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -50,12 +50,34 @@ func startServerHttpServe() { http.HandleFunc("/eliminatestar/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 http.HandleFunc("/eliminatestar/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 http.HandleFunc("/eliminatestar/gettaskreward", Gettaskreward) //领取任务或者成就奖励 + http.HandleFunc("/eliminatestar/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } +func Getnewlevelreward(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("Getnewlevelreward , body:%v,uuid=%v", s, Uuid) + + HandlerGetnewlevelreward(w, s, Uuid) +} + func Gettaskreward(w http.ResponseWriter, r *http.Request) { diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 7d3c957..d1ac39c 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -204,6 +204,80 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { +func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp GetnewlevelrewardResp + resp.Code = 0 + var rdata GetnewlevelrewardReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerGetnewlevelreward data failed:%v,for:%v", err, data) + resp.Message = "网络错误" + resp.Code = ERROR_JSONUNMASH_ERROR + break + } + uinfo,err := GetUserInfo(uuid) + if err != nil || uinfo == nil{ + logger.Error("redis failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + //判断是否可以领取 + if uinfo.LvRewardGet != 1 { + logger.Error("LvRewardGet failed err=%v", err) + resp.Message = "当前等级奖励已经领取过了" + resp.Code = ERROR_LVREWARDALREADYGET + break + } + + cfg := GetUserLvConfig(uinfo.Lv) + if cfg == nil { + logger.Error("GetUserLvConfig failed err=%v", err) + resp.Message = "网络错误" + resp.Code = ERROR_SRV_ERROR + break + } + + _,err = AddCoinToSdk(uuid,cfg.Cash,rdata.Gameid,rdata.Channel,100) + if err != nil { + logger.Error("AddCoinToSdk failed err=%v", err) + resp.Message = "网络错误" + resp.Code = ERROR_SRV_ERROR + break + } + uinfo.RealGold += cfg.Cash + + if rdata.Rewardtype == 2 { + _,err = AddCoinToSdk(uuid,cfg.Extracash,rdata.Gameid,rdata.Channel,100) + if err != nil { + logger.Error("AddCoinToSdk failed err=%v", err) + resp.Message = "网络错误" + resp.Code = ERROR_SRV_ERROR + break + } + uinfo.RealGold += cfg.Extracash + } + + uinfo.LvRewardGet = 1 +rdata.Rewardtype + + //保存数据 + SaveUserInfo(uinfo) + + + resp.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) + +} + + func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { SetHeader(w) var resp GettaskrewardResp -- libgit2 0.21.0