6
0

Compare commits

..

5 Commits

Author SHA1 Message Date
huangqz
e06a5867a7 Merge branch 'master' of https://golib.gaore.com/GaoreGo/gaore-common-sdk-go 2025-09-09 20:06:10 +08:00
huangqz
23d59fad11 新增userlive 新增、删除封禁规则缓存接口 2025-09-09 20:04:44 +08:00
89250bd328 投诉工单相关接口新增参数 2025-09-09 19:05:26 +08:00
huangqz
c8e5c19dc7 新增asdk踢人接口 2025-09-08 14:13:09 +08:00
huangqz
5d0ba49e7e 新增封禁接口 2025-09-05 19:20:27 +08:00
8 changed files with 438 additions and 0 deletions

47
services/asdk/client.go Normal file
View File

@ -0,0 +1,47 @@
package asdk
import (
"fmt"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/utils"
"time"
)
const (
VERSION = "2020-11-16"
)
var HOST = requests.Host{
Default: "asdk",
}
type Client struct {
sdk.Client
}
func NewClient() (client *Client, err error) {
client = new(Client)
err = client.Init()
return
}
// GenerateInnerApiSign
// 生成内部接口签名
func GenerateInnerApiSign(ts int64) (int64, string) {
const InnerSignSecret = "sYbfhozSu^@K8~y*"
if ts == 0 {
ts = time.Now().Unix()
}
return ts, utils.Md5(fmt.Sprintf("%d%s", ts, InnerSignSecret))
}
// CreateKickUserReq 踢人
func (c *Client) CreateKickUserReq(req *KickUserReq) (resp *KickUserResp, err error) {
resp = CreateKickUserResp()
err = c.DoAction(req, resp)
if err != nil {
return
}
return
}

View File

@ -0,0 +1,26 @@
package asdk
import (
"fmt"
"testing"
)
// 获取用户累计付费
func TestKickUser(t *testing.T) {
client, err := NewClient()
if err != nil {
panic(err)
}
ts, sign := GenerateInnerApiSign(0)
req := CreateKickUserReq(KickUserParam{
Ts: ts,
Sign: sign,
UserName: "aq36604627",
})
resp, err := client.CreateKickUserReq(req)
if err != nil {
panic(err)
}
fmt.Println(resp.Code, resp.Msg, resp.Data)
}

View File

@ -0,0 +1,45 @@
package asdk
import (
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
"strconv"
)
type KickUserReq struct {
*requests.RpcRequest
}
type KickUserResp struct {
*responses.BaseResponse
Code int `json:"code"`
Msg string `json:"msg"`
Data struct{} `json:"data"`
TraceId string `json:"trace_id"`
}
type KickUserParam struct {
Ts int64 `json:"ts"`
Sign string `json:"sign"`
UserName string `json:"user_name"`
}
func CreateKickUserReq(data KickUserParam) *KickUserReq {
req := &KickUserReq{
&requests.RpcRequest{},
}
req.InitWithApiInfo(HOST, VERSION, "/api/kick")
req.Method = requests.GET
req.QueryParams = map[string]string{
"ts": strconv.FormatInt(data.Ts, 10),
"sign": data.Sign,
"user_name": data.UserName,
}
return req
}
func CreateKickUserResp() *KickUserResp {
return &KickUserResp{
BaseResponse: &responses.BaseResponse{},
}
}

View File

