diff --git a/services/game/client.go b/services/game/client.go index 23327eb..943f259 100644 --- a/services/game/client.go +++ b/services/game/client.go @@ -54,8 +54,17 @@ func (c *Client) GetProtocolByGameId(req *GetProtocolByGameIdRep) (resp *GetProt err = c.DoAction(req, resp) return } + +// GetGameSimpleList 获取子游戏简单列表 func (c *Client) GetGameSimpleList(req *GetGameSimpleListReq) (resp *GetGameSimpleListResp, err error) { resp = CreateGetGameSimpleListResp() err = c.DoAction(req, resp) return } + +// GetGameServerV2 获取游戏服务器列表v2 +func (c *Client) GetGameServerV2(req *GetServerV2Request) (resp *GetServerV2Response, err error) { + resp = CreateGetServerV2Response() + err = c.DoAction(req, resp) + return +} diff --git a/services/game/client_test.go b/services/game/client_test.go index b470a01..130a3df 100644 --- a/services/game/client_test.go +++ b/services/game/client_test.go @@ -91,3 +91,17 @@ func TestGetGameSimpleList(t *testing.T) { } fmt.Println(info) } + +func TestGetGameServerV2(t *testing.T) { + client, newErr := NewClient() + if newErr != nil { + panic(newErr) + } + req := CreateGetServerV2Request("n2", "", "") + info, err := client.GetGameServerV2(req) + if err != nil { + t.Error(err) + return + } + fmt.Println(info) +} diff --git a/services/game/game_server.go b/services/game/game_server.go new file mode 100644 index 0000000..7245c93 --- /dev/null +++ b/services/game/game_server.go @@ -0,0 +1,107 @@ +package game + +import ( + "crypto/md5" + "encoding/hex" + "fmt" + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests" + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses" + "time" +) + +var ( + gameServerKey = "gaoreapi" +) + +// GetGameServerSign 子游戏区服信息,特有验签 +func GetGameServerSign(gameId int) (ts int64, sign string) { + ts = time.Now().Unix() + hash := md5.New() + hash.Write([]byte(fmt.Sprintf("%v%v%v", gameId, ts, gameServerKey))) + hashBytes := hash.Sum(nil) + sign = hex.EncodeToString(hashBytes) + return +} + +type GetServerIdRequest struct { + *requests.RpcRequest +} + +type GetServerIdResponse struct { + *responses.BaseResponse + Code int `json:"code"` + Msg string `json:"msg"` + Data map[string]string `json:"data"` +} + +// CreateGetServerIdRequest +// Deprecated 方法已废弃,不要用 +func CreateGetServerIdRequest(gameId int) (req *GetServerIdRequest) { + req = &GetServerIdRequest{ + RpcRequest: &requests.RpcRequest{}, + } + req.InitWithApiInfo(HOST, VERSION, "/api/game/getServerId") + // 获取时间戳、签名 + ts, sign := GetGameServerSign(gameId) + + req.FormParams = map[string]string{ + "appid": fmt.Sprintf("%v", gameId), + "time": fmt.Sprintf("%v", ts), + "sign": sign, + } + + req.Method = requests.POST + return +} + +// CreateGetServerIdResponse +// Deprecated 方法已废弃,不要用 +func CreateGetServerIdResponse() (response *GetServerIdResponse) { + response = &GetServerIdResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} + +// --------------游戏区服v2列表查询---------- + +// GetServerV2Request 请求结构体 +type GetServerV2Request struct { + *requests.RpcRequest +} + +type GetServerV2Response struct { + *responses.BaseResponse + Code int `json:"code"` + Msg string `json:"msg"` + Data []GameServerV2 `json:"data"` +} + +type GameServerV2 struct { + ServerId int `json:"server_id"` + Name string `json:"name"` + GameSign string `json:"game_sign"` + ServerSign int `json:"server_sign"` +} + +func CreateGetServerV2Request(gameSign string, serverSigns string, types string) (req *GetServerV2Request) { + req = &GetServerV2Request{ + RpcRequest: &requests.RpcRequest{}, + } + req.InitWithApiInfo(HOST, VERSION, "/api/game/getServerV2") + + req.FormParams = map[string]string{ + "game_sign": gameSign, + "server_signs": serverSigns, + "types": types, + } + req.Method = requests.POST + return +} + +func CreateGetServerV2Response() (response *GetServerV2Response) { + response = &GetServerV2Response{ + BaseResponse: &responses.BaseResponse{}, + } + return +}