diff --git a/src/HttpServer/jsonconf/InvestmentsConfig.json b/src/HttpServer/jsonconf/InvestmentsConfig.json new file mode 100644 index 0000000..d5c9df7 --- /dev/null +++ b/src/HttpServer/jsonconf/InvestmentsConfig.json @@ -0,0 +1,50 @@ +[ + { + "id": 1, + "project": "沙漠之鹰", + "time": 5, + "reward": "[1,45]", + "RewardVideo": 0, + "limit": 0 + }, + { + "id": 2, + "project": "MP5冲锋枪", + "time": 10, + "reward": "[1,90]", + "RewardVideo": 0, + "limit": 0 + }, + { + "id": 3, + "project": "AUG突击步枪", + "time": 30, + "reward": "[1,270]", + "RewardVideo": 0, + "limit": 0 + }, + { + "id": 4, + "project": "加特林M134机枪", + "time": 120, + "reward": "[2,50]", + "RewardVideo": 1, + "limit": 3 + }, + { + "id": 5, + "project": "SCAR突击步枪", + "time": 60, + "reward": "[2,200]", + "RewardVideo": 0, + "limit": 0 + }, + { + "id": 6, + "project": "AWM狙击步枪", + "time": 180, + "reward": "[1,100]", + "RewardVideo": 0, + "limit": 0 + } +] \ No newline at end of file diff --git a/src/HttpServer/jsonconf/SignConfig.json b/src/HttpServer/jsonconf/SignConfig.json new file mode 100644 index 0000000..9f92e02 --- /dev/null +++ b/src/HttpServer/jsonconf/SignConfig.json @@ -0,0 +1,44 @@ +[ + { + "id": 1, + "check-in": 1, + "reward": [1,50], + "RewardVideo": 1 + }, + { + "id": 2, + "check-in": 2, + "reward": [1,100], + "RewardVideo": 1 + }, + { + "id": 3, + "check-in": 3, + "reward": [2,12000], + "RewardVideo": 1 + }, + { + "id": 4, + "check-in": 4, + "reward": [1,200], + "RewardVideo": 1 + }, + { + "id": 5, + "check-in": 5, + "reward": [1,200], + "RewardVideo": 1 + }, + { + "id": 6, + "check-in": 6, + "reward": [1,400], + "RewardVideo": 1 + }, + { + "id": 0, + "check-in": 7, + "reward": [2,12000], + "RewardVideo": 1 + } +] \ No newline at end of file diff --git a/src/HttpServer/jsonconf/jsonconf.go b/src/HttpServer/jsonconf/jsonconf.go index 05956e3..7d3e514 100644 --- a/src/HttpServer/jsonconf/jsonconf.go +++ b/src/HttpServer/jsonconf/jsonconf.go @@ -74,6 +74,16 @@ type OnlineRewardConfigDesc struct { RewardVideo int `json:"RewardVideo"` } +type SignConfigDesc struct { + Id int `json:"id"` + Reward []int `json:"reward"` +} + +type InvestmentsConfigDesc struct { + Id int `json:"id"` + Reward []int `json:"reward"` +} + type GameConfig struct { WithDrawConfig []WithDrawDesc ActiveWithdrawConfig []ActiveWithdrawConfigDesc @@ -84,7 +94,8 @@ type GameConfig struct { OnlineRewardConfig []OnlineRewardConfigDesc AchieventConfig []AchieveDesc TaskConfig []AchieveDesc - + SignConfig []SignConfigDesc + InvestmentsConfig []InvestmentsConfigDesc } func GetJsonConf() *GameConfig { @@ -230,6 +241,50 @@ func LoadJsonConf() error { return err } + path = "../jsonconf/SignConfig.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.SignConfig) + if err != nil { + logger.Info("loadJsonConf failed1,err=%v", err) + return err + } + + path = "../jsonconf/InvestmentsConfig.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.InvestmentsConfig) + 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 GetsignConfig(id int) *SignConfigDesc { + for _, v := range g_jsonconf.SignConfig { + if v.Id == id { + return &v + } + } + return nil +} + +func GetInvestConfig(id int) *InvestmentsConfigDesc { + for _, v := range g_jsonconf.InvestmentsConfig { + if v.Id == id { + return &v + } + } + return nil +} diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 44592aa..8cbf880 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -1,5 +1,31 @@ package logic +type QuersigndataData struct { + Curday int `json:"curday"` + Issigntaday int `json:"issigntaday"` +} + +type QuersigndataResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data QuersigndataData `json:"data"` +} + +type DosignData struct { + Curday int `json:"curday"` + Issigntaday int `json:"issigntaday"` + Walletgold int `json:"walletgold"` + Getgold int `json:"getgold"` + Getcurhuobi int `json:"getcurhuobi"` + Rewardtype int `json:"rewardtype"` +} + +type DosignResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data DosignData `json:"data"` +} + type TaskListDesc struct { Taskid int `json:"taskid"` Taskstatus int `json:"taskstatus"` diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index e8954c3..469f753 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -47,6 +47,8 @@ func startServerHttpServe() { http.HandleFunc("/gunshot/uploadspeciallevel", Uploadspeciallevel) //上报当前等级 http.HandleFunc("/gunshot/uploadtili", Uploadtili) //上报当前体力 http.HandleFunc("/gunshot/fetchredbag", Fetchredbag) //领取红包 + http.HandleFunc("/gunshot/quersigndata", Quersigndata) //获取签到数据 + http.HandleFunc("/gunshot/dosign", Dosign) //签到 http.HandleFunc("/gunshot/onlinentf", Onlinentf) //在线通知 http.HandleFunc("/gunshot/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 @@ -207,6 +209,48 @@ func Gettaskreward(w http.ResponseWriter, r *http.Request) { HandlerGettaskreward(w, s, Uuid) } +func Dosign(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("Dosign , body:%v,uuid=%v", s, Uuid) + + HandlerDosign(w, s, Uuid) +} + +func Quersigndata(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("Quersigndata , body:%v,uuid=%v", s, Uuid) + + HandlerQuersigndata(w, s, Uuid) +} + func Fetchredbag(w http.ResponseWriter, r *http.Request) { Uuid := 0 diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 7d15fb5..debb48c 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -369,6 +369,130 @@ func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { } +func HandlerQuersigndata(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp QuersigndataResp + resp.Code = 0 + var rdata CommReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerGettaskreward 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 { + logger.Info("GetUserInfo HandlerQuersigndata data failed:%v,for:%v", err, data) + resp.Message = "GetUserInfo failed" + resp.Code = 1 + break + } + + resp.Data.Curday = uinfo.SignSum + resp.Data.Issigntaday = uinfo.IsSignToday + + resp.Code = 0 + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandlerDosign(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp DosignResp + resp.Code = 0 + resp.Message = "success" + var rdata CommReq + err := json.Unmarshal([]byte(data), &rdata) + for { + + if err != nil { + logger.Info("json decode HandlerGettaskreward 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 { + logger.Info("GetUserInfo HandlerDosign data failed:%v,for:%v", err, data) + resp.Message = "GetUserInfo failed" + resp.Code = 1 + break + } + + if uinfo.IsSignToday == 1 { + logger.Info(" HandlerDosign issign failed:%v,for:%v", err, data) + resp.Message = "当天已签到" + resp.Code = 1 + break + } + + uinfo.IsSignToday = 1 + uinfo.SignSum++ + if uinfo.SignSum > 7 { + uinfo.SignSum = 1 + uinfo.SignRound++ + } + + cfg := jsonconf.GetsignConfig(uinfo.SignSum) + if cfg == nil { + logger.Info("GetUserInfo HandlerDosign data failed:%v,for:%v", err, data) + resp.Message = "参数错误" + resp.Code = 1 + break + } + + sub := len(cfg.Reward) / 2 + for i := 0; i < sub; i++ { + rtype := cfg.Reward[i*2] + rnum := cfg.Reward[i*2+1] + resp.Data.Rewardtype = rtype + if rtype == 1 { + resp.Data.Getcurhuobi = rnum + }else if rtype == 2 { + readgold := 0 + readgold, err = AddCoinToSdk(uuid, rnum, rdata.Gameid, rdata.Channel, 100) + if err != nil { + logger.Info("GetUserInfo HandlerDosign data failed:%v,for:%v", err, data) + resp.Message = "后台失败!" + resp.Code = 1 + break + } + uinfo.RealGold = readgold + }else { + logger.Error("HandlerDosign err") + } + } + + + + + + + resp.Data.Curday = uinfo.SignSum + resp.Data.Issigntaday = uinfo.IsSignToday + resp.Data.Walletgold = uinfo.RealGold + + SaveUserInfo(uinfo, uniqueuuid) + resp.Code = 0 + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerUpdatetaskandachieve(w http.ResponseWriter, data string, uuid int) { SetHeader(w) llock.Lock() @@ -582,7 +706,39 @@ func HandlerFetchredbag(w http.ResponseWriter, data string, uuid int) { resp.Data.Walletgold = realgold uinfo.RandNum-- - }else { + }else if rdata.Rtype == 4{ + cfg := jsonconf.GetInvestConfig(rdata.Param) + if cfg == nil { + logger.Error("HandlerFetchredbag failed err=%v", err) + resp.Message = "获取配置失败!" + resp.Code = 1 + break + } + sub := len(cfg.Reward) / 2 + for i := 0; i < sub; i++ { + rtype := cfg.Reward[i*2] + rnum := cfg.Reward[i*2+1] + if rtype != 3 { + continue + }else { + readgold := 0 + readgold, err = AddCoinToSdk(uuid, rnum, rdata.Gameid, rdata.Channel, 100) + if err != nil { + logger.Info("GetUserInfo HandlerDosign data failed:%v,for:%v", err, data) + resp.Message = "后台失败!" + resp.Code = 1 + break + } + uinfo.RealGold = readgold + + resp.Data.Getgold = rnum + resp.Data.Walletgold = readgold + break + } + + } + + } else { /*if uinfo.SpecialLevel <= uinfo.SpecialNum { logger.Error("HandlerFetchredbag failed err=%v", err) resp.Message = "没有可以领取的随机红包次数了!" -- libgit2 0.21.0