123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package sdk
- import (
- mhayaGin "github.com/mhaya/components/gin"
- cerror "github.com/mhaya/error"
- cstring "github.com/mhaya/extend/string"
- cfacade "github.com/mhaya/facade"
- "github.com/mhaya/game/game_cluster/internal/code"
- "github.com/mhaya/game/game_cluster/internal/data"
- "github.com/mhaya/game/game_cluster/internal/mdb/models"
- "github.com/mhaya/game/game_cluster/internal/param"
- sessionKey "github.com/mhaya/game/game_cluster/internal/session_key"
- "github.com/mhaya/game/game_cluster/internal/token"
- clog "github.com/mhaya/logger"
- )
- type quickSdk struct {
- app cfacade.IApplication
- }
- func (quickSdk) SdkId() int {
- return QuickSDK
- }
- func (p quickSdk) Login(config *data.SdkConfigRow, params Params, callback Callback) {
- openid, found := params.GetString("openid")
- if found == false || cstring.IsBlank(openid) {
- err := cerror.Error("openid is nil")
- callback(code.LoginError, nil, err)
- return
- }
- ip, found := params.GetString("ip")
- if found == false || cstring.IsBlank(ip) {
- err := cerror.Error("ip is nil")
- callback(code.LoginError, nil, err)
- return
- }
- plt, found := params.GetString("platform")
- if found == false || cstring.IsBlank(plt) {
- err := cerror.Error("platform is nil")
- callback(code.LoginError, nil, err)
- return
- }
- channel, found := params.GetString("channel")
- if found == false || cstring.IsBlank(channel) {
- err := cerror.Error("channel is nil")
- callback(code.LoginError, nil, err)
- return
- }
- sign, _ := params.GetString("sign")
- req := ¶m.LoginReq{
- OpenID: openid,
- IP: ip,
- Platform: plt,
- Channel: channel,
- Sign: sign,
- }
- acc := &models.Account{}
- account, err := acc.AccountRegisterOrLogin(req)
- if err > 0 {
- callback(code.LoginError, nil)
- return
- }
- nodeId, ok := SetNode(p.app)
- if code.IsFail(ok) {
- clog.Warnf("[RegisterAccount] openID = %s,nodeID=%v, errCode = %v", openid, nodeId, err)
- callback(code.LoginError, nil)
- return
- }
- targetPath := cfacade.NewChildPath(nodeId, "player"+nodeId, account.UserName)
- callback(code.OK, map[string]string{
- sessionKey.PlayerID: account.UserName, //返回 quick的uid做为 open id
- sessionKey.OpenID: openid,
- sessionKey.TargetPath: targetPath,
- })
- }
- func (p quickSdk) Reconnect(token *token.Token) (int32, *token.Token) {
- list := p.app.Discovery().ListByType("game")
- targetPath, err := cfacade.ToActorPath(token.TargetPath)
- if err != nil {
- clog.Warnf("[Reconnect] Target path error. targetPath = %v, error = %v", token.TargetPath, err)
- return code.AccountAuthFail, nil
- }
- isNew := false
- for _, v := range list {
- if v.GetNodeId() == targetPath.NodeID {
- isNew = true
- break
- }
- }
- if !isNew {
- nodeId, ok := SetNode(p.app)
- if code.IsFail(ok) {
- clog.Warnf("[RegisterAccount] openID = %s,nodeID=%v, errCode = %v", token.OpenID, nodeId, err)
- return code.AccountAuthFail, nil
- }
- path := cfacade.NewChildPath(nodeId, "player"+nodeId, token.PlayerID)
- token.TargetPath = path
- }
- return code.OK, token
- }
- func (p quickSdk) PayCallback(config *data.SdkConfigRow, c *mhayaGin.Context) {
- // TODO 这里实现quick sdk 支付回调的逻辑
- c.RenderHTML("FAIL")
- }
|