diff --git a/src/HttpServer/jsonconf/jsonconf.go b/src/HttpServer/jsonconf/jsonconf.go index 89d29a2..1a90b66 100644 --- a/src/HttpServer/jsonconf/jsonconf.go +++ b/src/HttpServer/jsonconf/jsonconf.go @@ -80,6 +80,27 @@ func GetJsonConf() *GameConfig { return g_jsonconf } +func GetSignConfig(round, daynum int) *SignRewardDetail { + if round > g_jsonconf.SignConfig.Round { + //取reward2 + if daynum > len(g_jsonconf.SignConfig.Reward.Reward2) { + logger.Error("GetSignConfig failed") + return nil + } + + return &g_jsonconf.SignConfig.Reward.Reward2[daynum-1] + + } else { + //取reward1 + if daynum > len(g_jsonconf.SignConfig.Reward.Reward1) { + logger.Error("GetSignConfig failed") + return nil + } + + return &g_jsonconf.SignConfig.Reward.Reward1[daynum-1] + } +} + func GetMoneyBoxCfg(lv int) *MoneyBoxLevelDesc { rt := new(MoneyBoxLevelDesc) rt = nil diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index c3fc360..05da92b 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -188,6 +188,32 @@ type GetnewlevelrewardResp struct { Data GetnewlevelrewardData `json:"data"` } +type QuerysigndataData struct { + Signround int `json:"signround"` + Continuessign int `json:"continuessign"` + IssignToday int `json:"issignToday"` +} + +type QuerysigndataResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data QuerysigndataData `json:"data"` +} + +type UsersignReq struct { + Gameid string `json:"gameid"` + Channel string `json:"channel"` +} + +type UsersignData struct { + Goldnum int `json:"goldnum"` +} +type UsersignResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data UsersignData `json:"data"` +} + //********************************************************************************************************** type TaskListDesc struct { @@ -251,6 +277,9 @@ type UserData struct { LastLoginTime int //上次登陆时间 ContinueLoginDay int //连续登录天数 GetFromGuanCnt int //当天从存钱款提取金币次数 + SignRound int //签到轮数 + SignSum int //累计签到天数 + IsSignToday int //今日是否已经签到 1是 0否 WithDraw WithDrawInfo //提现记录信息 Task TaskInfo //玩家任务完成相关信息 Achieve AchieveMentInfo //玩家成就完成相关数据 diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index 1e86155..a621f1c 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -1,23 +1,24 @@ package logic - const ( - ERROR_OK =0 //没有错误 - ERROR_SRV_ERROR =1 //服务器错误 - ERROR_JSONUNMASH_ERROR =2 //json解析错误 - ERROR_WATCHADS_ZEOR =3 //看视频次数已经耗尽 - ERROR_GETCONFIG_FAILED =4 //获取配置失败 - ERROR_GUANGOLD_NOTENOUGH =5 //存钱罐金币不足 - ERROR_DRAWGUAN_FAILED =6 //从存钱罐提取金币不满足限制 - ERROR_DRAWGOLD_FAILED =7 //从存钱罐提取金币失败了 - ERROR_GETCASH_FAILED =8 //从后台提现失败了 - ERROR_GETCASH_GOLDNOTENOUGH_FAILED =9 //提现金币不足 - ERROR_ADDWITHDRAW_LISTFAILED =10 //添加提现记录失败 - ERROR_WITHDRAWLVLIMIT =11 //提现等级不够 - ERROR_WITHDRAWONLYONE =12 //新人专享只能提取一次 - ERROR_PRENOTFINISH =13 //前置档位未提现 - ERROR_TASKCANNOTGET =14 //当前任务未完成或已领取 - ERROR_TASKID_WRONG =15 //当前任务id错误 - ERROR_TASKPRE_NOTGET =16 //前置任务还未领取 - ERROR_LVREWARDALREADYGET =17 //当前等级奖励已经领取过了 -) \ No newline at end of file + ERROR_OK = 0 //没有错误 + ERROR_SRV_ERROR = 1 //服务器错误 + ERROR_JSONUNMASH_ERROR = 2 //json解析错误 + ERROR_WATCHADS_ZEOR = 3 //看视频次数已经耗尽 + ERROR_GETCONFIG_FAILED = 4 //获取配置失败 + ERROR_GUANGOLD_NOTENOUGH = 5 //存钱罐金币不足 + ERROR_DRAWGUAN_FAILED = 6 //从存钱罐提取金币不满足限制 + ERROR_DRAWGOLD_FAILED = 7 //从存钱罐提取金币失败了 + ERROR_GETCASH_FAILED = 8 //从后台提现失败了 + ERROR_GETCASH_GOLDNOTENOUGH_FAILED = 9 //提现金币不足 + ERROR_ADDWITHDRAW_LISTFAILED = 10 //添加提现记录失败 + ERROR_WITHDRAWLVLIMIT = 11 //提现等级不够 + ERROR_WITHDRAWONLYONE = 12 //新人专享只能提取一次 + ERROR_PRENOTFINISH = 13 //前置档位未提现 + ERROR_TASKCANNOTGET = 14 //当前任务未完成或已领取 + ERROR_TASKID_WRONG = 15 //当前任务id错误 + ERROR_TASKPRE_NOTGET = 16 //前置任务还未领取 + ERROR_LVREWARDALREADYGET = 17 //当前等级奖励已经领取过了 + ERROR_SINGALREADYTODAY = 18 //今日已经签过到啦 + ERROR_SINGDATAFAILED = 19 //签到数据异常 +) diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 0436036..5b80cec 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -579,6 +579,14 @@ func (u *UserData) HandlePassDay() { } else { logger.Error("HandlePassDay GetTaskInfo failer err=%v", err) } + + //签到数据处理 + u.IsSignToday = 0 + if u.SignSum >= 7 { + //进入新的一轮 + u.SignSum = 0 + u.SignRound++ + } } u.LastLoginTime = int(nowtime.Unix()) diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 40e53ee..0586bbf 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -3,6 +3,8 @@ package logic import ( "HttpServer/conf" "common/logger" + "encoding/json" + "fmt" "io/ioutil" "strconv" @@ -37,27 +39,111 @@ func startServerHttpServe() { //http.HandleFunc("/catcafe/QueryAllAccount", QueryAllAccount) //查询所有账号的等级信息等数据 //------------------------------------------------------------- - - http.HandleFunc("/eliminatestar/login", UserLogin) //登录 - http.HandleFunc("/eliminatestar/getuserdata", Getuserdata) //获取玩家数据 - http.HandleFunc("/eliminatestar/watchads", Watchads) //观看激励视频 - http.HandleFunc("/eliminatestar/queryguaninfo", Queryguaninfo) //获取存钱罐数据 - http.HandleFunc("/eliminatestar/getguangold", Getguangold) //获取金币到存钱罐 - http.HandleFunc("/eliminatestar/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包 - http.HandleFunc("/eliminatestar/querdrawinfo", Querdrawinfo) //获取提现档位信息接口 - http.HandleFunc("/eliminatestar/getcash", Getcash) //提现 - http.HandleFunc("/eliminatestar/getcashrecord", Getcashrecord) //提现记录列表 - http.HandleFunc("/eliminatestar/onlinentf", Onlinentf) //在线通知 - http.HandleFunc("/eliminatestar/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 - http.HandleFunc("/eliminatestar/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 - http.HandleFunc("/eliminatestar/gettaskreward", Gettaskreward) //领取任务或者成就奖励 - http.HandleFunc("/eliminatestar/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 - + http.HandleFunc("/eliminatestar/test", Testapi) //登录 + //---------------------------------------------------------------------------------------- + http.HandleFunc("/eliminatestar/login", UserLogin) //登录 + http.HandleFunc("/eliminatestar/getuserdata", Getuserdata) //获取玩家数据 + http.HandleFunc("/eliminatestar/watchads", Watchads) //观看激励视频 + http.HandleFunc("/eliminatestar/queryguaninfo", Queryguaninfo) //获取存钱罐数据 + http.HandleFunc("/eliminatestar/getguangold", Getguangold) //获取金币到存钱罐 + http.HandleFunc("/eliminatestar/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包 + http.HandleFunc("/eliminatestar/querdrawinfo", Querdrawinfo) //获取提现档位信息接口 + http.HandleFunc("/eliminatestar/getcash", Getcash) //提现 + http.HandleFunc("/eliminatestar/getcashrecord", Getcashrecord) //提现记录列表 + http.HandleFunc("/eliminatestar/onlinentf", Onlinentf) //在线通知 + http.HandleFunc("/eliminatestar/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 + http.HandleFunc("/eliminatestar/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 + http.HandleFunc("/eliminatestar/gettaskreward", Gettaskreward) //领取任务或者成就奖励 + http.HandleFunc("/eliminatestar/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 + http.HandleFunc("/eliminatestar/querysigndata", Querysigndata) //获取签到数据 + http.HandleFunc("/eliminatestar/usersign", Usersign) //玩家签到 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } +func Usersign(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("Usersign , body:%v,uuid=%v", s, Uuid) + + HandlerUsersign(w, s, Uuid) +} + +func Querysigndata(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("Querysigndata , body:%v,uuid=%v", s, Uuid) + + HandlerQuerysigndata(w, s, Uuid) +} + +func Testapi(w http.ResponseWriter, r *http.Request) { + + type TesaApiData struct { + Type int `json:"type"` //1金币 2经验 3存钱罐次数 + Value int `json:"value"` + } + 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("Querysigndata , body:%v,uuid=%v", s, Uuid) + + var rdata GettaskrewardReq + err := json.Unmarshal([]byte(s), &rdata) + + if err != nil { + logger.Info("json decode Testapi data failed:%v,for:%v", err, s) + fmt.Fprint(w, "failed") + return + } + + uinfo, err := GetUserInfo(Uuid) + if err != nil || uinfo == nil { + logger.Error("redis failed err=%v", err) + fmt.Fprint(w, "failed") + return + } + +} + func Getnewlevelreward(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -79,7 +165,6 @@ func Getnewlevelreward(w http.ResponseWriter, r *http.Request) { HandlerGetnewlevelreward(w, s, Uuid) } - func Gettaskreward(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -122,7 +207,6 @@ func Querytaskinfo(w http.ResponseWriter, r *http.Request) { HandlerQuerytaskinfo(w, s, Uuid) } - func Updatetaskandachieve(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -144,7 +228,6 @@ func Updatetaskandachieve(w http.ResponseWriter, r *http.Request) { HandlerUpdatetaskandachieve(w, s, Uuid) } - func Onlinentf(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -187,7 +270,6 @@ func Getcashrecord(w http.ResponseWriter, r *http.Request) { HandlerGetcashrecord(w, s, Uuid) } - func Getcash(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -209,7 +291,6 @@ func Getcash(w http.ResponseWriter, r *http.Request) { HandlerGetcash(w, s, Uuid) } - func Querdrawinfo(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -252,9 +333,6 @@ func Drawguangold(w http.ResponseWriter, r *http.Request) { HandlerDrawguangold(w, s, Uuid) } - - - func Getguangold(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -297,7 +375,6 @@ func Queryguaninfo(w http.ResponseWriter, r *http.Request) { HandlerQueryguaninfo(w, s, Uuid) } - func Watchads(w http.ResponseWriter, r *http.Request) { Uuid := 0 @@ -360,6 +437,3 @@ func Getuserdata(w http.ResponseWriter, r *http.Request) { HandlerGetuserdata(w, s, Uuid) } - - - diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 7618102..8a68270 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -197,6 +197,33 @@ func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { } +func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp QuerysigndataResp + resp.Code = 0 + + for { + + uinfo, err := GetUserInfo(uuid) + if err != nil || uinfo == nil { + logger.Error("redis failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + resp.Data.Continuessign = uinfo.SignSum + resp.Data.IssignToday = uinfo.IsSignToday + resp.Data.Signround = uinfo.SignRound + + resp.Code = ERROR_OK + break + } + + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) { SetHeader(w) var resp GetnewlevelrewardResp @@ -269,6 +296,80 @@ func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) { } +func HandlerUsersign(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp UsersignResp + resp.Code = 0 + var rdata UsersignReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerUsersign 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.IsSignToday == 1 { + logger.Error("IsSignToday failed err=%v", err) + resp.Message = "今日已经签过到啦" + resp.Code = ERROR_SINGALREADYTODAY + break + } + + uinfo.SignSum++ + if uinfo.SignSum > 7 { + uinfo.SignSum = 7 + logger.Error("uinfo.SignSum failed") + resp.Message = "签到数据异常" + resp.Code = ERROR_SINGDATAFAILED + break + } + + //获取配置 + cfg := jsonconf.GetSignConfig(uinfo.SignRound, uinfo.SignSum) + if cfg == nil { + uinfo.SignSum-- + logger.Error("GetSignConfig failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + _, err = AddCoinToSdk(uuid, cfg.Num, rdata.Gameid, rdata.Channel, 100) + if err != nil { + uinfo.SignSum-- + logger.Error("AddCoinToSdk failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + uinfo.IsSignToday = 1 + uinfo.RealGold += cfg.Num + + resp.Data.Goldnum = uinfo.RealGold + + //保存数据 + err = 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