actor_account.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package account
  2. import (
  3. cfacade "github.com/mhaya/facade"
  4. "github.com/mhaya/game/game_cluster/internal/code"
  5. "github.com/mhaya/game/game_cluster/internal/event"
  6. "github.com/mhaya/game/game_cluster/internal/mdb/models"
  7. "github.com/mhaya/game/game_cluster/internal/param"
  8. "github.com/mhaya/game/game_cluster/nodes/game/module/online"
  9. clog "github.com/mhaya/logger"
  10. cactor "github.com/mhaya/net/actor"
  11. "strings"
  12. )
  13. type (
  14. ActorAccount struct {
  15. cactor.Base
  16. account models.Account
  17. }
  18. )
  19. func (p *ActorAccount) AliasID() string {
  20. return "account"
  21. }
  22. // OnInit center为后端节点,不直接与客户端通信,所以了一些remote函数,供RPC调用
  23. func (p *ActorAccount) OnInit() {
  24. p.Remote().Register("registerAccount", p.registerOrLoinAccount)
  25. p.Event().Register(event.PlayerDailyDataKey, p.onLoginEvent)
  26. }
  27. // onLoginEvent 玩家登陆事件处理
  28. func (p *ActorAccount) onLoginEvent(e cfacade.IEventData) {
  29. evt, ok := e.(*event.PlayerLogin)
  30. if ok == false {
  31. return
  32. }
  33. clog.Infof("[PlayerLoginEvent] [playerId = %v,openid = %v,TargetPath=%v,, onlineCount = %v]",
  34. evt.PlayerId,
  35. evt.OpenID,
  36. evt.TargetPath,
  37. online.Count(),
  38. )
  39. }
  40. // registerDevAccount 注册开发者帐号
  41. func (p *ActorAccount) registerOrLoinAccount(req *param.LoginReq) (*param.LoginResp, int32) {
  42. if strings.TrimSpace(req.OpenID) == "" || strings.TrimSpace(req.IP) == "" || strings.TrimSpace(req.Platform) == "" || strings.TrimSpace(req.Channel) == "" {
  43. return nil, code.Error
  44. }
  45. account, err := p.account.AccountRegisterOrLogin(req)
  46. if err > 0 {
  47. return nil, code.Error
  48. }
  49. return &param.LoginResp{
  50. UserName: account.UserName,
  51. OpenId: account.OpenId,
  52. TargetPath: cfacade.NewChildPath(10001, "player", account.UserName),
  53. }, code.OK
  54. }