feat(game): 新增 GetKfUrl 获取客服页面链接
This commit is contained in:
parent
cb6b85f727
commit
a6cc33fcc4
@ -212,3 +212,10 @@ func (c *Client) GetPaySwitchUser(req *GetPaySwitchUserReq) (resp *GetPaySwitchU
|
|||||||
err = c.DoAction(req, resp)
|
err = c.DoAction(req, resp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetKfUrl 获取客服页面链接(纯透传接口,业务参数由调用方准备)
|
||||||
|
func (c *Client) GetKfUrl(req *GetKfUrlReq) (resp *GetKfUrlResp, err error) {
|
||||||
|
resp = CreateGetKfUrlResp()
|
||||||
|
err = c.DoAction(req, resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
57
services/game/kf.go
Normal file
57
services/game/kf.go
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
|
||||||
|
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetKfUrlReq 获取客服页面链接请求
|
||||||
|
//
|
||||||
|
// 该接口为纯透传:game.gaore.com 只负责补 timestamp、算 sign、拼 URL,
|
||||||
|
// 业务参数(根游戏 ID、uid 等)由调用方自行准备。
|
||||||
|
//
|
||||||
|
// 字段类型说明:除必填且恒非零的 GameId 外,其余字段一律用 string。
|
||||||
|
// 原因是 addParam 仅在 len(value) > 0 时下发参数,string 空值会被自动跳过;
|
||||||
|
// 若用 int64,零值会被格式化成 "0" 照样下发,既产生 role_id=0 之类噪声,
|
||||||
|
// 也会让游客场景错误地带上 uid=0。
|
||||||
|
type GetKfUrlReq struct {
|
||||||
|
*requests.JsonRequest
|
||||||
|
GameId int64 `position:"Json" field:"game_id"` // 根游戏 ID,必填
|
||||||
|
Uid string `position:"Json" field:"uid"` // 贪玩账号 uid;游客留空,不下传
|
||||||
|
UserName string `position:"Json" field:"username"` // 贪玩账号名
|
||||||
|
MainGameId string `position:"Json" field:"main_game_id"` // 主包游戏 ID
|
||||||
|
SubGameId string `position:"Json" field:"sub_game_id"` // 子包游戏 ID
|
||||||
|
ServerId string `position:"Json" field:"server_id"` // 区服 ID
|
||||||
|
ServerName string `position:"Json" field:"server_name"` // 区服名称
|
||||||
|
RoleId string `position:"Json" field:"role_id"` // 角色 ID
|
||||||
|
RoleName string `position:"Json" field:"role_name"` // 角色名称
|
||||||
|
From string `position:"Json" field:"from"` // 来源:pc / h5 / ios / android / mini_program
|
||||||
|
Navbar string `position:"Json" field:"navbar"` // 传 "1" 显示返回按钮,默认不显示
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetKfUrlRespData 客服链接,有效期 12 小时,调用方不得缓存
|
||||||
|
type GetKfUrlRespData struct {
|
||||||
|
KfUrl string `json:"kf_url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetKfUrlResp struct {
|
||||||
|
*responses.BaseResponse
|
||||||
|
Code int `json:"code"`
|
||||||
|
Msg string `json:"msg"`
|
||||||
|
Data GetKfUrlRespData `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateGetKfUrlReq() *GetKfUrlReq {
|
||||||
|
req := &GetKfUrlReq{
|
||||||
|
JsonRequest: &requests.JsonRequest{},
|
||||||
|
}
|
||||||
|
req.InitWithApiInfo(HOST, VERSION, "/api/game/getKfUrl")
|
||||||
|
req.Method = requests.POST
|
||||||
|
return req
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateGetKfUrlResp() *GetKfUrlResp {
|
||||||
|
return &GetKfUrlResp{
|
||||||
|
BaseResponse: &responses.BaseResponse{},
|
||||||
|
}
|
||||||
|
}
|
||||||
59
services/game/kf_test.go
Normal file
59
services/game/kf_test.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package game
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetKfUrl(t *testing.T) {
|
||||||
|
client, err := NewClient()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewClient err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
req := CreateGetKfUrlReq()
|
||||||
|
req.GameId = 10001
|
||||||
|
req.Uid = "166146"
|
||||||
|
|
||||||
|
resp, err := client.GetKfUrl(req)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("GetKfUrl err: %v", err)
|
||||||
|
}
|
||||||
|
if resp.Code != 1 {
|
||||||
|
t.Fatalf("expect code 1, got %d, msg: %s", resp.Code, resp.Msg)
|
||||||
|
}
|
||||||
|
if !strings.Contains(resp.Data.KfUrl, "game_id=10001") {
|
||||||
|
t.Fatalf("kf_url 缺少 game_id: %s", resp.Data.KfUrl)
|
||||||
|
}
|
||||||
|
if !strings.Contains(resp.Data.KfUrl, "uid=166146") {
|
||||||
|
t.Fatalf("kf_url 缺少 uid: %s", resp.Data.KfUrl)
|
||||||
|
}
|
||||||
|
if !strings.Contains(resp.Data.KfUrl, "sign=") {
|
||||||
|
t.Fatalf("kf_url 缺少 sign: %s", resp.Data.KfUrl)
|
||||||
|
}
|
||||||
|
fmt.Println(resp.Code, resp.Msg, resp.Data.KfUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestGetKfUrlGuest 游客场景:不设 Uid,链接中不应出现 uid
|
||||||
|
func TestGetKfUrlGuest(t *testing.T) {
|
||||||
|
client, err := NewClient()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewClient err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
req := CreateGetKfUrlReq()
|
||||||
|
req.GameId = 10003
|
||||||
|
|
||||||
|
resp, err := client.GetKfUrl(req)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("GetKfUrl err: %v", err)
|
||||||
|
}
|
||||||
|
if resp.Code != 1 {
|
||||||
|
t.Fatalf("expect code 1, got %d, msg: %s", resp.Code, resp.Msg)
|
||||||
|
}
|
||||||
|
if strings.Contains(resp.Data.KfUrl, "uid=") {
|
||||||
|
t.Fatalf("游客链接不应带 uid: %s", resp.Data.KfUrl)
|
||||||
|
}
|
||||||
|
fmt.Println(resp.Code, resp.Msg, resp.Data.KfUrl)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user