实现游戏人生背包url 返回

This commit is contained in:
2025-06-23 17:53:35 +08:00
parent 7d167dcf52
commit 2c59949e87
8 changed files with 59 additions and 6 deletions

View File

@ -21,4 +21,5 @@ type IUserV1 interface {
GetUnboundUrl(ctx context.Context, req *v1.GetUnboundUrlReq) (res *v1.GetUnboundUrlRes, err error)
DelUser(ctx context.Context, req *v1.DelUserReq) (res *v1.DelUserRes, err error)
GetUserGameRoleList(ctx context.Context, req *v1.GetUserGameRoleListReq) (res *v1.GetUserGameRoleListRes, err error)
GetGamelifePackageUrl(ctx context.Context, req *v1.GetGamelifePackageUrlReq) (res *v1.GetGamelifePackageUrlRes, err error)
}

View File

@ -110,3 +110,14 @@ type GetUserGameRoleListReq struct {
type GetUserGameRoleListRes struct {
List interface{} `json:"list"`
}
type GetGamelifePackageUrlReq struct {
g.Meta `path:"/user/packageUrl" method:"get" tags:"User" summary:"获取GameLife游戏包的url"`
PopenId string `json:"popenId" v:"required#popenId不能为空" dc:"用户详情接口返回的 wxPopenId 或者是 qqPopenId"`
BindType int `json:"bindType" v:"required|in:1,2#请选择绑定方式只能为1或2" dc:"绑定方式默认值11: qq; 2: wx" default:"1"`
GameCode string `json:"gameCode" v:"required#请选择游戏" dc:"游戏名称"`
GameId int `json:"gameId" v:"required#gameId不能为空" dc:"游戏id"`
}
type GetGamelifePackageUrlRes struct {
Url string `json:"url"`
}

View File

@ -0,0 +1,17 @@
package user
import (
"context"
"server/internal/model"
"server/internal/service"
"server/api/user/v1"
)
func (c *ControllerV1) GetGamelifePackageUrl(ctx context.Context, req *v1.GetGamelifePackageUrlReq) (res *v1.GetGamelifePackageUrlRes, err error) {
out, err := service.User().GamelifePackUrl(ctx, &model.GamelifePackUrlIn{BindType: req.BindType, PopenId: req.PopenId, GameId: req.GameId, GameCode: req.GameCode})
if err != nil {
return nil, err
}
return &v1.GetGamelifePackageUrlRes{Url: out.Url}, nil
}

View File

@ -4,6 +4,8 @@ import (
"context"
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/grand"
"server/internal/consts"
"server/internal/dao"
"server/internal/model"
@ -15,9 +17,6 @@ import (
"server/utility/encrypt"
"server/utility/gamelife"
"server/utility/jwt"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/grand"
)
type sUser struct{}
@ -313,3 +312,12 @@ func (s *sUser) GetUserGameRole(ctx context.Context, in *model.GetUserGameRoleIn
RoleList: *result,
}, nil
}
func (s *sUser) GamelifePackUrl(ctx context.Context, in *model.GamelifePackUrlIn) (out *model.GamelifePackUrlOut, err error) {
url, err := gamelife.GetGamelifeClient(ctx).GetGamelifePackageUrl(ctx, in.PopenId, in.GameCode, in.GameId, in.BindType)
if err != nil {
return nil, ecode.Fail.Sub("获取绑定链接失败")
}
return &model.GamelifePackUrlOut{
Url: url,
}, nil
}

View File

@ -195,3 +195,12 @@ type GetUserGameRoleIn struct {
type GetUserGameRoleOut struct {
RoleList []UserRole
}
type GamelifePackUrlIn struct {
PopenId string
GameId int
GameCode string
BindType int
}
type GamelifePackUrlOut struct {
Url string
}

View File

@ -24,6 +24,7 @@ type (
BoundInfo(ctx context.Context, in *model.UserBoundInfoIn) (out *model.UserBoundInfoOut, err error)
DelUser(ctx context.Context, in *model.DelUserIn) (out *model.DeleteOut, err error)
GetUserGameRole(ctx context.Context, in *model.GetUserGameRoleIn) (out *model.GetUserGameRoleOut, err error)
GamelifePackUrl(ctx context.Context, in *model.GamelifePackUrlIn) (out *model.GamelifePackUrlOut, err error)
}
)

View File

@ -73,7 +73,7 @@ var URLMaps = struct {
},
Package: map[string]string{
"test": "https://test.igame.qq.com/tip/ingame-page/feature/add-game-life/igame-game-life-web/#/index/goods",
"prod": "https://igame.qq.com/tip/ingame-page/feature/add-game-life/igame-game-life-web/#/index/goods",
"prod": "https://igame.qq.com/tip/ingame-page/igame-game-life-web/index.html#/index/goods",
},
}
@ -195,7 +195,7 @@ func (s *gamelifeClient) GetUrl(ctx context.Context, popenID, appName, nickname
}
return fmt.Sprintf("%s?%s", rootURL, params), nil
}
func (s *gamelifeClient) GetGamelifePackageUrl(ctx context.Context, popenID, appName string, bindType int) (string, error) {
func (s *gamelifeClient) GetGamelifePackageUrl(ctx context.Context, popenID, gameCode string, gameId, bindType int) (string, error) {
// 从配置中获取 package URL 前缀
packageURL := s.packageURLMap[s.config.Mode]
@ -204,10 +204,15 @@ func (s *gamelifeClient) GetGamelifePackageUrl(ctx context.Context, popenID, app
if err != nil {
return "", err
}
params, err := s.buildQueryParams(ctx, popenID, cache, appName, "", bindType, true)
params, err := s.buildQueryParams(ctx, popenID, cache, gameCode, "", bindType, true)
if err != nil {
return "", err
}
if gameId != 0 {
params = fmt.Sprintf("%s&gid=%d", params, gameId)
}
return fmt.Sprintf("%s?%s", packageURL, params), nil
}

View File

@ -70,6 +70,7 @@ func init() {
enforcer.AddPolicy("user", "/x/user/boundUrl", "GET", "获取用户绑定的URL")
enforcer.AddPolicy("user", "/x/user/unBoundUrl", "GET", "获取用户取消绑定的URL")
enforcer.AddPolicy("user", "/x/user/gameRoleList", "GET", "查询用户游戏角色列表")
enforcer.AddPolicy("user", "/x/user/packageUrl", "GET", "获取用户游戏人生背包url")
// 反馈信息
enforcer.AddPolicy("user", "/x/feedback", "GET", "获取反馈信息列表")