Commit ffa660e15e950426a2cb23227ec0bbb3ee0b7f6c
1 parent
36cd6a7f
Exists in
master
提交新的内容
Showing
5 changed files
with
250 additions
and
31 deletions
Show diff stats
src/HttpServer/logic/datadef.go
... | ... | @@ -285,6 +285,41 @@ type SavadataResp struct { |
285 | 285 | Message string `json:"message"` |
286 | 286 | } |
287 | 287 | |
288 | +type UploadhigestscoreReq struct { | |
289 | + Score int64 `json:"score"` | |
290 | + Gameid string `json:"gameid"` | |
291 | + Channel string `json:"channel"` | |
292 | +} | |
293 | + | |
294 | +type UploadhigestscoreData struct { | |
295 | +} | |
296 | + | |
297 | +type UploadhigestscoreResp struct { | |
298 | + Code int `json:"code"` | |
299 | + Message string `json:"message"` | |
300 | + Data UploadhigestscoreData `json:"data"` | |
301 | +} | |
302 | + | |
303 | +type Queryrankinfolist struct { | |
304 | + Rank int `json:"rank"` | |
305 | + Nickname string `json:"nickname"` | |
306 | + Headurl string `json:"headurl"` | |
307 | + Socre int64 `json:"socre"` | |
308 | + UniqueId string `json:"uniqueId"` | |
309 | +} | |
310 | + | |
311 | +type QueryrankinfoData struct { | |
312 | + Selfrank int `json:"selfrank"` | |
313 | + Selfsocre int64 `json:"selfsocre"` | |
314 | + Ranklist []Queryrankinfolist `json:"ranklist"` | |
315 | +} | |
316 | + | |
317 | +type QueryrankinfoResp struct { | |
318 | + Code int `json:"code"` | |
319 | + Message string `json:"message"` | |
320 | + Data QueryrankinfoData `json:"data"` | |
321 | +} | |
322 | + | |
288 | 323 | type GetdataReq struct { |
289 | 324 | Gameid string `json:"gameid"` |
290 | 325 | Channel string `json:"channel"` |
... | ... | @@ -428,6 +463,9 @@ type UserData struct { |
428 | 463 | FetchRedCnt int //领取红包次数计数 |
429 | 464 | IsNew int //新手状态 |
430 | 465 | FetchRdBagNum int //当天已领的红包 |
466 | + Hfen int64 //当日最高积分 用于计算排行榜 | |
467 | + Nickname string //逆臣 | |
468 | + HeadUrl string //头像 | |
431 | 469 | WithDraw WithDrawInfo //提现记录信息 |
432 | 470 | //SpecialWithDraw WithDrawInfo //活跃提现记录信息 |
433 | 471 | Task TaskInfo //玩家任务完成相关信息 | ... | ... |
src/HttpServer/logic/function.go
... | ... | @@ -856,6 +856,14 @@ func (u *UserData) CalcTotalCnt() int { |
856 | 856 | return usertime |
857 | 857 | } |
858 | 858 | |
859 | +func (udata *UserData) AddToRank(unid string) error { | |
860 | + err := redishandler.GetRedisClient().Zadd(redis.USER_SCORE_RANK, float64(udata.Hfen), unid) | |
861 | + if err != nil { | |
862 | + logger.Error("AddToRank failed err=%v", err) | |
863 | + } | |
864 | + return err | |
865 | +} | |
866 | + | |
859 | 867 | func (u *UserData) HandlePassDay(uuid int, channel string) { |
860 | 868 | isdiffday := false |
861 | 869 | nowtime := time.Now() |
... | ... | @@ -904,6 +912,7 @@ func (u *UserData) HandlePassDay(uuid int, channel string) { |
904 | 912 | u.Task.PlaySmall = 0 |
905 | 913 | u.ShakeTime = SHAKELIMIT |
906 | 914 | u.FetchRdBagNum = 0 |
915 | + u.Hfen = 0 | |
907 | 916 | |
908 | 917 | //任务也需要处理 |
909 | 918 | /*tasklist, err := GetTaskInfo(u.Userid, 1) | ... | ... |
src/HttpServer/logic/httpserver.go
... | ... | @@ -9,6 +9,7 @@ import ( |
9 | 9 | "fmt" |
10 | 10 | "io/ioutil" |
11 | 11 | "strconv" |
12 | + "time" | |
12 | 13 | |
13 | 14 | //"log" |
14 | 15 | "net/http" |
... | ... | @@ -16,6 +17,15 @@ import ( |
16 | 17 | |
17 | 18 | //定时处理倒计时 |
18 | 19 | func StartHttpTicker() { |
20 | + for { | |
21 | + now := time.Now() //获取当前时间,放到now里面,要给next用 | |
22 | + next := now.Add(time.Hour * 24) //通过now偏移24小时 | |
23 | + next = time.Date(next.Year(), next.Month(), next.Day(), 0, 0, 0, 0, next.Location()) //获取下一个凌晨的日期 | |
24 | + t := time.NewTimer(next.Sub(now))//计算当前时间到凌晨的时间间隔,设置一个定时器 | |
25 | + <-t.C | |
26 | + redishandler.GetRedisClient().Delete(redis.USER_SCORE_RANK) | |
27 | + logger.Info("Del USER_SCORE_RANK success!") | |
28 | + } | |
19 | 29 | |
20 | 30 | } |
21 | 31 | |
... | ... | @@ -41,33 +51,31 @@ func startServerHttpServe() { |
41 | 51 | //http.HandleFunc("/catcafe/QueryAllAccount", QueryAllAccount) //查询所有账号的等级信息等数据 |
42 | 52 | //------------------------------------------------------------- |
43 | 53 | |
44 | - http.HandleFunc("/ballbattle/test", Testapi) //测试接口 | |
45 | - http.HandleFunc("/ballbattle/addcoin", Addcoin) //测试接口 | |
46 | - http.HandleFunc("/ballbattle/clear", ClearData) //清除账号 | |
54 | + http.HandleFunc("/sixstar/test", Testapi) //测试接口 | |
55 | + http.HandleFunc("/sixstar/addcoin", Addcoin) //测试接口 | |
56 | + http.HandleFunc("/sixstar/clear", ClearData) //清除账号 | |
47 | 57 | //---------------------------------------------------------------------------------------- |
48 | - http.HandleFunc("/ballbattle/login", UserLogin) //登录 | |
49 | - http.HandleFunc("/ballbattle/getuserdata", Getuserdata) //获取玩家数据 | |
50 | - http.HandleFunc("/ballbattle/watchads", Watchads) //观看激励视频 | |
51 | - http.HandleFunc("/ballbattle/queryguaninfo", Queryguaninfo) //获取存钱罐数据 | |
52 | - http.HandleFunc("/ballbattle/getguangold", Getguangold) //获取金币到存钱罐 | |
53 | - http.HandleFunc("/ballbattle/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包 | |
54 | - http.HandleFunc("/ballbattle/querdrawinfo", Querdrawinfo) //获取提现档位信息接口 | |
55 | - http.HandleFunc("/ballbattle/getcash", Getcash) //提现 | |
56 | - http.HandleFunc("/ballbattle/getcashrecord", Getcashrecord) //提现记录列表 | |
57 | - http.HandleFunc("/ballbattle/onlinentf", Onlinentf) //在线通知 | |
58 | - http.HandleFunc("/ballbattle/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 | |
59 | - http.HandleFunc("/ballbattle/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 | |
60 | - http.HandleFunc("/ballbattle/gettaskreward", Gettaskreward) //领取任务或者成就奖励 | |
61 | - http.HandleFunc("/ballbattle/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 | |
62 | - http.HandleFunc("/ballbattle/querysigndata", Querysigndata) //获取签到数据 | |
63 | - http.HandleFunc("/ballbattle/usersign", Usersign) //玩家签到 | |
64 | - http.HandleFunc("/ballbattle/fetchredbag", Fetchredbag) //领取红包 | |
65 | - http.HandleFunc("/ballbattle/savadata", Savadata) //保存数据 | |
66 | - http.HandleFunc("/ballbattle/getdata", Getdata) //获取数据 | |
67 | - // | |
68 | - http.HandleFunc("/ballbattle/readNumUpload", ReadNumUpload) //阅读量上报 | |
69 | - http.HandleFunc("/ballbattle/queryreadgold", QueryReadGold) //获取微转发金币数 | |
70 | - http.HandleFunc("/ballbattle/fetchreadgold", Fetchreadgold) //领取微转发金币数 | |
58 | + http.HandleFunc("/sixstar/login", UserLogin) //登录 | |
59 | + http.HandleFunc("/sixstar/getuserdata", Getuserdata) //获取玩家数据 | |
60 | + http.HandleFunc("/sixstar/watchads", Watchads) //观看激励视频 | |
61 | + http.HandleFunc("/sixstar/queryguaninfo", Queryguaninfo) //获取存钱罐数据 | |
62 | + http.HandleFunc("/sixstar/getguangold", Getguangold) //获取金币到存钱罐 | |
63 | + http.HandleFunc("/sixstar/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包 | |
64 | + http.HandleFunc("/sixstar/querdrawinfo", Querdrawinfo) //获取提现档位信息接口 | |
65 | + http.HandleFunc("/sixstar/getcash", Getcash) //提现 | |
66 | + http.HandleFunc("/sixstar/getcashrecord", Getcashrecord) //提现记录列表 | |
67 | + http.HandleFunc("/sixstar/onlinentf", Onlinentf) //在线通知 | |
68 | + http.HandleFunc("/sixstar/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 | |
69 | + http.HandleFunc("/sixstar/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 | |
70 | + http.HandleFunc("/sixstar/gettaskreward", Gettaskreward) //领取任务或者成就奖励 | |
71 | + http.HandleFunc("/sixstar/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 | |
72 | + http.HandleFunc("/sixstar/querysigndata", Querysigndata) //获取签到数据 | |
73 | + http.HandleFunc("/sixstar/usersign", Usersign) //玩家签到 | |
74 | + http.HandleFunc("/sixstar/fetchredbag", Fetchredbag) //领取红包 | |
75 | + http.HandleFunc("/sixstar/savadata", Savadata) //保存数据 | |
76 | + http.HandleFunc("/sixstar/getdata", Getdata) //获取数据 | |
77 | + http.HandleFunc("/sixstar/uploadscore", Uploadscore) //上报当天积分 | |
78 | + http.HandleFunc("/sixstar/queryrankinfo", Queryrankinfo) //获取排行榜信息 | |
71 | 79 | |
72 | 80 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
73 | 81 | CheckErr(err) |
... | ... | @@ -144,6 +152,48 @@ func Savadata(w http.ResponseWriter, r *http.Request) { |
144 | 152 | HandlerSavadata(w, s, Uuid) |
145 | 153 | } |
146 | 154 | |
155 | +func Queryrankinfo(w http.ResponseWriter, r *http.Request) { | |
156 | + | |
157 | + Uuid := 0 | |
158 | + if len(r.Header) > 0 { | |
159 | + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) | |
160 | + } | |
161 | + | |
162 | + if Uuid == 0 { | |
163 | + SetHeader(w) | |
164 | + //logger.Error("Uuid is nil!") | |
165 | + return | |
166 | + } | |
167 | + result, _ := ioutil.ReadAll(r.Body) | |
168 | + r.Body.Close() | |
169 | + | |
170 | + s := string(result) | |
171 | + logger.Info("Queryrankinfo , body:%v,uuid=%v", s, Uuid) | |
172 | + | |
173 | + HandlerQueryrankinfo(w, s, Uuid) | |
174 | +} | |
175 | + | |
176 | +func Uploadscore(w http.ResponseWriter, r *http.Request) { | |
177 | + | |
178 | + Uuid := 0 | |
179 | + if len(r.Header) > 0 { | |
180 | + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) | |
181 | + } | |
182 | + | |
183 | + if Uuid == 0 { | |
184 | + SetHeader(w) | |
185 | + //logger.Error("Uuid is nil!") | |
186 | + return | |
187 | + } | |
188 | + result, _ := ioutil.ReadAll(r.Body) | |
189 | + r.Body.Close() | |
190 | + | |
191 | + s := string(result) | |
192 | + logger.Info("Uploadscore , body:%v,uuid=%v", s, Uuid) | |
193 | + | |
194 | + HandlerUploadscore(w, s, Uuid) | |
195 | +} | |
196 | + | |
147 | 197 | func Getdata(w http.ResponseWriter, r *http.Request) { |
148 | 198 | |
149 | 199 | Uuid := 0 | ... | ... |
src/HttpServer/logic/logic.go
... | ... | @@ -525,6 +525,127 @@ func HandlerReadNumUpload(w http.ResponseWriter, data string) { |
525 | 525 | fmt.Fprint(w, string(respstr)) |
526 | 526 | } |
527 | 527 | |
528 | +func HandlerQueryrankinfo(w http.ResponseWriter, data string, uuid int) { | |
529 | + SetHeader(w) | |
530 | + var resp QueryrankinfoResp | |
531 | + resp.Code = 0 | |
532 | + resp.Message = "success" | |
533 | + var rdata CommReq | |
534 | + err := json.Unmarshal([]byte(data), &rdata) | |
535 | + for { | |
536 | + if err != nil { | |
537 | + logger.Info("json decode HandlerQueryrankinfo data failed:%v,for:%v", err, data) | |
538 | + resp.Message = "网络错误" | |
539 | + resp.Code = ERROR_JSONUNMASH_ERROR | |
540 | + break | |
541 | + } | |
542 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
543 | + | |
544 | + selfrank := -1 | |
545 | + selfscore := int64(0) | |
546 | + vv, err := redishandler.GetRedisClient().ZRevRangewithIndex(redis.USER_SCORE_RANK, 0, 99) | |
547 | + if err == nil { | |
548 | + rank := 0 | |
549 | + for _, v := range vv { | |
550 | + rank++ | |
551 | + | |
552 | + rinfobyte, _ := v.([]byte) | |
553 | + logger.Info("HandlerQueryPlayerRank ,v=%v", string(rinfobyte)) | |
554 | + //ruid, _ := strconv.Atoi(string(rinfobyte)) | |
555 | + rindo, err := GetUserInfo(string(rinfobyte)) | |
556 | + if err == nil && rindo != nil { | |
557 | + var tmp Queryrankinfolist | |
558 | + tmp.UniqueId = string(rinfobyte) | |
559 | + tmp.Socre = rindo.Hfen | |
560 | + tmp.Nickname = rindo.Nickname | |
561 | + tmp.Headurl = rindo.HeadUrl | |
562 | + tmp.Rank = rank | |
563 | + | |
564 | + resp.Data.Ranklist = append(resp.Data.Ranklist, tmp) | |
565 | + } | |
566 | + | |
567 | + if string(rinfobyte) == uniqueuuid { | |
568 | + selfrank = rank | |
569 | + selfscore = rindo.Hfen | |
570 | + } | |
571 | + } | |
572 | + } else { | |
573 | + logger.Error("HandlerUpdateUserInfo redisfailed ") | |
574 | + resp.Code = 1 | |
575 | + resp.Message = "redisfailed" | |
576 | + break | |
577 | + } | |
578 | + | |
579 | + if selfrank == -1 { | |
580 | + uinfo, err := GetUserInfo(uniqueuuid) | |
581 | + if err != nil { | |
582 | + logger.Info("GetUserInfo HandlerQueryrankinfo data failed:%v,for:%v", err, data) | |
583 | + resp.Message = "GetUserInfo failed" | |
584 | + resp.Code = 1 | |
585 | + break | |
586 | + } | |
587 | + | |
588 | + resp.Data.Selfsocre = uinfo.Hfen | |
589 | + resp.Data.Selfrank = 101 //表示100+ | |
590 | + } else { | |
591 | + resp.Data.Selfrank = selfrank | |
592 | + resp.Data.Selfsocre = selfscore | |
593 | + } | |
594 | + | |
595 | + resp.Code = ERROR_OK | |
596 | + break | |
597 | + } | |
598 | + | |
599 | + //回包 | |
600 | + respstr, _ := json.Marshal(&resp) | |
601 | + fmt.Fprint(w, string(respstr)) | |
602 | +} | |
603 | + | |
604 | +func HandlerUploadscore(w http.ResponseWriter, data string, uuid int) { | |
605 | + SetHeader(w) | |
606 | + var resp UploadhigestscoreResp | |
607 | + resp.Code = 0 | |
608 | + resp.Message = "success" | |
609 | + var rdata UploadhigestscoreReq | |
610 | + err := json.Unmarshal([]byte(data), &rdata) | |
611 | + for { | |
612 | + if err != nil { | |
613 | + logger.Info("json decode HandlerUploadscore data failed:%v,for:%v", err, data) | |
614 | + resp.Message = "网络错误" | |
615 | + resp.Code = ERROR_JSONUNMASH_ERROR | |
616 | + break | |
617 | + } | |
618 | + | |
619 | + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 | |
620 | + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel | |
621 | + uinfo, err := GetUserInfo(uniqueuuid) | |
622 | + if err != nil || uinfo == nil { | |
623 | + logger.Error("redis failed err=%v", err) | |
624 | + resp.Message = "服务器错误" | |
625 | + resp.Code = ERROR_SRV_ERROR | |
626 | + break | |
627 | + } | |
628 | + | |
629 | + if uinfo.Hfen >= rdata.Score { | |
630 | + //resp.Message = "服务器错误" | |
631 | + resp.Code = 0 | |
632 | + break | |
633 | + } | |
634 | + | |
635 | + uinfo.Hfen = rdata.Score | |
636 | + uinfo.AddToRank(uniqueuuid) | |
637 | + //加入排行榜 | |
638 | + SaveUserInfo(uinfo, uniqueuuid) | |
639 | + | |
640 | + resp.Code = ERROR_OK | |
641 | + break | |
642 | + } | |
643 | + | |
644 | + //回包 | |
645 | + respstr, _ := json.Marshal(&resp) | |
646 | + fmt.Fprint(w, string(respstr)) | |
647 | +} | |
648 | + | |
528 | 649 | func HandlerSavadata(w http.ResponseWriter, data string, uuid int) { |
529 | 650 | SetHeader(w) |
530 | 651 | var resp SavadataResp | ... | ... |
src/common/redis/def.go
1 | 1 | package redis |
2 | 2 | |
3 | 3 | const ( |
4 | - USER_DATA_KEY = "BALLBATTLE_USER_DATA_KEY" //玩家数据 | |
5 | - USER_WITHDRAW_RECORDLIST = "BALLBATTLE_USER_WITHDRAW_RECORDLIST" //玩家提现记录 | |
6 | - USER_TASKINFO_LIST = "BALLBATTLE_USER_TASKINFO_LIST" //任务列表数据缓存 | |
7 | - USER_ACHIEVEMENTINFO_LIST = "BALLBATTLE_USER_ACHIEVEMENTINFO_LIST" //成就列表数据缓存 | |
8 | - USER_SELFDATA_KEY = "BALLBATTLE_USER_SELFDATA_KEY" //玩家自定义数据 需要加上uuid与channel hset field为自定义的key value为保存的数据 | |
4 | + USER_DATA_KEY = "SIXSTAR_USER_DATA_KEY" //玩家数据 | |
5 | + USER_WITHDRAW_RECORDLIST = "SIXSTAR_USER_WITHDRAW_RECORDLIST" //玩家提现记录 | |
6 | + USER_TASKINFO_LIST = "SIXSTARE_USER_TASKINFO_LIST" //任务列表数据缓存 | |
7 | + USER_ACHIEVEMENTINFO_LIST = "SIXSTAR_USER_ACHIEVEMENTINFO_LIST" //成就列表数据缓存 | |
8 | + USER_SELFDATA_KEY = "SIXSTAR_USER_SELFDATA_KEY" //玩家自定义数据 需要加上uuid与channel hset field为自定义的key value为保存的数据 | |
9 | + USER_SCORE_RANK = "SIXSTAR_USER_SCORE_RANK" //玩家排行榜 | |
9 | 10 | ) | ... | ... |