7
0

新增 game.getRole 和 passport.getUserId 接口

- services/game: 新增 GetRole 接口,入参结构体含 game_id/user_id/user_name/reg_time/role_id/server_id/use_cache/no_virtual,响应含 role_info 和 role_list_info
- services/passport: 新增 GetUserId 接口,通过用户名查询 uid,type 写死为 1,响应提供 GetData() 解析为 map
- 补充两个接口的 client_test.go 使用示例
This commit is contained in:
许 洋 2026-05-11 13:11:38 +08:00
parent fe038d91f3
commit 04ec0d92d7
7 changed files with 225 additions and 1 deletions

View File

@ -67,3 +67,67 @@ func CreateGetAnchorUserResp() *GetAnchorUserResp {
BaseResponse: &responses.BaseResponse{},
}
}
type GetRoleReq struct {
*requests.RpcRequest
GameId int64 `position:"Body" field:"game_id"`
UserId string `position:"Body" field:"user_id"`
UserName string `position:"Body" field:"user_name"`
RegTime int64 `position:"Body" field:"reg_time"`
RoleId string `position:"Body" field:"role_id"`
ServerId int64 `position:"Body" field:"server_id"`
UseCache int64 `position:"Body" field:"use_cache"`
NoVirtual int64 `position:"Body" field:"no_virtual"`
}
type RoleItem struct {
RoleId int64 `json:"roleId"`
Name string `json:"name"`
Server int64 `json:"server"`
ServerName string `json:"serverName"`
Level int64 `json:"level"`
VipLevel int64 `json:"vipLevel"`
CreateTime int64 `json:"createTime"`
RoleLevelUpdateTime int64 `json:"roleLevelUpdateTime"`
Power int64 `json:"power"`
Profession string `json:"profession"`
Gold int64 `json:"gold"`
CouponCount any `json:"couponCount"`
CouponActCount any `json:"couponActCount"`
ZhuanshengLv int64 `json:"zhuansheng_lv"`
ZhuanshengName string `json:"zhuanshengName"`
Points int64 `json:"points"`
MiniCustomsPass any `json:"miniCustomsPass"`
CardIds string `json:"cardIds"`
DayData any `json:"dayData"`
RoleExtData any `json:"roleExtData"`
}
type RoleInfo struct {
RoleItem
FromCache int64 `json:"from_cache"`
}
type GetRoleResp struct {
*responses.BaseResponse
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
RoleInfo RoleInfo `json:"role_info"`
RoleListInfo []RoleItem `json:"role_list_info"`
} `json:"data"`
}
func CreateGetRoleReq(param *GetRoleReq) *GetRoleReq {
if param == nil {
param = &GetRoleReq{}
}
param.RpcRequest = &requests.RpcRequest{}
param.InitWithApiInfo(HOST, VERSION, "/api/activity/getRole")
param.Method = requests.POST
return param
}
func CreateGetRoleResp() *GetRoleResp {
return &GetRoleResp{BaseResponse: &responses.BaseResponse{}}
}

View File

@ -198,3 +198,10 @@ func (c *Client) MakeOrder(req *MakeOrderReq) (response *MakeOrderResp, err erro
err = c.DoAction(req, response)
return
}
// GetRole 获取游戏角色信息
func (c *Client) GetRole(req *GetRoleReq) (response *GetRoleResp, err error) {
response = CreateGetRoleResp()
err = c.DoAction(req, response)
return
}

View File

@ -410,3 +410,24 @@ func TestCreateMakeOrderReq(t *testing.T) {
}
fmt.Println(resp.Msg)
}
func TestGetRole(t *testing.T) {
client, err := NewClient()
if err != nil {
t.Error(err)
return
}
//game_id=9175&server_id=0&user_id=247058227&user_name=yg90938415&no_virtual=1
req := CreateGetRoleReq(&GetRoleReq{
GameId: 9175,
UserId: "247058227",
UserName: "yg90938415",
NoVirtual: 1,
})
resp, err := client.GetRole(req)
if err != nil {
t.Error(err)
return
}
fmt.Println(resp.Data.RoleListInfo)
}

View File

@ -95,3 +95,10 @@ func (c *Client) GetUserRegInfo(req *GetUserRegInfoRequest) (response *GetUserRe
err = c.DoAction(req, response)
return
}
// GetUserId 通过用户名查询 uid
func (c *Client) GetUserId(req *GetUserIdRequest) (response *GetUserIdResponse, err error) {
response = CreateGetUserIdResponse()
err = c.DoAction(req, response)
return
}

