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  }