diff --git a/serveraddr/server b/serveraddr/server index dbb97b5..d748ec3 100644 --- a/serveraddr/server +++ b/serveraddr/server @@ -3,7 +3,6 @@ Redis 密码:yx9CqMakgau65Z8V 端口:6379 - 服务器 公网IP:39.96.43.217 内网IP:172.17.178.29 @@ -13,4 +12,4 @@ Redis 测试环境域名 els-pre.d3games.com 正式服域名 - https://elsxxx.d3games.com \ No newline at end of file + https://elsxxx.d3games.com \ No newline at end of file diff --git a/src/HttpServer/jsonconf/RedConfig.json b/src/HttpServer/jsonconf/RedConfig.json new file mode 100644 index 0000000..005177f --- /dev/null +++ b/src/HttpServer/jsonconf/RedConfig.json @@ -0,0 +1,1202 @@ +[ + { + "id": 1, + "cash": 500 + }, + { + "id": 2, + "cash": 113288 + }, + { + "id": 3, + "cash": 86032 + }, + { + "id": 4, + "cash": 67216 + }, + { + "id": 5, + "cash": 54329 + }, + { + "id": 6, + "cash": 64538 + }, + { + "id": 7, + "cash": 44198 + }, + { + "id": 8, + "cash": 60738 + }, + { + "id": 9, + "cash": 76891 + }, + { + "id": 10, + "cash": 41328 + }, + { + "id": 11, + "cash": 32807 + }, + { + "id": 12, + "cash": 21068 + }, + { + "id": 13, + "cash": 13288 + }, + { + "id": 14, + "cash": 9808 + }, + { + "id": 15, + "cash": 6798 + }, + { + "id": 16, + "cash": 7423 + }, + { + "id": 17, + "cash": 8617 + }, + { + "id": 18, + "cash": 6890 + }, + { + "id": 19, + "cash": 7127 + }, + { + "id": 20, + "cash": 5391 + }, + { + "id": 21, + "cash": 4748 + }, + { + "id": 22, + "cash": 3367 + }, + { + "id": 23, + "cash": 2576 + }, + { + "id": 24, + "cash": 3161 + }, + { + "id": 25, + "cash": 2842 + }, + { + "id": 26, + "cash": 2973 + }, + { + "id": 27, + "cash": 3104 + }, + { + "id": 28, + "cash": 2551 + }, + { + "id": 29, + "cash": 2591 + }, + { + "id": 30, + "cash": 2583 + }, + { + "id": 31, + "cash": 2140 + }, + { + "id": 32, + "cash": 2356 + }, + { + "id": 33, + "cash": 1966 + }, + { + "id": 34, + "cash": 2202 + }, + { + "id": 35, + "cash": 1807 + }, + { + "id": 36, + "cash": 1637 + }, + { + "id": 37, + "cash": 1683 + }, + { + "id": 38, + "cash": 1822 + }, + { + "id": 39, + "cash": 1667 + }, + { + "id": 40, + "cash": 1655 + }, + { + "id": 41, + "cash": 907 + }, + { + "id": 42, + "cash": 958 + }, + { + "id": 43, + "cash": 501 + }, + { + "id": 44, + "cash": 553 + }, + { + "id": 45, + "cash": 930 + }, + { + "id": 46, + "cash": 906 + }, + { + "id": 47, + "cash": 822 + }, + { + "id": 48, + "cash": 846 + }, + { + "id": 49, + "cash": 868 + }, + { + "id": 50, + "cash": 919 + }, + { + "id": 51, + "cash": 839 + }, + { + "id": 52, + "cash": 912 + }, + { + "id": 53, + "cash": 968 + }, + { + "id": 54, + "cash": 940 + }, + { + "id": 55, + "cash": 857 + }, + { + "id": 56, + "cash": 936 + }, + { + "id": 57, + "cash": 972 + }, + { + "id": 58, + "cash": 814 + }, + { + "id": 59, + "cash": 862 + }, + { + "id": 60, + "cash": 921 + }, + { + "id": 61, + "cash": 890 + }, + { + "id": 62, + "cash": 938 + }, + { + "id": 63, + "cash": 857 + }, + { + "id": 64, + "cash": 991 + }, + { + "id": 65, + "cash": 985 + }, + { + "id": 66, + "cash": 843 + }, + { + "id": 67, + "cash": 923 + }, + { + "id": 68, + "cash": 809 + }, + { + "id": 69, + "cash": 1005 + }, + { + "id": 70, + "cash": 858 + }, + { + "id": 71, + "cash": 1023 + }, + { + "id": 72, + "cash": 1003 + }, + { + "id": 73, + "cash": 937 + }, + { + "id": 74, + "cash": 898 + }, + { + "id": 75, + "cash": 985 + }, + { + "id": 76, + "cash": 1025 + }, + { + "id": 77, + "cash": 978 + }, + { + "id": 78, + "cash": 993 + }, + { + "id": 79, + "cash": 980 + }, + { + "id": 80, + "cash": 1034 + }, + { + "id": 81, + "cash": 939 + }, + { + "id": 82, + "cash": 972 + }, + { + "id": 83, + "cash": 886 + }, + { + "id": 84, + "cash": 856 + }, + { + "id": 85, + "cash": 879 + }, + { + "id": 86, + "cash": 999 + }, + { + "id": 87, + "cash": 877 + }, + { + "id": 88, + "cash": 1021 + }, + { + "id": 89, + "cash": 912 + }, + { + "id": 90, + "cash": 1028 + }, + { + "id": 91, + "cash": 878 + }, + { + "id": 92, + "cash": 874 + }, + { + "id": 93, + "cash": 1032 + }, + { + "id": 94, + "cash": 987 + }, + { + "id": 95, + "cash": 917 + }, + { + "id": 96, + "cash": 1008 + }, + { + "id": 97, + "cash": 916 + }, + { + "id": 98, + "cash": 837 + }, + { + "id": 99, + "cash": 896 + }, + { + "id": 100, + "cash": 840 + }, + { + "id": 101, + "cash": 572 + }, + { + "id": 102, + "cash": 595 + }, + { + "id": 103, + "cash": 547 + }, + { + "id": 104, + "cash": 520 + }, + { + "id": 105, + "cash": 526 + }, + { + "id": 106, + "cash": 602 + }, + { + "id": 107, + "cash": 599 + }, + { + "id": 108, + "cash": 577 + }, + { + "id": 109, + "cash": 539 + }, + { + "id": 110, + "cash": 569 + }, + { + "id": 111, + "cash": 558 + }, + { + "id": 112, + "cash": 535 + }, + { + "id": 113, + "cash": 565 + }, + { + "id": 114, + "cash": 566 + }, + { + "id": 115, + "cash": 567 + }, + { + "id": 116, + "cash": 543 + }, + { + "id": 117, + "cash": 616 + }, + { + "id": 118, + "cash": 576 + }, + { + "id": 119, + "cash": 633 + }, + { + "id": 120, + "cash": 573 + }, + { + "id": 121, + "cash": 629 + }, + { + "id": 122, + "cash": 628 + }, + { + "id": 123, + "cash": 626 + }, + { + "id": 124, + "cash": 528 + }, + { + "id": 125, + "cash": 538 + }, + { + "id": 126, + "cash": 616 + }, + { + "id": 127, + "cash": 562 + }, + { + "id": 128, + "cash": 521 + }, + { + "id": 129, + "cash": 522 + }, + { + "id": 130, + "cash": 633 + }, + { + "id": 131, + "cash": 569 + }, + { + "id": 132, + "cash": 527 + }, + { + "id": 133, + "cash": 526 + }, + { + "id": 134, + "cash": 607 + }, + { + "id": 135, + "cash": 528 + }, + { + "id": 136, + "cash": 547 + }, + { + "id": 137, + "cash": 622 + }, + { + "id": 138, + "cash": 527 + }, + { + "id": 139, + "cash": 530 + }, + { + "id": 140, + "cash": 553 + }, + { + "id": 141, + "cash": 631 + }, + { + "id": 142, + "cash": 605 + }, + { + "id": 143, + "cash": 576 + }, + { + "id": 144, + "cash": 524 + }, + { + "id": 145, + "cash": 611 + }, + { + "id": 146, + "cash": 581 + }, + { + "id": 147, + "cash": 558 + }, + { + "id": 148, + "cash": 537 + }, + { + "id": 149, + "cash": 568 + }, + { + "id": 150, + "cash": 625 + }, + { + "id": 151, + "cash": 625 + }, + { + "id": 152, + "cash": 581 + }, + { + "id": 153, + "cash": 562 + }, + { + "id": 154, + "cash": 541 + }, + { + "id": 155, + "cash": 531 + }, + { + "id": 156, + "cash": 576 + }, + { + "id": 157, + "cash": 610 + }, + { + "id": 158, + "cash": 539 + }, + { + "id": 159, + "cash": 528 + }, + { + "id": 160, + "cash": 530 + }, + { + "id": 161, + "cash": 542 + }, + { + "id": 162, + "cash": 525 + }, + { + "id": 163, + "cash": 579 + }, + { + "id": 164, + "cash": 533 + }, + { + "id": 165, + "cash": 577 + }, + { + "id": 166, + "cash": 573 + }, + { + "id": 167, + "cash": 619 + }, + { + "id": 168, + "cash": 535 + }, + { + "id": 169, + "cash": 560 + }, + { + "id": 170, + "cash": 626 + }, + { + "id": 171, + "cash": 521 + }, + { + "id": 172, + "cash": 583 + }, + { + "id": 173, + "cash": 601 + }, + { + "id": 174, + "cash": 549 + }, + { + "id": 175, + "cash": 574 + }, + { + "id": 176, + "cash": 632 + }, + { + "id": 177, + "cash": 614 + }, + { + "id": 178, + "cash": 598 + }, + { + "id": 179, + "cash": 538 + }, + { + "id": 180, + "cash": 529 + }, + { + "id": 181, + "cash": 559 + }, + { + "id": 182, + "cash": 626 + }, + { + "id": 183, + "cash": 581 + }, + { + "id": 184, + "cash": 522 + }, + { + "id": 185, + "cash": 565 + }, + { + "id": 186, + "cash": 535 + }, + { + "id": 187, + "cash": 598 + }, + { + "id": 188, + "cash": 628 + }, + { + "id": 189, + "cash": 617 + }, + { + "id": 190, + "cash": 615 + }, + { + "id": 191, + "cash": 604 + }, + { + "id": 192, + "cash": 537 + }, + { + "id": 193, + "cash": 564 + }, + { + "id": 194, + "cash": 582 + }, + { + "id": 195, + "cash": 551 + }, + { + "id": 196, + "cash": 618 + }, + { + "id": 197, + "cash": 614 + }, + { + "id": 198, + "cash": 594 + }, + { + "id": 199, + "cash": 566 + }, + { + "id": 200, + "cash": 527 + }, + { + "id": 201, + "cash": 616 + }, + { + "id": 202, + "cash": 588 + }, + { + "id": 203, + "cash": 530 + }, + { + "id": 204, + "cash": 628 + }, + { + "id": 205, + "cash": 597 + }, + { + "id": 206, + "cash": 587 + }, + { + "id": 207, + "cash": 550 + }, + { + "id": 208, + "cash": 627 + }, + { + "id": 209, + "cash": 587 + }, + { + "id": 210, + "cash": 622 + }, + { + "id": 211, + "cash": 613 + }, + { + "id": 212, + "cash": 587 + }, + { + "id": 213, + "cash": 557 + }, + { + "id": 214, + "cash": 538 + }, + { + "id": 215, + "cash": 557 + }, + { + "id": 216, + "cash": 623 + }, + { + "id": 217, + "cash": 565 + }, + { + "id": 218, + "cash": 528 + }, + { + "id": 219, + "cash": 621 + }, + { + "id": 220, + "cash": 545 + }, + { + "id": 221, + "cash": 534 + }, + { + "id": 222, + "cash": 546 + }, + { + "id": 223, + "cash": 539 + }, + { + "id": 224, + "cash": 526 + }, + { + "id": 225, + "cash": 603 + }, + { + "id": 226, + "cash": 527 + }, + { + "id": 227, + "cash": 545 + }, + { + "id": 228, + "cash": 583 + }, + { + "id": 229, + "cash": 607 + }, + { + "id": 230, + "cash": 569 + }, + { + "id": 231, + "cash": 526 + }, + { + "id": 232, + "cash": 620 + }, + { + "id": 233, + "cash": 588 + }, + { + "id": 234, + "cash": 586 + }, + { + "id": 235, + "cash": 600 + }, + { + "id": 236, + "cash": 632 + }, + { + "id": 237, + "cash": 581 + }, + { + "id": 238, + "cash": 550 + }, + { + "id": 239, + "cash": 579 + }, + { + "id": 240, + "cash": 559 + }, + { + "id": 241, + "cash": 539 + }, + { + "id": 242, + "cash": 608 + }, + { + "id": 243, + "cash": 534 + }, + { + "id": 244, + "cash": 570 + }, + { + "id": 245, + "cash": 583 + }, + { + "id": 246, + "cash": 600 + }, + { + "id": 247, + "cash": 559 + }, + { + "id": 248, + "cash": 625 + }, + { + "id": 249, + "cash": 568 + }, + { + "id": 250, + "cash": 592 + }, + { + "id": 251, + "cash": 533 + }, + { + "id": 252, + "cash": 596 + }, + { + "id": 253, + "cash": 595 + }, + { + "id": 254, + "cash": 621 + }, + { + "id": 255, + "cash": 575 + }, + { + "id": 256, + "cash": 526 + }, + { + "id": 257, + "cash": 622 + }, + { + "id": 258, + "cash": 630 + }, + { + "id": 259, + "cash": 585 + }, + { + "id": 260, + "cash": 543 + }, + { + "id": 261, + "cash": 550 + }, + { + "id": 262, + "cash": 519 + }, + { + "id": 263, + "cash": 522 + }, + { + "id": 264, + "cash": 563 + }, + { + "id": 265, + "cash": 544 + }, + { + "id": 266, + "cash": 630 + }, + { + "id": 267, + "cash": 544 + }, + { + "id": 268, + "cash": 607 + }, + { + "id": 269, + "cash": 592 + }, + { + "id": 270, + "cash": 558 + }, + { + "id": 271, + "cash": 593 + }, + { + "id": 272, + "cash": 608 + }, + { + "id": 273, + "cash": 520 + }, + { + "id": 274, + "cash": 578 + }, + { + "id": 275, + "cash": 613 + }, + { + "id": 276, + "cash": 614 + }, + { + "id": 277, + "cash": 580 + }, + { + "id": 278, + "cash": 552 + }, + { + "id": 279, + "cash": 590 + }, + { + "id": 280, + "cash": 567 + }, + { + "id": 281, + "cash": 561 + }, + { + "id": 282, + "cash": 631 + }, + { + "id": 283, + "cash": 599 + }, + { + "id": 284, + "cash": 519 + }, + { + "id": 285, + "cash": 549 + }, + { + "id": 286, + "cash": 588 + }, + { + "id": 287, + "cash": 607 + }, + { + "id": 288, + "cash": 611 + }, + { + "id": 289, + "cash": 629 + }, + { + "id": 290, + "cash": 570 + }, + { + "id": 291, + "cash": 579 + }, + { + "id": 292, + "cash": 602 + }, + { + "id": 293, + "cash": 534 + }, + { + "id": 294, + "cash": 521 + }, + { + "id": 295, + "cash": 586 + }, + { + "id": 296, + "cash": 604 + }, + { + "id": 297, + "cash": 561 + }, + { + "id": 298, + "cash": 550 + }, + { + "id": 299, + "cash": 522 + }, + { + "id": 300, + "cash": 518 + } +] \ No newline at end of file diff --git a/src/HttpServer/jsonconf/jsonconf.go b/src/HttpServer/jsonconf/jsonconf.go index ea4bc2d..7413f0c 100644 --- a/src/HttpServer/jsonconf/jsonconf.go +++ b/src/HttpServer/jsonconf/jsonconf.go @@ -64,6 +64,11 @@ type LuckyBagConfigDesc struct { Rate int `json:"rate"` } +type RedpacketConfigDesc struct { + Id int `json:"id"` + Cash int `json:"cash"` +} + type GameConfig struct { AchieventConfig []AchieveDesc TaskConfig []TaskDesc @@ -72,6 +77,17 @@ type GameConfig struct { TrunTableConfig []TrunTableConfigDesc RedPackageConfig []RedPackageConfigDesc LuckyBagConfig []LuckyBagConfigDesc + RedpacketConfig []RedpacketConfigDesc +} + +func GetRedpacketNum(id int) int { + for _, val := range g_jsonconf.RedpacketConfig { + if val.Id == id { + return val.Cash + } + } + + return g_jsonconf.RedpacketConfig[len(g_jsonconf.RedpacketConfig)-1].Cash } func GetJsonConf() *GameConfig { @@ -180,7 +196,14 @@ func LoadJsonConf() error { return err } - logger.Info("loadJsonConf success pconf=%+v,err=%v", *g_jsonconf, err) + err = json.Unmarshal([]byte(content), &g_jsonconf.RedpacketConfig) + if err != nil { + logger.Info("loadJsonConf failed1,err=%v", err) + return err + } + + logger.Info("loadJsonConf success pconf=%v,err=%v", *g_jsonconf, err) + logger.Info("loadJsonConf success turn=%+v,err=%v", g_jsonconf.TrunTableConfig, err) return err } diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 1d4c16d..9bee565 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -255,6 +255,21 @@ type QueryrankinfoResp struct { Data QueryrankinfoData `json:"data"` } +type FetchredbagReq struct { + Gameid string `json:"gameid"` + Channel string `json:"channel"` +} + +type FetchredbagData struct { + Getgoldnum int `json:"getgoldnum"` + Walletgold int `json:"walletgold"` +} +type FetchredbagResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data FetchredbagData `json:"data"` +} + type QuerydrawrewardData struct { Getgold int `json:"getgold"` Walletgold int `json:"walletgold"` @@ -270,9 +285,10 @@ type QuerydrawrewardResp struct { } type QuerygetcashinfoData struct { - Logindaysum int `json:"logindaysum"` - Logindaycontinue int `json:"logindaycontinue"` - Cashdata []WithDrawDesc `json:"cashdata"` + Logindaysum int `json:"logindaysum"` + Logindaycontinue int `json:"logindaycontinue"` + Cashdata []WithDrawDesc `json:"cashdata"` + Cdkeycashdata []CashCdKeyInfo `json:"cdkeycashdata"` } type QuerygetcashinfoResp struct { @@ -281,6 +297,36 @@ type QuerygetcashinfoResp struct { Data QuerygetcashinfoData `json:"data"` } +type GetcashwechatData struct { + Cdkey string `json:"cdkey"` +} +type GetcashwechatResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data GetcashwechatData `json:"data"` +} + +type GetcashwechatReq struct { + Gameid string `json:"gameid"` + Channel string `json:"channel"` + Money float32 `json:"money"` + Openid string `json:"openid"` + Nickname string `json:"nickname"` + Headurl string `json:"headurl"` + Ver string `json:"ver"` + Ctype int `json:"ctype"` +} + +type GetCashWechatData struct { + Cdkey string `json:"cdkey"` +} + +type GetCashWechatResp struct { + Code string `json:"code"` + Data GetCashWechatData `json:"data"` + Msg string `json:"msg"` +} + type GetcashReq struct { Money float32 `json:"money"` Openid string `json:"openid"` @@ -491,6 +537,12 @@ type WithDrawDesc struct { Day int `json:"day"` } +type CashCdKeyInfo struct { + Id int `json:"id"` + Money float32 `json:"money"` + Cdkey string `json:"cdkey"` +} + //玩家数据 type UserData struct { Userid string //玩家w唯一id @@ -522,7 +574,11 @@ type UserData struct { HighScore int64 //玩家历史最高分 FreeTicket int //免费抽奖次数 Ticket int //看视频抽奖次数 + FetchRedCnt int //领取红包次数计数 + IsNew int //新手状态 + FetchRdBagNum int //当天已领的红包 WithDraw WithDrawInfo //提现记录信息 + Cdkeys []CashCdKeyInfo //记录提现的cdkeys Task TaskInfo //玩家任务完成相关信息 Achieve AchieveMentInfo //玩家成就完成相关数据 } diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index bbaa4ed..08f8032 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -794,11 +794,129 @@ func GetUserInfo(uniqueid string) (*UserData, error) { return &tmp, nil } +func GetCashWechatFromSDK(uuid int, goldnum int, gameid, channel, openid, nickname, headurl, ver string, checkcoin int) (string, error) { + + SERVERKEY := conf.GetCoinConf().Key + if gameid == "1017" { + SERVERKEY = XIAOXINGXING_SERVERKEYTEST_1017 + } + if goldnum == 0 || uuid == 0 || gameid == "" || channel == "" || ver == "" { + logger.Error("GetCashFromSDK param empty") + return "error", errors.New("param empty") + } + + if openid == "" { + openid = "test" + } + var paramlist []string + var params TixianDesc + params.Sign_type = "md5" + params.Gameid = gameid + params.Channel = channel + params.Uid = uuid + params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) + params.Headurl = headurl + params.Money = goldnum + params.Openid = openid + params.Nickname = nickname + params.Typ = 11 + params.Ver = ver + params.Editcoin = 1 + params.Checkcoin = checkcoin + signtypestr := "sign_type=" + params.Sign_type + timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) + paramgameid := "gameid=" + gameid + pchannel := "channel=" + channel + puid := "uid=" + strconv.Itoa(uuid) + phead := "headurl=" + headurl + pnickname := "nickname=" + nickname + popenid := "openid=" + openid + pmoney := "money=" + strconv.Itoa(goldnum) + ptype := "typ=" + "11" //微信 + ped := "editcoin=1" + pcheco := "checkcoin=" + strconv.Itoa(checkcoin) + //pver := "ver=" + params.Ver + paramlist = append(paramlist, signtypestr) + paramlist = append(paramlist, timestampstr) + paramlist = append(paramlist, paramgameid) + paramlist = append(paramlist, pchannel) + paramlist = append(paramlist, puid) + if headurl != "" { + paramlist = append(paramlist, phead) + } + if nickname != "" { + paramlist = append(paramlist, pnickname) + } + paramlist = append(paramlist, popenid) + paramlist = append(paramlist, pmoney) + paramlist = append(paramlist, ptype) + paramlist = append(paramlist, ped) + paramlist = append(paramlist, pcheco) + //paramlist = append(paramlist, pver) + + sumparam := GettotalParam(paramlist) + //加serverkey + signsum := sumparam + SERVERKEY + + //进行hash + sign := GetHashValue(signsum) + params.Sign = sign + + bys, err := json.Marshal(¶ms) + if err != nil { + logger.Error("GetCashWechatFromSDK failed=%v", err) + return "error", err + } + res, err := DoHttpPost(bys, "api/server/tixiancdkey") + logger.Info("GetCashWechatFromSDK sumparam is:%v,sign is:%v", signsum, sign) + logger.Info("GetCashWechatFromSDK sumparam param=%v", string(bys)) + if err != nil { + logger.Error("GetCashWechatFromSDK failed=%v", err) + return "error", err + } + + logger.Info("GetCashWechatFromSDK res=%v", res) + + var resp GetCashWechatResp + err = json.Unmarshal([]byte(res), &resp) + if err != nil { + logger.Error("GetCashWechatFromSDK failed=%v", err) + return "error", err + } + + if resp.Code != "0" { + logger.Error("GetCashWechatFromSDK failed=%v", resp.Msg) + return "error", errors.New(resp.Msg) + } + + return resp.Data.Cdkey, nil +} + func SaveUserSelfData(uniqueid, savedata string) error { err := redishandler.GetRedisClient().HSet(redis.USER_SELF_DATA_KEY, uniqueid, savedata) return err } +//领取红包 按次数计算 +func (uinfo *UserData) FetchRedPacket(gameid string, channel string, uuid int) int { + uinfo.FetchRedCnt++ + addgold := jsonconf.GetRedpacketNum(uinfo.FetchRedCnt) + if addgold == 0 { + logger.Error("FetchRedPacket failed addgold=0") + return 0 + } + + goldnum, realaddnum, err := AddCoinToSdk(uuid, addgold, gameid, channel, 102) + if err != nil { + logger.Error("RewardUser failer err=%v", err) + } + uinfo.RealGold = goldnum + + uniqueid := strconv.Itoa(uuid) + channel + SaveUserInfo(uinfo, uniqueid) + return realaddnum +} + func GetUserSelfData(uniqueid string) (string, error) { data, err := redishandler.GetRedisClient().HGet(redis.USER_SELF_DATA_KEY, uniqueid) if err != nil { diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 7f72a7a..292a27a 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -61,11 +61,13 @@ func startServerHttpServe() { http.HandleFunc("/russiaxiaoxiao/querydrawreward", Querydrawreward) //请求抽奖 http.HandleFunc("/russiaxiaoxiao/querygetcashinfo", Querdrawinfo) //请求提现档位数据 http.HandleFunc("/russiaxiaoxiao/getcash", Getcash) //请求提现 + http.HandleFunc("/russiaxiaoxiao/getcashwechat", Getcashwechat) //提现 http.HandleFunc("/russiaxiaoxiao/getcashrecord", Getcashrecord) //请求提现记录 http.HandleFunc("/russiaxiaoxiao/onlinentf", Onlinentf) //在线通知 一分钟一次 http.HandleFunc("/russiaxiaoxiao/updatetaskandachieve", Updatetaskandachieve) //上报任务进度 http.HandleFunc("/russiaxiaoxiao/querytaskinfo", Querytaskinfo) //查询成就和任务列表 http.HandleFunc("/russiaxiaoxiao/gettaskreward", Gettaskreward) //查询成就和任务列表 + http.HandleFunc("/russiaxiaoxiao/fetchredbag", Fetchredbag) //领取红包 //.......................................... /*http.HandleFunc("/eliminatestar/getuserdata", Getuserdata) //获取玩家数据 @@ -362,6 +364,33 @@ func Getnewlevelreward(w http.ResponseWriter, r *http.Request) { //HandlerGetnewlevelreward(w, s, Uuid) } +func Fetchredbag(w http.ResponseWriter, r *http.Request) { + + gameid := "" + channel := "" + uniqueid := "" + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) + gameid = r.Header.Get("Gameid") + channel = r.Header.Get("Channel") + uniqueid = r.Header.Get("Uuid") + r.Header.Get("Channel") + } + + if Uuid == 0 { + SetHeader(w) + //logger.Error("Uuid is nil!") + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Fetchredbag , body:%v,uuid=%v", s, uniqueid) + + HandlerFetchredbag(w, s, uniqueid, gameid, channel, Uuid) +} + func Gettaskreward(w http.ResponseWriter, r *http.Request) { gameid := "" @@ -497,6 +526,33 @@ func Getcashrecord(w http.ResponseWriter, r *http.Request) { HandlerGetcashrecord(w, s, uniqueid, gameid, channel, Uuid) } +func Getcashwechat(w http.ResponseWriter, r *http.Request) { + + gameid := "" + channel := "" + uniqueid := "" + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) + gameid = r.Header.Get("Gameid") + channel = r.Header.Get("Channel") + uniqueid = r.Header.Get("Uuid") + r.Header.Get("Channel") + } + + if Uuid == 0 { + SetHeader(w) + // logger.Error("Uuid is nil!") + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("Getcashwechat , body:%v,uuid=%v", s, uniqueid) + + HandlerGetcashwechat(w, s, uniqueid, gameid, channel, Uuid) +} + func Getcash(w http.ResponseWriter, r *http.Request) { gameid := "" diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 17a1b16..7f1672e 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -9,9 +9,12 @@ import ( "fmt" "net/http" "strconv" + "sync" "time" ) +var llock sync.Mutex + func HandlerSyncuserdata(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { SetHeader(w) @@ -120,6 +123,53 @@ func HandlerUploaduserbasicinfo(w http.ResponseWriter, data string, uniqueuuid s fmt.Fprint(w, string(respstr)) } +func HandlerFetchredbag(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { + SetHeader(w) + llock.Lock() + defer llock.Unlock() + var resp FetchredbagResp + resp.Code = 0 + var rdata FetchredbagReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerFetchredbag data failed:%v,for:%v", err, data) + resp.Message = "网络错误" + resp.Code = ERROR_JSONUNMASH_ERROR + break + } + + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel + uinfo, err := GetUserInfo(uniqueuuid) + if err != nil || uinfo == nil { + logger.Error("redis failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + readaddgold := uinfo.FetchRedPacket(rdata.Gameid, rdata.Channel, uuid) + logger.Info("HandlerFetchredbag uid=%v radladdgold=%v rdata=%v", uuid, readaddgold, rdata) + + resp.Data.Walletgold = uinfo.RealGold + resp.Data.Getgoldnum = readaddgold + + uinfo.IsNew = 0 + uinfo.FetchRdBagNum++ + + //保存数据 + err = SaveUserInfo(uinfo, uniqueuuid) + + resp.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerGettaskreward(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { SetHeader(w) var resp GettaskrewardResp @@ -360,6 +410,146 @@ func HandlerGetcashrecord(w http.ResponseWriter, data string, uniqueuuid, gameid fmt.Fprint(w, string(respstr)) } +func HandlerGetcashwechat(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { + SetHeader(w) + + var resp GetcashwechatResp + resp.Code = 0 + var rdata GetcashwechatReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data) + resp.Message = "json解析错误" + resp.Code = ERROR_JSONUNMASH_ERROR + break + } + //临时处理一下 + /*if rdata.Ver == "" { + rdata.Ver = "2.0.0" + }*/ + + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel + uinfo, err := GetUserInfo(uniqueuuid) + if err != nil || uinfo == nil { + logger.Error("redis failed err=%v", err) + resp.Message = "服务器错误" + resp.Code = ERROR_SRV_ERROR + break + } + + drawnum := int(rdata.Money * 100) + //需要判断一下金币是否足够 + if drawnum*100 > uinfo.RealGold { + logger.Error("gold nor enough failed err=%v", err) + resp.Message = "提现金币不足" + resp.Code = ERROR_GETCASH_GOLDNOTENOUGH_FAILED + break + } + + //需要处理一下提现级别 + + index := 0 + var info *WithDrawDesc + index, info = uinfo.GetWithDrawData(rdata.Money) + + if index == -1 || info == nil { + logger.Error("AddWithDrawList failed err=%v", err) + resp.Message = "网络错误" + resp.Code = ERROR_SRV_ERROR + break + } + + if info.Isnew == 0 { + logger.Error("AddWithDrawList failed err=%v", err) + resp.Message = "新人专享只能提取一次" + resp.Code = ERROR_WITHDRAWONLYONE + break + } + + if info.Preisfind == 0 { + logger.Error("HandlerGetcash Preisfind err=%v", err) + resp.Message = "请先完成前一档提现" + resp.Code = ERROR_PRENOTFINISH + break + } + + //普通提现需要判断前置条件 + if rdata.Ctype == 1 { + //判断一下前置条件的下一档 + if index == len(uinfo.WithDraw.Cashdata)-1 { + //最后一档了不用处理 + } else { + if index < len(uinfo.WithDraw.Cashdata)-1 { + uinfo.WithDraw.Cashdata[index+1].Preisfind = 1 + } + } + } + + //如果是2.2.7版本开启提现次数限制 + if rdata.Ver == "2.2.7" && uinfo.GetCashCnt > 0 { + logger.Error("HandlerGetcash GetCashCnt err=%v", err) + resp.Message = "当天已经提现过了,请明天再来" + resp.Code = ERROR_PRENOTFINISH + break + } + + if uinfo.SumLoginDay < info.Day { + logger.Error("HandlerGetcash GetCashCnt err=%v", err) + resp.Message = "累计登陆天数不足" + resp.Code = ERROR_PRENOTFINISH + break + } + + //2.2.5版本开启自动审核 + checkcoin := 2 + if rdata.Ver == "2.2.5" || rdata.Ver == "2.2.6" || rdata.Ver == "2.2.7" { + logger.Info("HandlerGetcash autocheckcoin") + if drawnum <= 150 { + //1.5挡位以下不需要审核 + checkcoin = 1 //临时关闭u + } + } + + cdkey, err := GetCashWechatFromSDK(uuid, drawnum, rdata.Gameid, rdata.Channel, rdata.Openid, rdata.Nickname, rdata.Headurl, rdata.Ver, checkcoin) + if err != nil { + logger.Error("GetCashFromSDK failed err=%v", err) + resp.Message = "从后台提现失败了" + resp.Code = ERROR_GETCASH_FAILED + break + } + logger.Info("HandlerGetcashwechat cdkey=%v", cdkey) + + //保存cdkey + var tmp CashCdKeyInfo + tmp.Cdkey = cdkey + tmp.Money = rdata.Money + tmp.Id = info.Cid + uinfo.Cdkeys = append(uinfo.Cdkeys, tmp) + + uinfo.GetCashCnt++ + //如果是前六挡 + if info.Cid <= 6 && rdata.Ctype == 1 { + uinfo.WithDraw.Cashdata[index].Isnew = 0 + } + + uinfo.RealGold += drawnum * 100 + //uinfo.RealGold -= drawnum * 100 + + resp.Data.Cdkey = cdkey + SaveUserInfo(uinfo, uniqueuuid) + + resp.Code = ERROR_OK + break + } + + //回包 + logger.Info("HandlerGetcashwechat resp=%+v", resp) + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + func HandlerGetcash(w http.ResponseWriter, data string, uniqueuuid, gameid, channel string, uuid int) { SetHeader(w) var resp GetcashResp @@ -478,6 +668,7 @@ func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uniqueuuid, gameid, resp.Data.Logindaycontinue = uinfo.ContinueLoginDay resp.Data.Logindaysum = uinfo.SumLoginDay resp.Data.Cashdata = append(resp.Data.Cashdata, uinfo.WithDraw.Cashdata...) + resp.Data.Cdkeycashdata = append(resp.Data.Cdkeycashdata, uinfo.Cdkeys...) resp.Code = ERROR_OK break -- libgit2 0.21.0