diff --git a/src/HttpServer/jsonconf/CatConfig.json b/src/HttpServer/jsonconf/CatConfig.json index 8dab3e4..f54c9e5 100644 --- a/src/HttpServer/jsonconf/CatConfig.json +++ b/src/HttpServer/jsonconf/CatConfig.json @@ -8,7 +8,8 @@ "gold_get": "1", "ratio": 1.07, "increse_limit": 100, - "interval": 1 + "interval": 1, + "redpacket": 0 }, { "id": 2, @@ -19,7 +20,8 @@ "gold_get": "3", "ratio": 1.1, "increse_limit": 70, - "interval": 1 + "interval": 1, + "redpacket": 1.2 }, { "id": 3, @@ -30,7 +32,8 @@ "gold_get": "7", "ratio": 1.12, "increse_limit": 60, - "interval": 1 + "interval": 1, + "redpacket": 1.2 }, { "id": 4, @@ -41,7 +44,8 @@ "gold_get": "15", "ratio": 1.17, "increse_limit": 40, - "interval": 1 + "interval": 1, + "redpacket": 1.16 }, { "id": 5, @@ -52,7 +56,8 @@ "gold_get": "30", "ratio": 1.17, "increse_limit": 35, - "interval": 1.5 + "interval": 1.5, + "redpacket": 1.06 }, { "id": 6, @@ -63,7 +68,8 @@ "gold_get": "61", "ratio": 1.17, "increse_limit": 30, - "interval": 1.5 + "interval": 1.5, + "redpacket": 1.02 }, { "id": 7, @@ -74,7 +80,8 @@ "gold_get": "124", "ratio": 1.17, "increse_limit": 25, - "interval": 1.5 + "interval": 1.5, + "redpacket": 0.86 }, { "id": 8, @@ -85,7 +92,8 @@ "gold_get": "250", "ratio": 1.17, "increse_limit": 24, - "interval": 1.5 + "interval": 1.5, + "redpacket": 0.66 }, { "id": 9, @@ -96,7 +104,8 @@ "gold_get": "504", "ratio": 1.17, "increse_limit": 23, - "interval": 2 + "interval": 2, + "redpacket": 0.64 }, { "id": 10, @@ -107,7 +116,8 @@ "gold_get": "1015", "ratio": 1.17, "increse_limit": 22, - "interval": 2 + "interval": 2, + "redpacket": 0.86 }, { "id": 11, @@ -118,7 +128,8 @@ "gold_get": "2043", "ratio": 1.17, "increse_limit": 21, - "interval": 2 + "interval": 2, + "redpacket": 0.42 }, { "id": 12, @@ -129,7 +140,8 @@ "gold_get": "4112", "ratio": 1.17, "increse_limit": 20, - "interval": 2 + "interval": 2, + "redpacket": 0.36 }, { "id": 13, @@ -140,7 +152,8 @@ "gold_get": "8276", "ratio": 1.17, "increse_limit": 19, - "interval": 2.5 + "interval": 2.5, + "redpacket": 0.32 }, { "id": 14, @@ -151,7 +164,8 @@ "gold_get": "16657", "ratio": 1.17, "increse_limit": 18, - "interval": 2.5 + "interval": 2.5, + "redpacket": 0.28 }, { "id": 15, @@ -162,7 +176,8 @@ "gold_get": "33523", "ratio": 1.17, "increse_limit": 15, - "interval": 2.5 + "interval": 2.5, + "redpacket": 0.28 }, { "id": 16, @@ -173,7 +188,8 @@ "gold_get": "67466", "ratio": 1.17, "increse_limit": 16, - "interval": 2.5 + "interval": 2.5, + "redpacket": 0.22 }, { "id": 17, @@ -184,7 +200,8 @@ "gold_get": "135778", "ratio": 1.17, "increse_limit": 15, - "interval": 3 + "interval": 3, + "redpacket": 0.18 }, { "id": 18, @@ -195,7 +212,8 @@ "gold_get": "273255", "ratio": 1.17, "increse_limit": 14, - "interval": 3 + "interval": 3, + "redpacket": 0.48 }, { "id": 19, @@ -206,7 +224,8 @@ "gold_get": "549930", "ratio": 1.17, "increse_limit": 13, - "interval": 3 + "interval": 3, + "redpacket": 0.18 }, { "id": 20, @@ -217,7 +236,8 @@ "gold_get": "1106700", "ratio": 1.17, "increse_limit": 12, - "interval": 3 + "interval": 3, + "redpacket": 0.18 }, { "id": 21, @@ -228,7 +248,8 @@ "gold_get": "2273000", "ratio": 1.17, "increse_limit": 11, - "interval": 3.5 + "interval": 3.5, + "redpacket": 0.18 }, { "id": 22, @@ -239,7 +260,8 @@ "gold_get": "4482600", "ratio": 1.17, "increse_limit": 10, - "interval": 3.5 + "interval": 3.5, + "redpacket": 0.18 }, { "id": 23, @@ -250,7 +272,8 @@ "gold_get": "9021200", "ratio": 1.17, "increse_limit": 9, - "interval": 3.5 + "interval": 3.5, + "redpacket": 0.18 }, { "id": 24, @@ -261,7 +284,8 @@ "gold_get": "18155000", "ratio": 1.17, "increse_limit": 8, - "interval": 3.5 + "interval": 3.5, + "redpacket": 0.18 }, { "id": 25, @@ -272,7 +296,8 @@ "gold_get": "36538000", "ratio": 1.17, "increse_limit": 8, - "interval": 4 + "interval": 4, + "redpacket": 0.18 }, { "id": 26, @@ -283,7 +308,8 @@ "gold_get": "73533000", "ratio": 1.17, "increse_limit": 8, - "interval": 4 + "interval": 4, + "redpacket": 0.18 }, { "id": 27, @@ -294,7 +320,8 @@ "gold_get": "147990000", "ratio": 1.17, "increse_limit": 8, - "interval": 4 + "interval": 4, + "redpacket": 0.18 }, { "id": 28, @@ -305,7 +332,8 @@ "gold_get": "297830000", "ratio": 1.17, "increse_limit": 8, - "interval": 4 + "interval": 4, + "redpacket": 0.18 }, { "id": 29, @@ -316,7 +344,8 @@ "gold_get": "599380000", "ratio": 1.17, "increse_limit": 8, - "interval": 4.5 + "interval": 4.5, + "redpacket": 0.18 }, { "id": 30, @@ -327,7 +356,8 @@ "gold_get": "1206300000", "ratio": 1.17, "increse_limit": 8, - "interval": 4.5 + "interval": 4.5, + "redpacket": 0.18 }, { "id": 31, @@ -338,7 +368,8 @@ "gold_get": "2427600000", "ratio": 1.17, "increse_limit": 8, - "interval": 4.5 + "interval": 4.5, + "redpacket": 0.18 }, { "id": 32, @@ -349,7 +380,8 @@ "gold_get": "4885600000", "ratio": 1.17, "increse_limit": 8, - "interval": 4.5 + "interval": 4.5, + "redpacket": 0.18 }, { "id": 33, @@ -360,7 +392,8 @@ "gold_get": "9832400000", "ratio": 1.17, "increse_limit": 8, - "interval": 5 + "interval": 5, + "redpacket": 0.18 }, { "id": 34, @@ -371,7 +404,8 @@ "gold_get": "19788000000", "ratio": 1.17, "increse_limit": 8, - "interval": 5 + "interval": 5, + "redpacket": 0.18 }, { "id": 35, @@ -382,7 +416,8 @@ "gold_get": "39823000000", "ratio": 1.17, "increse_limit": 8, - "interval": 5 + "interval": 5, + "redpacket": 0.18 }, { "id": 36, @@ -393,7 +428,8 @@ "gold_get": "80145000000", "ratio": 1.17, "increse_limit": 8, - "interval": 5 + "interval": 5, + "redpacket": 0.18 }, { "id": 37, @@ -404,6 +440,7 @@ "gold_get": "80145000000", "ratio": 1.17, "increse_limit": 8, - "interval": 5 + "interval": 5, + "redpacket": 0.18 } ] \ No newline at end of file diff --git a/src/HttpServer/jsonconf/jsonconf.go b/src/HttpServer/jsonconf/jsonconf.go index 9541d6c..dd7a059 100644 --- a/src/HttpServer/jsonconf/jsonconf.go +++ b/src/HttpServer/jsonconf/jsonconf.go @@ -29,6 +29,7 @@ type CatDesc struct { Ratio float32 `json:"ratio"` Increse_limit int `json:"increse_limit"` Interval float32 `json:"interval"` + Redpacket float32 `json:"redpacket"` } type RedCatDesc struct { diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index 92e807c..39f975c 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -67,6 +67,7 @@ const ( DOUBLETIMELAST = 300 //金币加速持续时间 FLYBOXNUMLIMIT = 6 //飞天宝箱每日次数限制 EMPTYBOXLIMIT = 20 //空格宝箱每日限制次数 + SHAKETIMELIMIT = 20 //摇一摇每日次数 ) var CATNAMELIST = []string{ diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 1ff8b6a..111f47b 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -109,6 +109,7 @@ type GetUserDataData struct { Coin string `json:"coin"` Now int `json:"now"` TimingRewardTimes int `json:"timingRewardTimes"` + Shakeleftcnt int `json:"shakeleftcnt"` } type GetUserDataResp struct { @@ -237,6 +238,18 @@ type GethorsemessageResp struct { Data GethorsemessageData `json:"data"` } +type QuertlvredbagData struct { + Catlv int `json:"catlv"` + Redbag float32 `json:"redbag"` + Canfetch int `json:"canfetch"` +} + +type QuertlvredbagResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data QuertlvredbagData `json:"data"` +} + type AddAdData struct { } @@ -540,6 +553,35 @@ type DoBuyCatResp struct { Data DoBuyCatData `json:"data"` } +type UploadusercostReq struct { + Rtype int `json:"rtype"` + Value int `json:"value"` +} + +type UploadusercostData struct { + Lefttime int `json:"lefttime"` +} + +type UploadusercostResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data UploadusercostData `json:"data"` +} + +type FetchlvredbagReq struct { + Catlv int `json:"catlv"` +} + +type FetchlvredbagData struct { + Redbag float32 `json:"redbag"` +} + +type FetchlvredbagResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data FetchlvredbagData `json:"data"` +} + type QueryWareHouseData struct { CatList []int `json:"catList"` CatCapacity int `json:"catCapacity"` @@ -991,6 +1033,8 @@ type UserData struct { LeftOfflineTimes int //离线奖励剩余领取次数 EmptyBoxLeftTime int //空格宝箱生意领取次数 IsResetToday int //当天中午十二点是否重置 0表示未 1表示已重置 + ShakeTime int //摇一摇次数 + WaitFetchLv []int //当前可领取的等级红包等级 WaitFetchList []LimitListDesc //待领取的分红猫列表 领取完删除 CatShopInfo CatShopData //猫咖门店数据 Taskinfo TaskData //任务数据 diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index ca71cd1..6530fd1 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -557,6 +557,7 @@ func (u *UserData) HandlePassDay() { u.LeftTimingRewardTimes = TIMEINGREWARDLIMIT u.LeftOfflineTimes = OFFLINETIMESLIMIT u.EmptyBoxLeftTime = EMPTYBOXLIMIT + u.ShakeTime = SHAKETIMELIMIT u.IsResetToday = 0 /*randint := rand.Intn(100) @@ -642,6 +643,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) { udata.LeftTimingRewardTimes = TIMEINGREWARDLIMIT udata.LeftOfflineTimes = OFFLINETIMESLIMIT udata.EmptyBoxLeftTime = EMPTYBOXLIMIT + udata.ShakeTime = SHAKETIMELIMIT /*randint := rand.Intn(100) floatval := float32(randint) / 100 udata.TodayZhaocai = 180 + floatval*/ diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 2e109d9..ecc5a1e 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -186,6 +186,9 @@ func startServerHttpServe() { http.HandleFunc("/api/happycat/getcash", Getcash) // 请求提现 http.HandleFunc("/api/happycat/getcashrecord", Getcashrecord) // 请求提现 http.HandleFunc("/api/happycat/gethorsemessage", Gethorsemessage) // 请求跑马灯 + http.HandleFunc("/api/happycat/uploadusercost", Uploadusercost) // 上报玩家消耗次数(摇一摇) + http.HandleFunc("/api/happycat/quertlvredbag", Quertlvredbag) // 上报玩家消耗次数(摇一摇) + http.HandleFunc("/api/happycat/fetchlvredbag", Fetchlvredbag) // 请求领取等级红包 /////---------------------------------------------------------------------old //http.HandleFunc("/happycat/exchangetwoPos", ExchangePos) //交换位置 @@ -1196,6 +1199,60 @@ func AddAd(w http.ResponseWriter, r *http.Request) { HandlerAddAd(w, s, Uuid) } +func Fetchlvredbag(w http.ResponseWriter, r *http.Request) { + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) + } + if Uuid == 0 { + SetHeader(w) + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Fetchlvredbag , body:%v,uuid=%v", s, Uuid) + + HandlerFetchlvredbag(w, s, Uuid) +} + +func Quertlvredbag(w http.ResponseWriter, r *http.Request) { + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) + } + if Uuid == 0 { + SetHeader(w) + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Quertlvredbag , body:%v,uuid=%v", s, Uuid) + + HandlerQuertlvredbag(w, s, Uuid) +} + +func Uploadusercost(w http.ResponseWriter, r *http.Request) { + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) + } + if Uuid == 0 { + SetHeader(w) + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Uploadusercost , body:%v,uuid=%v", s, Uuid) + + HandlerUploadusercost(w, s, Uuid) +} + func Gethorsemessage(w http.ResponseWriter, r *http.Request) { Uuid := 0 if len(r.Header) > 0 { diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 2893411..9bf4868 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -9,6 +9,7 @@ import ( "fmt" "math/rand" "net/http" + "sort" "strconv" "sync" "time" @@ -626,6 +627,160 @@ func HandlerGetflyboxreward(w http.ResponseWriter, data string, uuid int) { fmt.Fprint(w, string(respstr)) } +func HandlerFetchlvredbag(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp FetchlvredbagResp + resp.Code = 0 + resp.Message = "success" + var rdata FetchlvredbagReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandlerFetchlvredbag json unmarshal failed=%v", err) + resp.Code = 1 + resp.Message = "json failed" + break + } + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) + if err != nil || uinfo == nil { + logger.Error("HandlerFetchlvredbag getuserinfo failed=%v", err) + resp.Code = 1 + resp.Message = "get userinfo failed" + break + } + + if rdata.Catlv != uinfo.WaitFetchLv[0] { + //请求领取的等级红包不正确 + logger.Error("HandlerFetchlvredbag catlv failed=%v", err) + resp.Code = 1 + resp.Message = "请求领取的等级红包不正确" + break + } + + cfg := jsonconf.GetCatConfig(rdata.Catlv) + if cfg == nil { + logger.Error("HandlerFetchlvredbag GetCatConfig failed=%v", err) + resp.Code = 1 + resp.Message = "获取配置失败" + break + } + + newgold, err := uinfo.AddRedPackect(cfg.Redpacket, 100) + if err != nil { + logger.Error("HandlerFetchlvredbag GetCatConfig failed=%v", err) + resp.Code = 1 + resp.Message = "后台加红包失败!" + break + } + + uinfo.WaitFetchLv = uinfo.WaitFetchLv[1:] + + resp.Data.Redbag = float32(newgold) / 100 + resp.Code = 0 + //保存 + SaveUserInfo(uinfo, strconv.Itoa(uuid)) + + break + + } + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandlerUploadusercost(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp UploadusercostResp + resp.Code = 0 + resp.Message = "success" + var rdata UploadusercostReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandlerUploadusercost json unmarshal failed=%v", err) + resp.Code = 1 + resp.Message = "json failed" + break + } + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) + if err != nil || uinfo == nil { + logger.Error("HandlerUploadusercost getuserinfo failed=%v", err) + resp.Code = 1 + resp.Message = "get userinfo failed" + break + } + + if rdata.Rtype == 1 { + //摇一摇次数 + uinfo.ShakeTime -= rdata.Value + if uinfo.ShakeTime < 0 { + uinfo.ShakeTime = 0 + } + resp.Data.Lefttime = uinfo.ShakeTime + } else { + resp.Code = 1 + resp.Message = "类型不正确!" + break + } + resp.Code = 0 + + //保存 + SaveUserInfo(uinfo, strconv.Itoa(uuid)) + + break + + } + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandlerQuertlvredbag(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp QuertlvredbagResp + resp.Code = 0 + resp.Message = "success" + for { + + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) + if err != nil || uinfo == nil { + logger.Error("HandlerQuertlvredbag getuserinfo failed=%v", err) + resp.Code = 1 + resp.Message = "get userinfo failed" + break + } + + if len(uinfo.WaitFetchLv) == 0 { + //没有可领取的 + + if uinfo.Highestlv < 36 { + resp.Data.Catlv = uinfo.Highestlv + 1 + } else { + resp.Data.Catlv = 0 + } + resp.Data.Redbag = 0.0 + resp.Data.Canfetch = 0 + + } else { + resp.Data.Canfetch = 1 + resp.Data.Catlv = uinfo.WaitFetchLv[0] + + cfg := jsonconf.GetCatConfig(uinfo.WaitFetchLv[0]) + if cfg == nil { + logger.Error("HandlerQuertlvredbag getcatcfg failed lv=%v", uinfo.WaitFetchLv[0]) + } else { + resp.Data.Redbag = cfg.Redpacket + } + } + + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerGethorsemessage(w http.ResponseWriter, data string, uuid int) { SetHeader(w) var resp GethorsemessageResp @@ -1272,6 +1427,7 @@ func HandlerGetUserData(w http.ResponseWriter, data string, uuid int) { //resp.Data.TimingReward = false resp.Data.TimingRewardTimes = uinfo.LeftTimingRewardTimes + resp.Data.Shakeleftcnt = uinfo.ShakeTime //保存此次计算时间 nowtimestr := strconv.FormatInt(nowtime, 10) @@ -2464,6 +2620,10 @@ func HandlerExchangePos(w http.ResponseWriter, data string, uuid int) { //翻拍次数+ uinfo.FlopCardLefCnt++ + //将等级红包加入待领取列表 + uinfo.WaitFetchLv = append(uinfo.WaitFetchLv, uinfo.Highestlv) + sort.Ints(uinfo.WaitFetchLv) + nowt := int(time.Now().Unix()) uinfo.CurentLevelCostTime = (nowt - uinfo.CurentLevelSec) / 3600 uinfo.CurentLevelSec = nowt -- libgit2 0.21.0