Commit a63e6df922012e4433cc03a6a91f976ea8c56b91
1 parent
4f87991c
Exists in
master
提交接口
Showing
5 changed files
with
751 additions
and
34 deletions
Show diff stats
src/HttpServer/logic/constdef.go
| @@ -50,6 +50,9 @@ const ( | @@ -50,6 +50,9 @@ const ( | ||
| 50 | ) | 50 | ) |
| 51 | 51 | ||
| 52 | const ( | 52 | const ( |
| 53 | - WATCH_ADD_DAY_LIMIT = 50 //当天获取红包次数限制 | ||
| 54 | - ACCGOLDRATELIMIT = 3 //玩家每天看视频加速金币次数 | 53 | + WATCH_ADD_DAY_LIMIT = 50 //当天获取红包次数限制 |
| 54 | + ACCGOLDRATELIMIT = 3 //玩家每天看视频加速金币次数 | ||
| 55 | + WATCHADSGOLDLIMIT = 15 //玩家每天看广告领金币限制次数 | ||
| 56 | + WATCHADSGOLDLRATE = 10800 //看广告领取金币的秒数 | ||
| 57 | + ZHENGHOURMULT = 3600 //整点领取金币的秒数 | ||
| 55 | ) | 58 | ) |
src/HttpServer/logic/datadef.go
| @@ -111,6 +111,84 @@ type AcclecteResp struct { | @@ -111,6 +111,84 @@ type AcclecteResp struct { | ||
| 111 | Data AcclectData `json:"data"` | 111 | Data AcclectData `json:"data"` |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | +type WatchAdsGetGoldData struct { | ||
| 115 | + Reward string `json:"reward"` | ||
| 116 | + LeftTimes int `json:"leftTimes"` | ||
| 117 | + Coin DoBuyCatCoin `json:"coin"` | ||
| 118 | +} | ||
| 119 | +type WatchAdsGetGoldResp struct { | ||
| 120 | + Code int `json:"code"` | ||
| 121 | + Message string `json:"message"` | ||
| 122 | + Data WatchAdsGetGoldData `json:"data"` | ||
| 123 | +} | ||
| 124 | + | ||
| 125 | +type RecvTimingRewardData struct { | ||
| 126 | + Reward string `json:"reward"` | ||
| 127 | +} | ||
| 128 | + | ||
| 129 | +type RecvTimingRewardResp struct { | ||
| 130 | + Code int `json:"code"` | ||
| 131 | + Message string `json:"message"` | ||
| 132 | + Data RecvTimingRewardData `json:"data"` | ||
| 133 | +} | ||
| 134 | + | ||
| 135 | +type RecoveryReq struct { | ||
| 136 | + Position int `json:"position"` | ||
| 137 | +} | ||
| 138 | + | ||
| 139 | +type RecoveryData struct { | ||
| 140 | + Coin DoBuyCatCoin `json:"coin"` | ||
| 141 | +} | ||
| 142 | + | ||
| 143 | +type RecoveryResp struct { | ||
| 144 | + Code int `json:"code"` | ||
| 145 | + Message string `json:"message"` | ||
| 146 | + Data RecoveryData `json:"data"` | ||
| 147 | +} | ||
| 148 | + | ||
| 149 | +type ComposeReq struct { | ||
| 150 | + PositionList []int `json:"positionList"` | ||
| 151 | +} | ||
| 152 | + | ||
| 153 | +type ComposeData struct { | ||
| 154 | + CatList []CatPosInfo `json:"catList"` | ||
| 155 | + Coin DoBuyCatCoin `json:"coin"` | ||
| 156 | +} | ||
| 157 | + | ||
| 158 | +type ComposeResp struct { | ||
| 159 | + Code int `json:"code"` | ||
| 160 | + Message string `json:"message"` | ||
| 161 | + Data ComposeData `json:"data"` | ||
| 162 | +} | ||
| 163 | + | ||
| 164 | +type RecvRedCatReq struct { | ||
| 165 | + Rtype int `json:"type"` | ||
| 166 | + RedCatId int `json:"redCatId"` | ||
| 167 | +} | ||
| 168 | + | ||
| 169 | +type RecvRedCatData struct { | ||
| 170 | + Num float32 `json:"num"` | ||
| 171 | +} | ||
| 172 | + | ||
| 173 | +type RecvRedCatResp struct { | ||
| 174 | + Code int `json:"code"` | ||
| 175 | + Message string `json:"message"` | ||
| 176 | + Data RecvRedCatData `json:"data"` | ||
| 177 | +} | ||
| 178 | + | ||
| 179 | +type LimitCatListData struct { | ||
| 180 | + CatId int `json:"catId"` | ||
| 181 | + Cash float32 `json:"cash"` | ||
| 182 | + Status int `json:"status"` | ||
| 183 | + Date string `json:"date"` | ||
| 184 | +} | ||
| 185 | + | ||
| 186 | +type LimitCatListResp struct { | ||
| 187 | + Code int `json:"code"` | ||
| 188 | + Message string `json:"message"` | ||
| 189 | + Data []LimitCatListData `json:"data"` | ||
| 190 | +} | ||
| 191 | + | ||
| 114 | type AcclecteBoxResp struct { | 192 | type AcclecteBoxResp struct { |
| 115 | Code int `json:"code"` | 193 | Code int `json:"code"` |
| 116 | Message string `json:"message"` | 194 | Message string `json:"message"` |
| @@ -469,38 +547,40 @@ type AchieveMentData struct { | @@ -469,38 +547,40 @@ type AchieveMentData struct { | ||
| 469 | 547 | ||
| 470 | //玩家数据 | 548 | //玩家数据 |
| 471 | type UserData struct { | 549 | type UserData struct { |
| 472 | - UserId int //玩家id | ||
| 473 | - RegTime int //注册时间 | ||
| 474 | - Gold int64 //金币 | ||
| 475 | - GoldSum int64 //玩家累计金币 | ||
| 476 | - Love int64 //爱心值 | ||
| 477 | - Goldrate int64 //金币生成速率 | ||
| 478 | - Loverate int64 //爱心生产速率 | ||
| 479 | - Highestlv int //当前最高猫等级 | ||
| 480 | - InviteId int //邀请者uid | ||
| 481 | - CurBoxLv int //当前猫箱子等级 | ||
| 482 | - IsDouble int //当前加速标签 1表示3倍收益 0表示正常 | ||
| 483 | - StartDoubleTime int //开始双倍时间 | ||
| 484 | - DoubleLeftTimes int //开始双倍时间 | ||
| 485 | - IsAuto int //当前是否自动合成 | ||
| 486 | - IsBoxAcc int //是否处于加速生成箱子状态 | ||
| 487 | - RandGiftNum int //当前剩余空投猫粮次数 | ||
| 488 | - RandGiftDay int //记录当前猫粮日期,当日期变化则重置RandGiftNum | ||
| 489 | - RandGiftTime int //记录上一次空投猫粮时间 | ||
| 490 | - Redbag float32 //红包值 单位为分 | ||
| 491 | - Head string //头像地址 | ||
| 492 | - NickName string //昵称 | ||
| 493 | - RealName string //实名 | ||
| 494 | - IsFirstRedBgCat int //是否合成过红包猫 0表示否1表示是 | ||
| 495 | - OfflineGold int64 //离线金币 | ||
| 496 | - OfflineLove int64 //离线爱心 | ||
| 497 | - LastLoginTime int //上次登陆时间 | ||
| 498 | - CatShopInfo CatShopData //猫咖门店数据 | ||
| 499 | - Taskinfo TaskData //任务数据 | ||
| 500 | - AchieveMent AchieveMentData //成就数据 | ||
| 501 | - PosInfo []CatPosInfo //位置信息 从0开始 | ||
| 502 | - BuyCatInfo []BuyCatInfoData //商店购买猫数据 第一个元素为1级猫 第二个为2级猫以此类推 | ||
| 503 | - CatRoomInfo []CatRoomData //猫咖店数据 | 550 | + UserId int //玩家id |
| 551 | + RegTime int //注册时间 | ||
| 552 | + Gold int64 //金币 | ||
| 553 | + GoldSum int64 //玩家累计金币 | ||
| 554 | + Love int64 //爱心值 | ||
| 555 | + Goldrate int64 //金币生成速率 | ||
| 556 | + Loverate int64 //爱心生产速率 | ||
| 557 | + Highestlv int //当前最高猫等级 | ||
| 558 | + InviteId int //邀请者uid | ||
| 559 | + CurBoxLv int //当前猫箱子等级 | ||
| 560 | + IsDouble int //当前加速标签 1表示3倍收益 0表示正常 | ||
| 561 | + StartDoubleTime int //开始双倍时间 | ||
| 562 | + DoubleLeftTimes int //剩余加速金币次数 | ||
| 563 | + GetWatchAdsGoldTime int //看广告领金币次数 | ||
| 564 | + IsAuto int //当前是否自动合成 | ||
| 565 | + IsBoxAcc int //是否处于加速生成箱子状态 | ||
| 566 | + RandGiftNum int //当前剩余空投猫粮次数 | ||
| 567 | + RandGiftDay int //记录当前猫粮日期,当日期变化则重置RandGiftNum | ||
| 568 | + RandGiftTime int //记录上一次空投猫粮时间 | ||
| 569 | + Redbag float32 //红包值 单位为分 | ||
| 570 | + Head string //头像地址 | ||
| 571 | + NickName string //昵称 | ||
| 572 | + RealName string //实名 | ||
| 573 | + IsFirstRedBgCat int //是否合成过红包猫 0表示否1表示是 | ||
| 574 | + OfflineGold int64 //离线金币 | ||
| 575 | + OfflineLove int64 //离线爱心 | ||
| 576 | + LastLoginTime int //上次登陆时间 | ||
| 577 | + LastTimingRewardHour int //上次领取整点奖励的时刻 | ||
| 578 | + CatShopInfo CatShopData //猫咖门店数据 | ||
| 579 | + Taskinfo TaskData //任务数据 | ||
| 580 | + AchieveMent AchieveMentData //成就数据 | ||
| 581 | + PosInfo []CatPosInfo //位置信息 从0开始 | ||
| 582 | + BuyCatInfo []BuyCatInfoData //商店购买猫数据 第一个元素为1级猫 第二个为2级猫以此类推 | ||
| 583 | + CatRoomInfo []CatRoomData //猫咖店数据 | ||
| 504 | 584 | ||
| 505 | } | 585 | } |
| 506 | 586 |
src/HttpServer/logic/function.go
| @@ -12,6 +12,67 @@ import ( | @@ -12,6 +12,67 @@ import ( | ||
| 12 | "time" | 12 | "time" |
| 13 | ) | 13 | ) |
| 14 | 14 | ||
| 15 | +//加红包接口 | ||
| 16 | +func (u *UserData) AddRedPackect(num float32) { | ||
| 17 | + //todo 接后台 | ||
| 18 | + u.Redbag += num | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +//清空一个位置的猫 | ||
| 22 | +func (u *UserData) CleadPos(pos int) { | ||
| 23 | + if pos < 0 || pos >= len(u.PosInfo) { | ||
| 24 | + logger.Error("CleadPos failed pos=%v,posinfo=%v", pos, u.PosInfo) | ||
| 25 | + return | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + u.PosInfo[pos].Cat = 0 | ||
| 29 | + u.PosInfo[pos].Position = pos | ||
| 30 | + u.PosInfo[pos].StartTime = 0 | ||
| 31 | + u.PosInfo[pos].RedPacket = 0 | ||
| 32 | + u.PosInfo[pos].Time = 0 | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +//设置一个位置的猫 | ||
| 36 | +func (u *UserData) SetCatPos(pos int, catlv, time int, redpack float32, starttime int) { | ||
| 37 | + if pos < 0 || pos >= len(u.PosInfo) { | ||
| 38 | + logger.Error("CleadPos failed pos=%v,posinfo=%v", pos, u.PosInfo) | ||
| 39 | + return | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + u.PosInfo[pos].Cat = catlv | ||
| 43 | + u.PosInfo[pos].Position = pos | ||
| 44 | + u.PosInfo[pos].StartTime = starttime | ||
| 45 | + u.PosInfo[pos].RedPacket = redpack | ||
| 46 | + u.PosInfo[pos].Time = time | ||
| 47 | +} | ||
| 48 | + | ||
| 49 | +//获取所有分红猫列表的位置 | ||
| 50 | +func (u *UserData) GetLimitCatList() []int { | ||
| 51 | + var rtlist []int | ||
| 52 | + for k, v := range u.PosInfo { | ||
| 53 | + if v.Cat > 36 { | ||
| 54 | + rtlist = append(rtlist, k) | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + return rtlist | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +//根据猫等级获得位置 | ||
| 62 | +func (u *UserData) GetCatPos(catlv int) int { | ||
| 63 | + pos := -1 | ||
| 64 | + for _, v := range u.PosInfo { | ||
| 65 | + if v.Cat == catlv { | ||
| 66 | + pos = v.Position | ||
| 67 | + } | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + if pos < 0 || pos >= len(u.PosInfo) { | ||
| 71 | + pos = -1 | ||
| 72 | + } | ||
| 73 | + return pos | ||
| 74 | +} | ||
| 75 | + | ||
| 15 | func (u *UserData) HandlePassDay() { | 76 | func (u *UserData) HandlePassDay() { |
| 16 | isdiffday := false | 77 | isdiffday := false |
| 17 | nowtime := time.Now() | 78 | nowtime := time.Now() |
| @@ -45,6 +106,7 @@ func (u *UserData) HandlePassDay() { | @@ -45,6 +106,7 @@ func (u *UserData) HandlePassDay() { | ||
| 45 | if isdiffday { | 106 | if isdiffday { |
| 46 | //跨天了 | 107 | //跨天了 |
| 47 | u.DoubleLeftTimes = ACCGOLDRATELIMIT | 108 | u.DoubleLeftTimes = ACCGOLDRATELIMIT |
| 109 | + u.GetWatchAdsGoldTime = WATCHADSGOLDLIMIT | ||
| 48 | } | 110 | } |
| 49 | 111 | ||
| 50 | u.LastLoginTime = int(nowtime.Unix()) | 112 | u.LastLoginTime = int(nowtime.Unix()) |
| @@ -97,6 +159,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) { | @@ -97,6 +159,7 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) { | ||
| 97 | udata.Redbag = 0 | 159 | udata.Redbag = 0 |
| 98 | udata.IsFirstRedBgCat = 0 | 160 | udata.IsFirstRedBgCat = 0 |
| 99 | udata.DoubleLeftTimes = ACCGOLDRATELIMIT | 161 | udata.DoubleLeftTimes = ACCGOLDRATELIMIT |
| 162 | + udata.GetWatchAdsGoldTime = WATCHADSGOLDLIMIT | ||
| 100 | udata.RegTime = int(time.Now().Unix()) | 163 | udata.RegTime = int(time.Now().Unix()) |
| 101 | udata.LastLoginTime = int(time.Now().Unix()) | 164 | udata.LastLoginTime = int(time.Now().Unix()) |
| 102 | 165 |
src/HttpServer/logic/httpserver.go
| @@ -33,6 +33,14 @@ func startServerHttpServe() { | @@ -33,6 +33,14 @@ func startServerHttpServe() { | ||
| 33 | http.HandleFunc("/api/home/shop", QueryBuyCat) //商店 | 33 | http.HandleFunc("/api/home/shop", QueryBuyCat) //商店 |
| 34 | http.HandleFunc("/api/home/leftRateTimes", LeftRateTimes) //剩余看广告加速次数 | 34 | http.HandleFunc("/api/home/leftRateTimes", LeftRateTimes) //剩余看广告加速次数 |
| 35 | http.HandleFunc("/api/home/change", ExchangePos) //合成 | 35 | http.HandleFunc("/api/home/change", ExchangePos) //合成 |
| 36 | + http.HandleFunc("/api/home/leftTimes", LeftTimes) //剩余看广告领取金币次数 | ||
| 37 | + http.HandleFunc("/api/home/adCoin", WatchAdsGetGold) //看广告领取金币 | ||
| 38 | + http.HandleFunc("/api/home/recvTimingReward", RecvTimingReward) //整点领取金币 | ||
| 39 | + http.HandleFunc("/api/home/redCatList", RedCatList) //红包猫列表 此接口目前没有用到 暂时不实线 | ||
| 40 | + http.HandleFunc("/api/home/recovery", Recovery) //回收猫 | ||
| 41 | + http.HandleFunc("/api/home/compose", Compose) //五猫合成 | ||
| 42 | + http.HandleFunc("/api/home/recvRedCat", RecvRedCat) //红包猫领取 | ||
| 43 | + http.HandleFunc("/api/home/limitCatList", LimitCatList) //分红猫列表 | ||
| 36 | 44 | ||
| 37 | /////---------------------------------------------------------------------old | 45 | /////---------------------------------------------------------------------old |
| 38 | http.HandleFunc("/happycat/exchangetwoPos", ExchangePos) //交换位置 | 46 | http.HandleFunc("/happycat/exchangetwoPos", ExchangePos) //交换位置 |
| @@ -447,6 +455,24 @@ func DoBuyCat(w http.ResponseWriter, r *http.Request) { | @@ -447,6 +455,24 @@ func DoBuyCat(w http.ResponseWriter, r *http.Request) { | ||
| 447 | HandlerDoBuyCat(w, s, Uuid) | 455 | HandlerDoBuyCat(w, s, Uuid) |
| 448 | } | 456 | } |
| 449 | 457 | ||
| 458 | +func LeftTimes(w http.ResponseWriter, r *http.Request) { | ||
| 459 | + Uuid := 0 | ||
| 460 | + if len(r.Header) > 0 { | ||
| 461 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 462 | + } | ||
| 463 | + if Uuid == 0 { | ||
| 464 | + SetHeader(w) | ||
| 465 | + return | ||
| 466 | + } | ||
| 467 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 468 | + r.Body.Close() | ||
| 469 | + | ||
| 470 | + s := string(result) | ||
| 471 | + logger.Info("LeftTimes , body:%v,uuid=%v", s, Uuid) | ||
| 472 | + | ||
| 473 | + HandlerLeftTimes(w, s, Uuid) | ||
| 474 | +} | ||
| 475 | + | ||
| 450 | func LeftRateTimes(w http.ResponseWriter, r *http.Request) { | 476 | func LeftRateTimes(w http.ResponseWriter, r *http.Request) { |
| 451 | Uuid := 0 | 477 | Uuid := 0 |
| 452 | if len(r.Header) > 0 { | 478 | if len(r.Header) > 0 { |
| @@ -591,6 +617,132 @@ func AcclecteBoxRate(w http.ResponseWriter, r *http.Request) { | @@ -591,6 +617,132 @@ func AcclecteBoxRate(w http.ResponseWriter, r *http.Request) { | ||
| 591 | // HandlerAcclecteBoxRate(w, s, Uuid) | 617 | // HandlerAcclecteBoxRate(w, s, Uuid) |
| 592 | } | 618 | } |
| 593 | 619 | ||
| 620 | +func RedCatList(w http.ResponseWriter, r *http.Request) { | ||
| 621 | + Uuid := 0 | ||
| 622 | + if len(r.Header) > 0 { | ||
| 623 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 624 | + } | ||
| 625 | + if Uuid == 0 { | ||
| 626 | + SetHeader(w) | ||
| 627 | + return | ||
| 628 | + } | ||
| 629 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 630 | + r.Body.Close() | ||
| 631 | + | ||
| 632 | + s := string(result) | ||
| 633 | + logger.Info("RedCatList , body:%v,uuid=%v", s, Uuid) | ||
| 634 | + | ||
| 635 | + //HandlerRecvTimingReward(w, s, Uuid) | ||
| 636 | +} | ||
| 637 | + | ||
| 638 | +func LimitCatList(w http.ResponseWriter, r *http.Request) { | ||
| 639 | + Uuid := 0 | ||
| 640 | + if len(r.Header) > 0 { | ||
| 641 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 642 | + } | ||
| 643 | + if Uuid == 0 { | ||
| 644 | + SetHeader(w) | ||
| 645 | + return | ||
| 646 | + } | ||
| 647 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 648 | + r.Body.Close() | ||
| 649 | + | ||
| 650 | + s := string(result) | ||
| 651 | + logger.Info("LimitCatList , body:%v,uuid=%v", s, Uuid) | ||
| 652 | + | ||
| 653 | + HandlerLimitCatList(w, s, Uuid) | ||
| 654 | +} | ||
| 655 | + | ||
| 656 | +func RecvRedCat(w http.ResponseWriter, r *http.Request) { | ||
| 657 | + Uuid := 0 | ||
| 658 | + if len(r.Header) > 0 { | ||
| 659 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 660 | + } | ||
| 661 | + if Uuid == 0 { | ||
| 662 | + SetHeader(w) | ||
| 663 | + return | ||
| 664 | + } | ||
| 665 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 666 | + r.Body.Close() | ||
| 667 | + | ||
| 668 | + s := string(result) | ||
| 669 | + logger.Info("RecvRedCat , body:%v,uuid=%v", s, Uuid) | ||
| 670 | + | ||
| 671 | + HandlerRecvRedCat(w, s, Uuid) | ||
| 672 | +} | ||
| 673 | + | ||
| 674 | +func Compose(w http.ResponseWriter, r *http.Request) { | ||
| 675 | + Uuid := 0 | ||
| 676 | + if len(r.Header) > 0 { | ||
| 677 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 678 | + } | ||
| 679 | + if Uuid == 0 { | ||
| 680 | + SetHeader(w) | ||
| 681 | + return | ||
| 682 | + } | ||
| 683 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 684 | + r.Body.Close() | ||
| 685 | + | ||
| 686 | + s := string(result) | ||
| 687 | + logger.Info("Compose , body:%v,uuid=%v", s, Uuid) | ||
| 688 | + | ||
| 689 | + HandlerCompose(w, s, Uuid) | ||
| 690 | +} | ||
| 691 | + | ||
| 692 | +func Recovery(w http.ResponseWriter, r *http.Request) { | ||
| 693 | + Uuid := 0 | ||
| 694 | + if len(r.Header) > 0 { | ||
| 695 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 696 | + } | ||
| 697 | + if Uuid == 0 { | ||
| 698 | + SetHeader(w) | ||
| 699 | + return | ||
| 700 | + } | ||
| 701 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 702 | + r.Body.Close() | ||
| 703 | + | ||
| 704 | + s := string(result) | ||
| 705 | + logger.Info("Recovery , body:%v,uuid=%v", s, Uuid) | ||
| 706 | + | ||
| 707 | + HandlerRecovery(w, s, Uuid) | ||
| 708 | +} | ||
| 709 | + | ||
| 710 | +func RecvTimingReward(w http.ResponseWriter, r *http.Request) { | ||
| 711 | + Uuid := 0 | ||
| 712 | + if len(r.Header) > 0 { | ||
| 713 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 714 | + } | ||
| 715 | + if Uuid == 0 { | ||
| 716 | + SetHeader(w) | ||
| 717 | + return | ||
| 718 | + } | ||
| 719 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 720 | + r.Body.Close() | ||
| 721 | + | ||
| 722 | + s := string(result) | ||
| 723 | + logger.Info("RecvTimingReward , body:%v,uuid=%v", s, Uuid) | ||
| 724 | + | ||
| 725 | + HandlerRecvTimingReward(w, s, Uuid) | ||
| 726 | +} | ||
| 727 | + | ||
| 728 | +func WatchAdsGetGold(w http.ResponseWriter, r *http.Request) { | ||
| 729 | + Uuid := 0 | ||
| 730 | + if len(r.Header) > 0 { | ||
| 731 | + Uuid, _ = strconv.Atoi(r.Header.Get("uid")) | ||
| 732 | + } | ||
| 733 | + if Uuid == 0 { | ||
| 734 | + SetHeader(w) | ||
| 735 | + return | ||
| 736 | + } | ||
| 737 | + result, _ := ioutil.ReadAll(r.Body) | ||
| 738 | + r.Body.Close() | ||
| 739 | + | ||
| 740 | + s := string(result) | ||
| 741 | + logger.Info("WatchAdsGetGold , body:%v,uuid=%v", s, Uuid) | ||
| 742 | + | ||
| 743 | + HandlerWatchAdsGetGold(w, s, Uuid) | ||
| 744 | +} | ||
| 745 | + | ||
| 594 | func AcclecteGold(w http.ResponseWriter, r *http.Request) { | 746 | func AcclecteGold(w http.ResponseWriter, r *http.Request) { |
| 595 | Uuid := 0 | 747 | Uuid := 0 |
| 596 | if len(r.Header) > 0 { | 748 | if len(r.Header) > 0 { |
src/HttpServer/logic/logic.go
| @@ -403,6 +403,398 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { | @@ -403,6 +403,398 @@ func HandlerGetMainPageInfo(w http.ResponseWriter, data string, uuid int) { | ||
| 403 | fmt.Fprint(w, string(respstr)) | 403 | fmt.Fprint(w, string(respstr)) |
| 404 | } | 404 | } |
| 405 | 405 | ||
| 406 | +func HandlerLimitCatList(w http.ResponseWriter, data string, uuid int) { | ||
| 407 | + SetHeader(w) | ||
| 408 | + var resp LimitCatListResp | ||
| 409 | + resp.Code = 0 | ||
| 410 | + resp.Message = "success" | ||
| 411 | + | ||
| 412 | + for { | ||
| 413 | + | ||
| 414 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 415 | + if err != nil || uinfo == nil { | ||
| 416 | + logger.Error("HandlerRecvRedCat getuserinfo failed=%v", err) | ||
| 417 | + resp.Code = 1 | ||
| 418 | + resp.Message = "get userinfo failed" | ||
| 419 | + break | ||
| 420 | + } | ||
| 421 | + | ||
| 422 | + poslist := uinfo.GetLimitCatList() | ||
| 423 | + | ||
| 424 | + for _, pos := range poslist { | ||
| 425 | + if pos > 0 && pos < len(uinfo.PosInfo) { | ||
| 426 | + var tmp LimitCatListData | ||
| 427 | + tmp.CatId = uinfo.PosInfo[pos].Cat | ||
| 428 | + tmp.Status = 0 | ||
| 429 | + tmp.Cash = uinfo.PosInfo[pos].RedPacket | ||
| 430 | + tmp.Date = time.Now().Format("2006-01-02T 15:04:05") | ||
| 431 | + resp.Data = append(resp.Data, tmp) | ||
| 432 | + } | ||
| 433 | + } | ||
| 434 | + | ||
| 435 | + resp.Code = 0 | ||
| 436 | + break | ||
| 437 | + } | ||
| 438 | + | ||
| 439 | + //回包 | ||
| 440 | + respstr, _ := json.Marshal(&resp) | ||
| 441 | + fmt.Fprint(w, string(respstr)) | ||
| 442 | + | ||
| 443 | +} | ||
| 444 | + | ||
| 445 | +func HandlerRecvRedCat(w http.ResponseWriter, data string, uuid int) { | ||
| 446 | + SetHeader(w) | ||
| 447 | + var resp RecvRedCatResp | ||
| 448 | + resp.Code = 0 | ||
| 449 | + resp.Message = "success" | ||
| 450 | + var rdata RecvRedCatReq | ||
| 451 | + err := json.Unmarshal([]byte(data), &rdata) | ||
| 452 | + | ||
| 453 | + for { | ||
| 454 | + if err != nil { | ||
| 455 | + logger.Info("json decode HandlerRecvRedCat data failed:%v", err, " for:%v", data) | ||
| 456 | + resp.Message = "json unmarshal failed" | ||
| 457 | + resp.Code = 1 | ||
| 458 | + break | ||
| 459 | + } | ||
| 460 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 461 | + if err != nil || uinfo == nil { | ||
| 462 | + logger.Error("HandlerRecvRedCat getuserinfo failed=%v", err) | ||
| 463 | + resp.Code = 1 | ||
| 464 | + resp.Message = "get userinfo failed" | ||
| 465 | + break | ||
| 466 | + } | ||
| 467 | + | ||
| 468 | + //先判断位置 | ||
| 469 | + cpos := uinfo.GetCatPos(rdata.RedCatId) | ||
| 470 | + if cpos == -1 { | ||
| 471 | + logger.Error("HandlerRecvRedCat nothave cat failed=%v", rdata.RedCatId) | ||
| 472 | + resp.Code = 1 | ||
| 473 | + resp.Message = "nothave cat failed" | ||
| 474 | + break | ||
| 475 | + } | ||
| 476 | + | ||
| 477 | + //判读下计时的时间是否结束 | ||
| 478 | + nowtime := int(time.Now().Unix()) | ||
| 479 | + v := uinfo.PosInfo[cpos] | ||
| 480 | + if v.Time != 0 { | ||
| 481 | + if nowtime < v.StartTime+v.Time { | ||
| 482 | + //时间还未结束无法领取 | ||
| 483 | + logger.Error("HandlerRecvRedCat timenotenough failed=%v", rdata.RedCatId) | ||
| 484 | + resp.Code = 1 | ||
| 485 | + resp.Message = "timenotenough failed" | ||
| 486 | + break | ||
| 487 | + } | ||
| 488 | + } | ||
| 489 | + | ||
| 490 | + //领取红包 | ||
| 491 | + addredpack := v.RedPacket | ||
| 492 | + if rdata.Rtype == 1 { | ||
| 493 | + addredpack = addredpack * 2 | ||
| 494 | + } | ||
| 495 | + | ||
| 496 | + uinfo.AddRedPackect(addredpack) | ||
| 497 | + uinfo.CleadPos(cpos) | ||
| 498 | + | ||
| 499 | + uinfo.CalcGoldRate() | ||
| 500 | + | ||
| 501 | + resp.Data.Num = addredpack | ||
| 502 | + resp.Code = 0 | ||
| 503 | + break | ||
| 504 | + } | ||
| 505 | + | ||
| 506 | + //回包 | ||
| 507 | + respstr, _ := json.Marshal(&resp) | ||
| 508 | + fmt.Fprint(w, string(respstr)) | ||
| 509 | + | ||
| 510 | +} | ||
| 511 | + | ||
| 512 | +func HandlerCompose(w http.ResponseWriter, data string, uuid int) { | ||
| 513 | + SetHeader(w) | ||
| 514 | + var resp ComposeResp | ||
| 515 | + resp.Code = 0 | ||
| 516 | + resp.Message = "success" | ||
| 517 | + var rdata ComposeReq | ||
| 518 | + err := json.Unmarshal([]byte(data), &rdata) | ||
| 519 | + | ||
| 520 | + for { | ||
| 521 | + if err != nil { | ||
| 522 | + logger.Info("json decode HandlerCompose data failed:%v", err, " for:%v", data) | ||
| 523 | + resp.Message = "json unmarshal failed" | ||
| 524 | + resp.Code = 1 | ||
| 525 | + break | ||
| 526 | + } | ||
| 527 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 528 | + if err != nil || uinfo == nil { | ||
| 529 | + logger.Error("HandlerCompose getuserinfo failed=%v", err) | ||
| 530 | + resp.Code = 1 | ||
| 531 | + resp.Message = "get userinfo failed" | ||
| 532 | + break | ||
| 533 | + } | ||
| 534 | + | ||
| 535 | + //先需要判断五个位置是否准确 | ||
| 536 | + eastsum := 0 | ||
| 537 | + westsum := 0 | ||
| 538 | + southsum := 0 | ||
| 539 | + northsum := 0 | ||
| 540 | + middlesum := 0 | ||
| 541 | + for _, val := range rdata.PositionList { | ||
| 542 | + if val < 0 || val >= len(uinfo.PosInfo) { | ||
| 543 | + logger.Error("HandlerCompose Position failed=%v", err) | ||
| 544 | + | ||
| 545 | + break | ||
| 546 | + } | ||
| 547 | + v := uinfo.PosInfo[val] | ||
| 548 | + if v.Cat == 103 { | ||
| 549 | + eastsum++ | ||
| 550 | + } | ||
| 551 | + if v.Cat == 104 { | ||
| 552 | + westsum++ | ||
| 553 | + } | ||
| 554 | + if v.Cat == 105 { | ||
| 555 | + southsum++ | ||
| 556 | + } | ||
| 557 | + if v.Cat == 106 { | ||
| 558 | + northsum++ | ||
| 559 | + } | ||
| 560 | + if v.Cat == 107 { | ||
| 561 | + middlesum++ | ||
| 562 | + } | ||
| 563 | + } | ||
| 564 | + if !(eastsum > 0 && westsum > 0 && northsum > 0 && southsum > 0 && middlesum > 0) { | ||
| 565 | + logger.Error("HandlerCompose notfivecat failed=%v", err) | ||
| 566 | + resp.Code = 1 | ||
| 567 | + resp.Message = "notfivecat failed" | ||
| 568 | + break | ||
| 569 | + } | ||
| 570 | + | ||
| 571 | + //合成了五方猫 | ||
| 572 | + //获取一天招财猫配置 | ||
| 573 | + cfg := jsonconf.GetRedCatConfig(100 + 2) | ||
| 574 | + if cfg == nil { | ||
| 575 | + logger.Error("HandlerCompose getcfg failed=%v", err) | ||
| 576 | + resp.Code = 1 | ||
| 577 | + resp.Message = "getcfg failed" | ||
| 578 | + break | ||
| 579 | + } | ||
| 580 | + nowtime := int(time.Now().Unix()) | ||
| 581 | + uinfo.SetCatPos(rdata.PositionList[0], 2+100, 24*3600, cfg.Money, nowtime) | ||
| 582 | + //清空其他位置的猫 | ||
| 583 | + for k, v := range rdata.PositionList { | ||
| 584 | + if k > 0 { | ||
| 585 | + uinfo.CleadPos(v) | ||
| 586 | + } | ||
| 587 | + } | ||
| 588 | + | ||
| 589 | + //重新计算一下速度 | ||
| 590 | + uinfo.CalcGoldRate() | ||
| 591 | + | ||
| 592 | + resp.Data.CatList = append(resp.Data.CatList, uinfo.PosInfo...) | ||
| 593 | + resp.Data.Coin.UserId = uuid | ||
| 594 | + resp.Data.Coin.Coin = strconv.FormatInt(uinfo.Gold, 10) | ||
| 595 | + resp.Data.Coin.UpdateTime = int(time.Now().Unix()) | ||
| 596 | + resp.Data.Coin.IcomeRate = strconv.FormatInt(uinfo.Goldrate, 10) | ||
| 597 | + resp.Code = 0 | ||
| 598 | + break | ||
| 599 | + } | ||
| 600 | + | ||
| 601 | + //回包 | ||
| 602 | + respstr, _ := json.Marshal(&resp) | ||
| 603 | + fmt.Fprint(w, string(respstr)) | ||
| 604 | + | ||
| 605 | +} | ||
| 606 | + | ||
| 607 | +func HandlerRecovery(w http.ResponseWriter, data string, uuid int) { | ||
| 608 | + SetHeader(w) | ||
| 609 | + var resp RecoveryResp | ||
| 610 | + resp.Code = 0 | ||
| 611 | + resp.Message = "success" | ||
| 612 | + var rdata RecoveryReq | ||
| 613 | + err := json.Unmarshal([]byte(data), &rdata) | ||
| 614 | + | ||
| 615 | + for { | ||
| 616 | + if err != nil { | ||
| 617 | + logger.Info("json decode HandlerRecovery data failed:%v", err, " for:%v", data) | ||
| 618 | + resp.Message = "json unmarshal failed" | ||
| 619 | + resp.Code = 1 | ||
| 620 | + break | ||
| 621 | + } | ||
| 622 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 623 | + if err != nil || uinfo == nil { | ||
| 624 | + logger.Error("HandlerRecovery getuserinfo failed=%v", err) | ||
| 625 | + resp.Code = 1 | ||
| 626 | + resp.Message = "get userinfo failed" | ||
| 627 | + break | ||
| 628 | + } | ||
| 629 | + | ||
| 630 | + if rdata.Position < 0 || rdata.Position >= len(uinfo.PosInfo) { | ||
| 631 | + logger.Error("HandlerRecovery Position failed=%v", err) | ||
| 632 | + resp.Code = 1 | ||
| 633 | + resp.Message = "Position failed" | ||
| 634 | + break | ||
| 635 | + } | ||
| 636 | + | ||
| 637 | + if uinfo.PosInfo[rdata.Position].Cat > 36 || uinfo.PosInfo[rdata.Position].Cat == 0 { | ||
| 638 | + //高级猫或者没有猫无法卖 | ||
| 639 | + logger.Error("HandlerRecovery CatLV failed=%v", err) | ||
| 640 | + resp.Code = 1 | ||
| 641 | + resp.Message = "CatLV failed" | ||
| 642 | + break | ||
| 643 | + } | ||
| 644 | + | ||
| 645 | + cfg := jsonconf.GetCatConfig(uinfo.PosInfo[rdata.Position].Cat) | ||
| 646 | + if cfg == nil { | ||
| 647 | + logger.Error("HandlerRecovery CatLVCFG failed=%v", uinfo.PosInfo[rdata.Position].Cat) | ||
| 648 | + resp.Code = 1 | ||
| 649 | + resp.Message = "CatLVCFG failed" | ||
| 650 | + break | ||
| 651 | + } | ||
| 652 | + uinfo.CleadPos(rdata.Position) | ||
| 653 | + | ||
| 654 | + //重新计算速度 | ||
| 655 | + uinfo.CalcGoldRate() | ||
| 656 | + //加金币 | ||
| 657 | + price, _ := strconv.ParseInt(cfg.Price, 10, 64) | ||
| 658 | + uinfo.Gold += price / 10 | ||
| 659 | + | ||
| 660 | + resp.Data.Coin.UserId = uuid | ||
| 661 | + resp.Data.Coin.Coin = strconv.FormatInt(uinfo.Gold, 10) | ||
| 662 | + resp.Data.Coin.UpdateTime = int(time.Now().Unix()) | ||
| 663 | + resp.Data.Coin.IcomeRate = strconv.FormatInt(uinfo.Goldrate, 10) | ||
| 664 | + resp.Code = 0 | ||
| 665 | + break | ||
| 666 | + } | ||
| 667 | + | ||
| 668 | + //回包 | ||
| 669 | + respstr, _ := json.Marshal(&resp) | ||
| 670 | + fmt.Fprint(w, string(respstr)) | ||
| 671 | +} | ||
| 672 | + | ||
| 673 | +func HandlerRecvTimingReward(w http.ResponseWriter, data string, uuid int) { | ||
| 674 | + SetHeader(w) | ||
| 675 | + var resp RecvTimingRewardResp | ||
| 676 | + resp.Code = 0 | ||
| 677 | + resp.Message = "success" | ||
| 678 | + | ||
| 679 | + for { | ||
| 680 | + | ||
| 681 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 682 | + if err != nil || uinfo == nil { | ||
| 683 | + logger.Error("HandlerRecvTimingReward getuserinfo failed=%v", err) | ||
| 684 | + resp.Code = 1 | ||
| 685 | + resp.Message = "get userinfo failed" | ||
| 686 | + break | ||
| 687 | + } | ||
| 688 | + | ||
| 689 | + //判断一下领取的时间点是否正确 | ||
| 690 | + nowt := time.Now() | ||
| 691 | + if nowt.Minute() < 50 && nowt.Minute() > 10 { | ||
| 692 | + logger.Error("HandlerRecvTimingReward time failed=%v", err) | ||
| 693 | + resp.Code = 1 | ||
| 694 | + resp.Message = "time failed" | ||
| 695 | + break | ||
| 696 | + } | ||
| 697 | + | ||
| 698 | + nowh := 0 | ||
| 699 | + if nowt.Minute() >= 50 { | ||
| 700 | + //领取的是笑一个小时 | ||
| 701 | + if nowt.Hour() < 23 { | ||
| 702 | + if uinfo.LastTimingRewardHour >= nowt.Hour()+1 { | ||
| 703 | + //已经领取过了 无法在零 | ||
| 704 | + logger.Error("HandlerRecvTimingReward alreadyfetched failed=%v", err) | ||
| 705 | + resp.Code = 1 | ||
| 706 | + resp.Message = "alreadyfetched failed" | ||
| 707 | + break | ||
| 708 | + } | ||
| 709 | + nowh = nowt.Hour() | ||
| 710 | + } else { | ||
| 711 | + if uinfo.LastTimingRewardHour == 0 { | ||
| 712 | + //已经领取过了 无法在零 | ||
| 713 | + logger.Error("HandlerRecvTimingReward alreadyfetched failed=%v", err) | ||
| 714 | + resp.Code = 1 | ||
| 715 | + resp.Message = "alreadyfetched failed" | ||
| 716 | + break | ||
| 717 | + } | ||
| 718 | + nowh = 0 | ||
| 719 | + } | ||
| 720 | + | ||
| 721 | + } | ||
| 722 | + | ||
| 723 | + if nowt.Minute() <= 10 { | ||
| 724 | + //领取的是本时段的 | ||
| 725 | + if uinfo.LastTimingRewardHour >= nowt.Hour() { | ||
| 726 | + //已经领取过了 无法在零 | ||
| 727 | + logger.Error("HandlerRecvTimingReward alreadyfetched failed=%v", err) | ||
| 728 | + resp.Code = 1 | ||
| 729 | + resp.Message = "alreadyfetched failed" | ||
| 730 | + break | ||
| 731 | + } | ||
| 732 | + nowh = nowt.Hour() | ||
| 733 | + } | ||
| 734 | + | ||
| 735 | + addgold := uinfo.Goldrate * ZHENGHOURMULT | ||
| 736 | + uinfo.Gold += addgold | ||
| 737 | + uinfo.LastTimingRewardHour = nowh | ||
| 738 | + | ||
| 739 | + SaveUserInfo(uinfo, strconv.Itoa(uuid)) | ||
| 740 | + | ||
| 741 | + resp.Data.Reward = strconv.FormatInt(addgold, 10) | ||
| 742 | + resp.Code = 0 | ||
| 743 | + break | ||
| 744 | + } | ||
| 745 | + | ||
| 746 | + //回包 | ||
| 747 | + respstr, _ := json.Marshal(&resp) | ||
| 748 | + fmt.Fprint(w, string(respstr)) | ||
| 749 | +} | ||
| 750 | + | ||
| 751 | +func HandlerWatchAdsGetGold(w http.ResponseWriter, data string, uuid int) { | ||
| 752 | + SetHeader(w) | ||
| 753 | + var resp WatchAdsGetGoldResp | ||
| 754 | + resp.Code = 0 | ||
| 755 | + resp.Message = "success" | ||
| 756 | + | ||
| 757 | + for { | ||
| 758 | + | ||
| 759 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 760 | + if err != nil || uinfo == nil { | ||
| 761 | + logger.Error("HandlerWatchAdsGetGold getuserinfo failed=%v", err) | ||
| 762 | + resp.Code = 1 | ||
| 763 | + resp.Message = "get userinfo failed" | ||
| 764 | + break | ||
| 765 | + } | ||
| 766 | + | ||
| 767 | + if uinfo.GetWatchAdsGoldTime <= 0 { | ||
| 768 | + //不够次数了 | ||
| 769 | + logger.Error("HandlerWatchAdsGetGold not enoughtimes failed=%v", err) | ||
| 770 | + resp.Code = 1 | ||
| 771 | + resp.Message = "enoughtimes" | ||
| 772 | + break | ||
| 773 | + } | ||
| 774 | + | ||
| 775 | + uinfo.GetWatchAdsGoldTime-- | ||
| 776 | + addgold := uinfo.Goldrate * WATCHADSGOLDLRATE | ||
| 777 | + uinfo.Gold += addgold | ||
| 778 | + | ||
| 779 | + resp.Data.Reward = strconv.FormatInt(addgold, 10) | ||
| 780 | + resp.Data.LeftTimes = uinfo.GetWatchAdsGoldTime | ||
| 781 | + | ||
| 782 | + resp.Data.Coin.UserId = uuid | ||
| 783 | + resp.Data.Coin.Coin = strconv.FormatInt(uinfo.Gold, 10) | ||
| 784 | + accrate := uinfo.Goldrate * 3 | ||
| 785 | + resp.Data.Coin.IcomeRate = strconv.FormatInt(accrate, 10) | ||
| 786 | + resp.Data.Coin.UpdateTime = int(time.Now().Unix()) | ||
| 787 | + SaveUserInfo(uinfo, strconv.Itoa(uuid)) | ||
| 788 | + | ||
| 789 | + resp.Code = 0 | ||
| 790 | + break | ||
| 791 | + } | ||
| 792 | + | ||
| 793 | + //回包 | ||
| 794 | + respstr, _ := json.Marshal(&resp) | ||
| 795 | + fmt.Fprint(w, string(respstr)) | ||
| 796 | +} | ||
| 797 | + | ||
| 406 | func HandlerAcclecteGold(w http.ResponseWriter, data string, uuid int) { | 798 | func HandlerAcclecteGold(w http.ResponseWriter, data string, uuid int) { |
| 407 | SetHeader(w) | 799 | SetHeader(w) |
| 408 | var resp AcclecteResp | 800 | var resp AcclecteResp |
| @@ -455,6 +847,33 @@ func HandlerAcclecteGold(w http.ResponseWriter, data string, uuid int) { | @@ -455,6 +847,33 @@ func HandlerAcclecteGold(w http.ResponseWriter, data string, uuid int) { | ||
| 455 | fmt.Fprint(w, string(respstr)) | 847 | fmt.Fprint(w, string(respstr)) |
| 456 | } | 848 | } |
| 457 | 849 | ||
| 850 | +func HandlerLeftTimes(w http.ResponseWriter, data string, uuid int) { | ||
| 851 | + SetHeader(w) | ||
| 852 | + var resp LeftRateTimesResp | ||
| 853 | + resp.Code = 0 | ||
| 854 | + resp.Message = "success" | ||
| 855 | + | ||
| 856 | + for { | ||
| 857 | + | ||
| 858 | + uinfo, err := GetUserInfo(strconv.Itoa(uuid)) | ||
| 859 | + if err != nil || uinfo == nil { | ||
| 860 | + logger.Error("HandlerLeftTimes getuserinfo failed=%v", err) | ||
| 861 | + resp.Code = 1 | ||
| 862 | + resp.Message = "get userinfo failed" | ||
| 863 | + break | ||
| 864 | + } | ||
| 865 | + | ||
| 866 | + resp.Data.LeftTimes = uinfo.GetWatchAdsGoldTime | ||
| 867 | + resp.Data.LimitTimes = WATCHADSGOLDLIMIT | ||
| 868 | + | ||
| 869 | + resp.Code = 0 | ||
| 870 | + break | ||
| 871 | + } | ||
| 872 | + //回包 | ||
| 873 | + respstr, _ := json.Marshal(&resp) | ||
| 874 | + fmt.Fprint(w, string(respstr)) | ||
| 875 | +} | ||
| 876 | + | ||
| 458 | func HandlerLeftRateTimes(w http.ResponseWriter, data string, uuid int) { | 877 | func HandlerLeftRateTimes(w http.ResponseWriter, data string, uuid int) { |
| 459 | SetHeader(w) | 878 | SetHeader(w) |
| 460 | var resp LeftRateTimesResp | 879 | var resp LeftRateTimesResp |