package account import ( cfacade "github.com/mhaya/facade" "github.com/mhaya/game/game_cluster/internal/code" "github.com/mhaya/game/game_cluster/internal/event" "github.com/mhaya/game/game_cluster/internal/mdb/models" "github.com/mhaya/game/game_cluster/internal/param" "github.com/mhaya/game/game_cluster/nodes/game/module/online" clog "github.com/mhaya/logger" cactor "github.com/mhaya/net/actor" "strings" ) type ( ActorAccount struct { cactor.Base account models.Account } ) func (p *ActorAccount) AliasID() string { return "account" } // OnInit center为后端节点,不直接与客户端通信,所以了一些remote函数,供RPC调用 func (p *ActorAccount) OnInit() { p.Remote().Register("registerAccount", p.registerOrLoinAccount) p.Event().Register(event.PlayerDailyDataKey, p.onLoginEvent) } // onLoginEvent 玩家登陆事件处理 func (p *ActorAccount) onLoginEvent(e cfacade.IEventData) { evt, ok := e.(*event.PlayerLogin) if ok == false { return } clog.Infof("[PlayerLoginEvent] [playerId = %v,openid = %v,TargetPath=%v,, onlineCount = %v]", evt.PlayerId, evt.OpenID, evt.TargetPath, online.Count(), ) } // registerDevAccount 注册开发者帐号 func (p *ActorAccount) registerOrLoinAccount(req *param.LoginReq) (*param.LoginResp, int32) { if strings.TrimSpace(req.OpenID) == "" || strings.TrimSpace(req.IP) == "" || strings.TrimSpace(req.Platform) == "" || strings.TrimSpace(req.Channel) == "" { return nil, code.Error } account, err := p.account.AccountRegisterOrLogin(req) if err > 0 { return nil, code.Error } return ¶m.LoginResp{ UserName: account.UserName, OpenId: account.OpenId, TargetPath: cfacade.NewChildPath(10001, "player", account.UserName), }, code.OK }