View File

@ -40,6 +40,29 @@ func TestGetUserRoleList(t *testing.T) {
t.Logf("resp data:%+v", resp.Data)
}
func TestGetUserRoleList2(t *testing.T) {
client, err := NewClient()
if err != nil {
t.Error(err)
}
// 不限定角色
//req := CreateGetUserRoleListRequest(221016372, 7874, 0, "")
// 限定角色
req := CreateGetUserRoleListRequest2(GetUserRoleListParam{
Uid: 0,
Username: "rz35990497",
GameId: 7874,
RoleId: 0,
RoleServer: "",
})
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)
}
func TestEditCard(t *testing.T) {
client, err := NewClient()
if err != nil {
@ -167,3 +190,25 @@ func TestGetUserRegInfo(t *testing.T) {
fmt.Printf("%#+v\n", resp)
fmt.Printf("%#+v\n", resp.Data)
}
// 测试通过用户名查询 uid
func TestGetUserId(t *testing.T) {
client, err := NewClient()
if err != nil {
t.Error(err)
return
}
req := CreateGetUserIdRequest("ws45265737")
resp, err := client.GetUserId(req)
if err != nil {
t.Error(err)
return
}
data, err := resp.GetData()
if err != nil {
t.Errorf("解析返回数据失败: %v, raw: %s", err, resp.GetHttpContentString())
return
}
fmt.Printf("raw: %s\n", resp.GetHttpContentString())
fmt.Printf("data: %+v\n", data)
}

View File

@ -0,0 +1,46 @@
package passport
import (
"encoding/json"
"fmt"
"strings"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
)
// GetUserIdRequest 通过用户名查询 uid
type GetUserIdRequest struct {
*requests.RpcRequest
}
// GetUserIdResponse 返回 {"uid": "user_name", ...} 格式的 map
type GetUserIdResponse struct {
*responses.BaseResponse
}
// GetData 解析返回的 mapkey 为 uidvalue 为 user_name
func (r *GetUserIdResponse) GetData() (map[string]string, error) {
result := make(map[string]string)
err := json.Unmarshal(r.GetHttpContentBytes(), &result)
return result, err
}
// CreateGetUserIdRequest 构造请求user_name 支持逗号分隔多个
func CreateGetUserIdRequest(userName string) *GetUserIdRequest {
req := &GetUserIdRequest{RpcRequest: &requests.RpcRequest{}}
req.InitWithApiInfo(HOST, VERSION, "/api/get_userid.php")
if !strings.Contains(userName, ",") {
userName = fmt.Sprintf("%v,%v", userName, userName)
}
req.QueryParams = map[string]string{
"user_name": userName,
"type": "1",
}
req.Method = requests.GET
return req
}
func CreateGetUserIdResponse() *GetUserIdResponse {
return &GetUserIdResponse{BaseResponse: &responses.BaseResponse{}}
}

View File

@ -4,9 +4,10 @@ import (
"crypto/md5"
"encoding/hex"
"fmt"
"time"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
"time"
)
type GetUserListRequest struct {
@ -100,6 +101,14 @@ type UserRoleInfo struct {
UpdateTime string `json:"update_time"` // 更新时间戳
}
type GetUserRoleListParam struct {
Uid int
Username string
GameId int
RoleId int
RoleServer string
}
// GetSign 封装一个方法获取当天时间戳和api签名
func GetSign() (ts int64, sign string) {
ts = time.Now().Unix()
@ -110,6 +119,31 @@ func GetSign() (ts int64, sign string) {
return
}
// CreateGetUserRoleListRequest2 获取玩家角色列表
func CreateGetUserRoleListRequest2(param GetUserRoleListParam) (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", param.Uid),
"game_id": fmt.Sprintf("%d", param.GameId),
"role_id": fmt.Sprintf("%d", param.RoleId),
"role_server": param.RoleServer,
"username": param.Username,
"time": fmt.Sprintf("%v", ts),
"sign": sign,
}
req.Method = requests.POST
return
}
// CreateGetUserRoleListRequest 获取玩家角色列表
func CreateGetUserRoleListRequest(uid int, gameId int, roleId int, roleServer string) (req *GetUserRoleListRequest) {
ts, sign := GetSign()