From fe6c49973bc81689ae0099e89e9ba4b3b501fb34 Mon Sep 17 00:00:00 2001 From: yuxh Date: Mon, 14 Sep 2026 14:56:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(asdk):=20=E6=96=B0=E5=A2=9E=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=8E=A9=E5=AE=B6=E6=9C=80=E8=BF=91=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=8E=A5=E5=8F=A3=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 供 AI 客服定位玩家在玩的游戏:传入一批平台账号,返回其中最近登录的 那一款子游戏及其所属根游戏(game_sign),玩法 QA 据此归类检索。 data 为空对象表示这些账号都没有登录记录,是正常结果而非错误,code 仍为 0。 --- services/asdk/client.go | 7 ++++ services/asdk/last_login_game.go | 61 ++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 services/asdk/last_login_game.go diff --git a/services/asdk/client.go b/services/asdk/client.go index c378822..ebdedef 100644 --- a/services/asdk/client.go +++ b/services/asdk/client.go @@ -61,3 +61,10 @@ func (c *Client) ClearPaySwitchCache(req *ClearPaySwitchCacheReq) (resp *ClearPa err = c.DoAction(req, resp) return } + +// GetLastLoginGame 查询玩家最近登录游戏所属的根游戏(内网接口,供 AI 客服定位玩家在玩的游戏) +func (c *Client) GetLastLoginGame(req *LastLoginGameReq) (resp *LastLoginGameResp, err error) { + resp = CreateLastLoginGameResp() + err = c.DoAction(req, resp) + return +} diff --git a/services/asdk/last_login_game.go b/services/asdk/last_login_game.go new file mode 100644 index 0000000..4e5e10b --- /dev/null +++ b/services/asdk/last_login_game.go @@ -0,0 +1,61 @@ +package asdk + +import ( + "strconv" + "strings" + + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests" + "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses" +) + +// LastLoginGameReq +// 查询玩家最近登录游戏(内网接口,走 /api 分组的内部签名) +type LastLoginGameReq struct { + *requests.RpcRequest +} + +// LastLoginGameResp +// Data 为空对象(game_id=0、game_sign="")表示这些账号都没有登录记录, +// 「查不到」是正常结果而非错误,code 仍为 0。 +type LastLoginGameResp struct { + *responses.BaseResponse + Code int `json:"code"` + Msg string `json:"msg"` + Data struct { + UserName string `json:"user_name"` + GameId int64 `json:"game_id"` // 子游戏(包)ID + GameSign string `json:"game_sign"` // 根游戏标识 + GameName string `json:"game_name"` // 子游戏名,非根游戏名 + LastLoginTime int64 `json:"last_login_time"` + } `json:"data"` + TraceId string `json:"trace_id"` +} + +type LastLoginGameParam struct { + Ts int64 + Sign string + UserNames []string +} + +// CreateLastLoginGameReq 构造查询请求:多个平台账号一并下发, +// 服务端在这些账号里挑最近登录的那一条返回。 +func CreateLastLoginGameReq(param LastLoginGameParam) *LastLoginGameReq { + req := &LastLoginGameReq{ + RpcRequest: &requests.RpcRequest{}, + } + + req.InitWithApiInfo(HOST, VERSION, "/api/user/last_login_game") + req.Method = requests.POST + req.FormParams = map[string]string{ + "ts": strconv.FormatInt(param.Ts, 10), + "sign": param.Sign, + "user_names": strings.Join(param.UserNames, ","), + } + return req +} + +func CreateLastLoginGameResp() *LastLoginGameResp { + return &LastLoginGameResp{ + BaseResponse: &responses.BaseResponse{}, + } +}