From 9591e794f0d591f9d4ee1046f2d78aa0b5e98dee Mon Sep 17 00:00:00 2001 From: liguanjie Date: Wed, 28 May 2025 17:24:23 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90passport=E6=9C=8D=E5=8A=A1=E3=80=91?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/passport/client.go | 8 ++++ services/passport/client_test.go | 14 +++++++ services/passport/userinfo.go | 65 +++++++++++++++++++++++++++++--- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/services/passport/client.go b/services/passport/client.go index fe11f09..fe81e34 100644 --- a/services/passport/client.go +++ b/services/passport/client.go @@ -32,3 +32,11 @@ func (c *Client) GetUserList(req *GetUserListRequest) (response *GetUserListResp err = c.DoAction(req, response) return } + +// GetUserRoleList +// 获取用户角色列表 +func (c *Client) GetUserRoleList(req *GetUserRoleListRequest) (response *GetUserRoleListResponse, err error) { + response = CreateGetUserRoleListResponse() + err = c.DoAction(req, response) + return +} diff --git a/services/passport/client_test.go b/services/passport/client_test.go index 1732287..f8051f7 100644 --- a/services/passport/client_test.go +++ b/services/passport/client_test.go @@ -17,3 +17,17 @@ func TestGetUserList(t *testing.T) { t.Logf("resp code:%+v", resp.Code) t.Logf("resp data:%+v", resp.Data) } + +func TestGetUserRoleList(t *testing.T) { + client, err := NewClient() + if err != nil { + t.Error(err) + } + req := CreateGetUserRoleListRequest(63610626, 2850) + resp, err := client.GetUserRoleList(req) + if err != nil { + t.Error(err) + } + t.Logf("resp code:%+v", resp.Code) + t.Logf("resp data:%+v", resp.Data) +} diff --git a/services/passport/userinfo.go b/services/passport/userinfo.go index fe0bf9a..289b6bc 100644 --- a/services/passport/userinfo.go +++ b/services/passport/userinfo.go @@ -28,11 +28,7 @@ type UserInfo struct { // CreateGetUserListRequest 获取玩家用户列表 func CreateGetUserListRequest(userName string) (req *GetUserListRequest) { - ts := time.Now().Unix() - hash := md5.New() - hash.Write([]byte(fmt.Sprintf("%v%v", ts, appKey))) - hashBytes := hash.Sum(nil) - sign := hex.EncodeToString(hashBytes) + ts, sign := GetSign() req = &GetUserListRequest{ RpcRequest: &requests.RpcRequest{}, @@ -56,3 +52,62 @@ func CreateGetUserListResponse() (response *GetUserListResponse) { } return } + +type GetUserRoleListRequest struct { + *requests.RpcRequest +} + +type GetUserRoleListResponse struct { + *responses.BaseResponse + Code int `json:"code"` + Msg string `json:"msg"` + Data []UserRoleInfo `json:"data"` +} + +type UserRoleInfo struct { + Uid string `json:"uid"` // uid + GameId string `json:"game_id"` // 子游戏id + RoleId string `json:"role_id"` // 角色id + RoleName string `json:"role_name"` // 角色名 + AddTime string `json:"add_time"` // 创建时间戳 + UpdateTime string `json:"update_time"` // 更新时间戳 +} + +// GetSign 封装一个方法,获取当天时间戳和api签名 +func GetSign() (ts int64, sign string) { + ts = time.Now().Unix() + hash := md5.New() + hash.Write([]byte(fmt.Sprintf("%v%v", ts, appKey))) + hashBytes := hash.Sum(nil) + sign = hex.EncodeToString(hashBytes) + return +} + +// CreateGetUserRoleListRequest 获取玩家角色列表 +func CreateGetUserRoleListRequest(uid int, gameId int) (req *GetUserRoleListRequest) { + ts, sign := GetSign() + + req = &GetUserRoleListRequest{ + RpcRequest: &requests.RpcRequest{}, + } + req.InitWithApiInfo(HOST, VERSION, "/remote_login.php") + req.FormParams = map[string]string{ + "act": "info", + "do": "user_role", + "method": "get", + "uid": fmt.Sprintf("%d", uid), + "game_id": fmt.Sprintf("%d", gameId), + "time": fmt.Sprintf("%v", ts), + "sign": sign, + } + + req.Method = requests.POST + return +} + +func CreateGetUserRoleListResponse() (response *GetUserRoleListResponse) { + response = &GetUserRoleListResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +}