github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/game/internal/circle.go (about)

     1  package internal
     2  
     3  import (
     4  	"common"
     5  	"encoding/json"
     6  	"errors"
     7  	"fmt"
     8  	"io/ioutil"
     9  	"net/http"
    10  	"net/url"
    11  	"reflect"
    12  	"strconv"
    13  	"time"
    14  )
    15  
    16  var (
    17  	packetCreate = struct {
    18  		Urll   string
    19  		Method string
    20  	}{
    21  		Urll:   "http://192.168.1.150:7006/server.do",
    22  		Method: "shenzhouxing.circle.server.packet.create.normal",
    23  	}
    24  
    25  	login = struct {
    26  		Urll   string
    27  		Method string
    28  	}{
    29  		Urll:   "http://192.168.1.150:8002/server.do",
    30  		Method: "youxibi.user.server.third.create.wechat",
    31  	}
    32  
    33  	sign = struct {
    34  		SignType    string
    35  		VersionCode string
    36  		VersionName string
    37  		Lang        string
    38  		DeviceId    string
    39  		Device      string
    40  		PartnerKey  string
    41  		SecretKey   string
    42  	}{
    43  		SignType:    "NORMAL",
    44  		VersionCode: "1",
    45  		VersionName: "1.0",
    46  		Lang:        "CN",
    47  		Device:      "SERVER",
    48  		DeviceId:    "test",
    49  		PartnerKey:  "youxibi_game_chezhu_ddz",
    50  		SecretKey:   "F957BC19502E301F8FDB8BF192116AFD",
    51  	}
    52  )
    53  
    54  type CircleRegister struct {
    55  	UnionId    string
    56  	Nickname   string
    57  	Sex        int
    58  	Language   string
    59  	City       string
    60  	Province   string
    61  	Country    string
    62  	Headimgurl string
    63  }
    64  
    65  type CircleCreatePacket struct {
    66  	UserId int64
    67  	Sum    float32
    68  	Desc   string
    69  }
    70  
    71  func serverRequest(v interface{}) ([]byte, error) {
    72  	now := strconv.FormatInt(time.Now().Unix(), 10)
    73  	urll, method := "", ""
    74  	switch v.(type) {
    75  	case CircleRegister:
    76  		method = login.Method
    77  		urll = login.Urll
    78  	case CircleCreatePacket:
    79  		method = packetCreate.Method
    80  		urll = packetCreate.Urll
    81  	default:
    82  		return nil, errors.New("invalid type assertion :" + fmt.Sprint(reflect.TypeOf(v)))
    83  	}
    84  	params, _ := json.Marshal(v)
    85  	resp, err := http.PostForm(urll, url.Values{
    86  		"params":     {string(params)},
    87  		"partnerKey": {sign.PartnerKey},
    88  		"sendTime":   {now},
    89  		"sign": {common.MD5Encrypt(
    90  			"device=" + sign.Device +
    91  				"&deviceId=" + sign.DeviceId +
    92  				"&lang=" + sign.Lang +
    93  				"&method=" + method +
    94  				"&params=" + string(params) +
    95  				"&partnerKey=" + sign.PartnerKey +
    96  				"&secretKey=" + sign.SecretKey +
    97  				"&sendTime=" + now +
    98  				"&signType=" + sign.SignType +
    99  				"&versionCode=" + sign.VersionCode +
   100  				"&versionName=" + sign.VersionName,
   101  		)},
   102  		"signType":    {sign.SignType},
   103  		"versionCode": {sign.VersionCode},
   104  		"versionName": {sign.VersionName},
   105  		"lang":        {sign.Lang},
   106  		"deviceId":    {sign.DeviceId},
   107  		"device":      {sign.Device},
   108  		"method":      {method},
   109  	})
   110  	if err != nil {
   111  		return nil, errors.New(fmt.Sprint(err))
   112  	}
   113  	defer resp.Body.Close()
   114  	body, err := ioutil.ReadAll(resp.Body)
   115  	if err != nil {
   116  		return nil, errors.New(fmt.Sprint(err))
   117  	}
   118  	return body, nil
   119  }