github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/game/circle/request.go (about) 1 package circle 2 3 import ( 4 "conf" 5 "encoding/json" 6 "errors" 7 "github.com/name5566/leaf/log" 8 "io/ioutil" 9 "net/http" 10 "net/url" 11 "strconv" 12 "time" 13 ) 14 15 type CircleRequest struct { 16 GatewayUrl string 17 Method string 18 Params string 19 } 20 21 type CircleUserInfo struct { 22 UnionID string `json:"unionid"` 23 Nickname string `json:"nickname"` 24 Headimgurl string `json:"headimgurl"` 25 Sex int `json:"sex"` 26 Language string `json:"language"` 27 City string `json:"city"` 28 Province string `json:"province"` 29 Country string `json:"country"` 30 } 31 32 type RedPacketInfo struct { 33 UserID int `json:"userid"` 34 Sum float64 `json:"sum"` 35 Desc string `json:"desc"` 36 } 37 38 func NewCircleLoginRequest(info *CircleUserInfo) *CircleRequest { 39 data, _ := json.Marshal(info) 40 req := new(CircleRequest) 41 req.GatewayUrl = "http://api.user.youxibi.com/server.do" 42 req.Method = "youxibi.user.server.third.create.wechat" 43 req.Params = string(data) 44 return req 45 } 46 47 func NewCircleCreateRedPacketRequest(info *RedPacketInfo) *CircleRequest { 48 data, _ := json.Marshal(info) 49 req := new(CircleRequest) 50 req.GatewayUrl = "http://api.circle.shenzhouxing.com/server.do" 51 req.Method = "shenzhouxing.circle.server.packet.create.normal" 52 req.Params = string(data) 53 return req 54 } 55 56 func NewCircleAuthorize(userID int) *CircleRequest { 57 temp := &struct { 58 UserID int `json:"userid"` 59 }{ 60 UserID: userID, 61 } 62 data, _ := json.Marshal(temp) 63 req := new(CircleRequest) 64 req.GatewayUrl = "http://api.user.youxibi.com/server.do" 65 req.Method = "youxibi.user.server.create.login.code" 66 req.Params = string(data) 67 return req 68 } 69 70 // 检测圈圈用户是否被拉黑 71 func NewCircleCheckBlackRequest(userID int) *CircleRequest { 72 temp := &struct { 73 UserID int `json:"userid"` 74 Code string `json:"code"` 75 }{ 76 UserID: userID, 77 Code: "DEFAULT", 78 } 79 data, _ := json.Marshal(temp) 80 req := new(CircleRequest) 81 req.GatewayUrl = "http://api.user.youxibi.com/server.do" 82 req.Method = "youxibi.user.server.black.user.check" 83 req.Params = string(data) 84 return req 85 } 86 /* 87 红包码请求参数 88 */ 89 type RedPacketCodeInfo struct { 90 Sum float64 `json:"sum"` 91 } 92 func DoRequestRepacketCode(params string) []byte { 93 p := url.Values{} 94 p.Add("device", "SERVER") 95 p.Add("deviceId", "CZDDZ") 96 p.Add("lang", "CN") 97 p.Add("method", conf.GetCfgRedpacketCode().Method) 98 p.Add("params", params) 99 p.Add("partnerKey", conf.GetCfgRedpacketCode().PartnerKey) 100 p.Add("secretKey", conf.GetCfgRedpacketCode().SecretKey) 101 p.Add("sendTime", strconv.Itoa(int(time.Now().Unix()))) 102 p.Add("signType", "NORMAL") 103 p.Add("versionCode", "1") 104 p.Add("versionName", "1.0") 105 p.Add("sign", generateSign(p)) 106 r, err := http.PostForm(conf.GetCfgRedpacketCode().Url, p) 107 if err != nil { 108 log.Debug("%v", err) 109 return []byte{} 110 } 111 defer r.Body.Close() 112 result, _ := ioutil.ReadAll(r.Body) 113 return result 114 } 115 func GetRedPacketCode(Fee float64) (code string, err error) { 116 //请求圈圈获取红包码 117 temp := &struct { 118 Code string 119 Data string 120 }{} 121 r := new(RedPacketCodeInfo) 122 r.Sum = Fee 123 param, _ := json.Marshal(r) 124 err = json.Unmarshal(DoRequestRepacketCode(string(param)), temp) 125 if temp.Code != "0" { 126 log.Error("请求圈圈红包错误") 127 return "", errors.New("The request error. ") 128 } 129 return temp.Data, err 130 }