@ -10,6 +10,7 @@ type ComplaintCompleteRequest struct {
MchId string `position:"Body" field:"mch_id" default:"" `
ComplaintId string `position:"Body" field:"complaint_id" default:"" `
ExtData string `position:"Body" field:"ext_data" default:"" `
PayType int `position:"Body" field:"pay_type" default:"" `
}
type ComplaintCompleteResponse struct {

View File

@ -10,6 +10,7 @@ type ComplaintUploadRequest struct {
MchId string `position:"Body" field:"mch_id" default:"" `
ImageUrl string `position:"Body" field:"image_url" default:"" `
ComplaintId string `position:"Body" field:"complaint_id" default:" " `
PayType int `position:"Body" field:"pay_type" default:"" `
}
type ComplaintUploadResponse struct {

View File

@ -0,0 +1,55 @@
package userlive
import (
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
)
const (
VERSION = "2020-11-16"
)
var HOST = requests.Host{
Default: "userlive",
}
type Client struct {
sdk.Client
}
func NewClient() (client *Client, err error) {
client = new(Client)
err = client.Init()
return
}
// CreateBanReq 封禁
func (c *Client) CreateBanReq(req *BanReq) (resp *BanResp, err error) {
resp = CreateBanResp()
err = c.DoAction(req, resp)
if err != nil {
return
}
return
}
// CreateAddBanRuleCacheReq 添加封禁规则缓存
func (c *Client) CreateAddBanRuleCacheReq(req *AddBanRuleCacheReq) (resp *AddBanRuleCacheResp, err error) {
resp = CreateAddBanRuleCacheResp()
err = c.DoAction(req, resp)
if err != nil {
return
}
return
}
// CreateRemoveBanRuleCacheReq 删除封禁规则缓存
func (c *Client) CreateRemoveBanRuleCacheReq(req *RemoveBanRuleCacheReq) (resp *RemoveBanRuleCacheResp, err error) {
resp = CreateRemoveBanRuleCacheResp()
err = c.DoAction(req, resp)
if err != nil {
return
}
return
}

View File

@ -0,0 +1,104 @@
package userlive
import (
"fmt"
"testing"
"time"
)
// 踢人
func TestBan(t *testing.T) {
client, err := NewClient()
if err != nil {
panic(err)
}
req := CreateBanReq(BanReqParam{
ActionTime: time.Now().Unix(),
TriggerType: triggerTypeLogin,
Ip: "127.0.0.1",
GameId: 8654,
UserName: "aq36604627",
Uid: 632308087,
ServerId: 123,
RoleId: "123",
BundleId: "asdfas",
GameName: "fasdf",
GameVersion: "fasdf",
SdkVersion: "fasdf",
Os: "fasd",
OsVersion: "faf",
InApp: "fasdf",
Ua: "fasdfas",
NetworkType: "fasdfa",
IsVirtual: "-1",
Cpu: "cpu",
DeviceModel: "dfasdf",
Baseband: "fasdfa",
Resolution: "fasdfa",
Battery: "fasdf",
LongId: "fasdf",
OriginImei: "fasdf",
Imei: "fasdf",
OriginOaid: "fasdf",
Oaid: "fasdf",
AndroidId: "fasdf",
Idfa: "fsdf",
Idfv: "fasdf",
DeviceId: "fasdf",
})
resp, err := client.CreateBanReq(req)
if err != nil {
panic(err)
}
fmt.Println(resp.Code, resp.Msg, resp.Data)
}
// 添加封禁规则
func TestAddBanRuleCache(t *testing.T) {
client, err := NewClient()
if err != nil {
panic(err)
}
req := CreateAddBanRuleCacheReq(RuleInfo{
Id: 21,
Phone: "13247173568",
UserName: "gr24616919",
IdCard: "",
DeviceId: "device_id1",
LongId: "long_id1",
IsVirtual: 0,
EndTime: "2029-01-01",
})
resp, err := client.CreateAddBanRuleCacheReq(req)
if err != nil {
panic(err)
}
fmt.Println(resp.Code, resp.Msg, resp.Data)
}
// 删除封禁规则
func TestRemoveBanRuleCache(t *testing.T) {
client, err := NewClient()
if err != nil {
panic(err)
}
infos := []RuleInfo{{
Id: 21,
Phone: "13247173568",
UserName: "gr24616919",
IdCard: "",
DeviceId: "device_id1",
LongId: "long_id1",
IsVirtual: 0,
EndTime: "2029-01-01",
}}
req := CreateRemoveBanRuleCacheReq(RemoveBanRuleCacheReqParam{Rules: infos})
resp, err := client.CreateRemoveBanRuleCacheReq(req)
if err != nil {
panic(err)
}
fmt.Println(resp.Code, resp.Msg, resp.Data)
}

View File

@ -0,0 +1,159 @@
package userlive
import (
"encoding/json"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
)
const (
triggerTypeHeartbeat = "heartbeat" // 心跳上报触发
triggerTypeLogin = "login" // 用户登录、注册
)
// BanReq
// 上报用户设备信息,判断是否要踢用户下线
type BanReq struct {
*requests.JsonRequest
}
type BanResp struct {
*responses.BaseResponse
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
Ban bool `json:"ban"` // 是否要禁止
BanRuleId int64 `json:"ban_rule_id"` // 命中的封禁规则id
} `json:"data"`
}
type BanReqParam struct {
ActionTime int64 `json:"action_time" form:"action_time"` // 上报时间
TriggerType string `json:"trigger_type" form:"trigger_type"` // 触发类型
Ip string `json:"ip" form:"ip"` // ip
GameId int64 `json:"game_id" form:"game_id"` // 游戏id
UserName string `json:"user_name" form:"user_name"` // 用户名
Uid int64 `json:"uid" form:"uid"` // 用户id
ServerId int64 `json:"server_id" form:"server_id"` // 区服id
RoleId string `json:"role_id" form:"role_id"` // 角色id
BundleId string `json:"bundle_id" form:"bundle_id"` // ios 包名
GameName string `json:"game_name" from:"game_name"` // 应用名
GameVersion string `json:"game_version" from:"game_version"` // 游戏版本
SdkVersion string `json:"sdk_version" from:"sdk_version"` // sdk版本
Os string `json:"os" from:"os"` // 系统
OsVersion string `json:"os_version" from:"os_version"` // 系统版本
InApp string `json:"in_app" from:"in_app"` // 壳包系统,壳包传 如ios、android
Ua string `json:"ua" from:"ua"` // ua
NetworkType string `json:"network_type" from:"network_type"` // 网络类型
IsVirtual string `json:"is_virtual" from:"is_virtual"` // 是否是模拟器字符串01空字符串表示未知
Cpu string `json:"cpu" from:"cpu"` // cpu型号
DeviceModel string `json:"device_model" from:"device_model"` // 设备型号
Baseband string `json:"baseband" from:"baseband"` // 基带信息
Resolution string `json:"resolution" from:"resolution"` // 分辨率
Battery string `json:"battery" from:"battery"` // 电量
LongId string `json:"long_id" form:"long_id"` // 逻辑设备号
OriginImei string `json:"origin_imei" form:"origin_imei"` // imei原值
Imei string `json:"imei" form:"imei"` // 老sdk采集的imei
OriginOaid string `json:"origin_oaid" form:"origin_oaid"` // oaid原值
Oaid string `json:"oaid" form:"oaid"` // 老sdk采集的oaid
AndroidId string `json:"android_id" form:"android_id"` // 安卓id
Idfa string `json:"idfa" form:"idfa"` // idfa
Idfv string `json:"idfv" form:"idfv"` // idfv
DeviceId string `json:"device_id" form:"device_id"` // device_id
}
func CreateBanReq(data BanReqParam) *BanReq {
req := &BanReq{
&requests.JsonRequest{},
}
req.InitWithApiInfo(HOST, VERSION, "/api/user_ban/ban")
req.Method = requests.POST
marshal, _ := json.Marshal(data)
_ = json.Unmarshal(marshal, &req.JsonParams)
return req
}
// CreateBanResp 创建同步开服数据响应
func CreateBanResp() *BanResp {
return &BanResp{
BaseResponse: &responses.BaseResponse{},
}
}
// AddBanRuleCacheReq
// 添加封禁规则缓存
type AddBanRuleCacheReq struct {
*requests.JsonRequest
}
type AddBanRuleCacheResp struct {
*responses.BaseResponse
Code int `json:"code"`
Msg string `json:"msg"`
Data struct{} `json:"data"`
}
type RuleInfo struct {
Id int64 `json:"id"`
Phone string `json:"phone"`
UserName string `json:"user_name"`
IdCard string `json:"id_card"`
DeviceId string `json:"device_id"`
LongId string `json:"long_id"`
IsVirtual int64 `json:"is_virtual"`
EndTime string `json:"end_time"`
}
func CreateAddBanRuleCacheReq(data RuleInfo) *AddBanRuleCacheReq {
req := &AddBanRuleCacheReq{
&requests.JsonRequest{},
}
req.InitWithApiInfo(HOST, VERSION, "/api/user_ban/add_cache")
req.Method = requests.POST
marshal, _ := json.Marshal(data)
_ = json.Unmarshal(marshal, &req.JsonParams)
return req
}
func CreateAddBanRuleCacheResp() *AddBanRuleCacheResp {
return &AddBanRuleCacheResp{
BaseResponse: &responses.BaseResponse{},
}
}
// RemoveBanRuleCacheReq
// 删除封禁规则缓存
type RemoveBanRuleCacheReq struct {
*requests.JsonRequest
}
type RemoveBanRuleCacheReqParam struct {
Rules []RuleInfo `json:"rules"`
}
type RemoveBanRuleCacheResp struct {
*responses.BaseResponse
Code int `json:"code"`
Msg string `json:"msg"`
Data struct{} `json:"data"`
}
func CreateRemoveBanRuleCacheReq(param RemoveBanRuleCacheReqParam) *RemoveBanRuleCacheReq {
req := &RemoveBanRuleCacheReq{
&requests.JsonRequest{},
}
req.InitWithApiInfo(HOST, VERSION, "/api/user_ban/remove_cache")
req.Method = requests.POST
marshal, _ := json.Marshal(param)
_ = json.Unmarshal(marshal, &req.JsonParams)
return req
}
func CreateRemoveBanRuleCacheResp() *RemoveBanRuleCacheResp {
return &RemoveBanRuleCacheResp{
BaseResponse: &responses.BaseResponse{},
}
}