chat.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package actorRemote
  2. import (
  3. cherryApp "f1-game/internal/cherry_app"
  4. "f1-game/internal/enum"
  5. nameActor "f1-game/internal/name/actor"
  6. nameRemote "f1-game/internal/name/remote"
  7. "f1-game/internal/pb"
  8. cfacade "github.com/cherry-game/cherry/facade"
  9. )
  10. type chat struct {
  11. }
  12. func newChat() *chat {
  13. return &chat{}
  14. }
  15. func (p *chat) Push(chatType enum.ChatType, playerID int64, chatID int64) int32 {
  16. targetPath := p.targetPath(chatType, chatID)
  17. return cherryApp.Call(targetPath, nameRemote.Chat_Push, &pb.I64I64{
  18. Key: playerID,
  19. Value: chatID,
  20. })
  21. }
  22. func (p *chat) Send(req *pb.ChatMsgList) int32 {
  23. targetPath := p.targetPath(enum.ChatType(req.ChatType), req.ChatID)
  24. return cherryApp.Call(targetPath, nameRemote.Chat_Send, req)
  25. }
  26. func (p *chat) Destory(chatType enum.ChatType, chatID int64) int32 {
  27. targetPath := p.targetPath(chatType, chatID)
  28. return cherryApp.Call(targetPath, nameRemote.Chat_Destory, &pb.I64{
  29. Value: chatID,
  30. })
  31. }
  32. // 删除消息,供admin后台使用
  33. func (p *chat) DelMsg(chatType enum.ChatType, chatID int64, msgID int64) int32 {
  34. targetPath := p.targetPath(chatType, chatID)
  35. return cherryApp.Call(targetPath, nameRemote.Chat_DelMsg, &pb.I64I64{
  36. Key: chatID,
  37. Value: msgID,
  38. })
  39. }
  40. func (p *chat) GroupJoin(chatID int64, playerID int64) int32 {
  41. targetPath := p.targetPath(enum.ChatType_Group, chatID)
  42. req := &pb.I64I64{
  43. Key: chatID,
  44. Value: playerID,
  45. }
  46. return cherryApp.CallWait(targetPath, nameRemote.Chat_GroupJoin, req, nil)
  47. }
  48. func (p *chat) GroupPlayerChange(req *pb.ChatGroupPlayerChange) int32 {
  49. targetPath := p.targetPath(enum.ChatType_Group, req.ChatID)
  50. return cherryApp.Call(targetPath, nameRemote.Chat_GroupPlayerChange, req)
  51. }
  52. func (p *chat) GroupQuit(chatID int64, playerID int64) int32 {
  53. targetPath := p.targetPath(enum.ChatType_Group, chatID)
  54. return cherryApp.Call(targetPath, nameRemote.Chat_GroupQuit, &pb.I64I64{
  55. Key: chatID,
  56. Value: playerID,
  57. })
  58. }
  59. func (p *chat) targetPath(chatType enum.ChatType, chatID int64) string {
  60. chatNodeID := chatNodeID(chatID)
  61. actorID := p.getActorID(chatType)
  62. return cfacade.NewPath(chatNodeID, actorID)
  63. }
  64. func (p *chat) getActorID(chatType enum.ChatType) string {
  65. switch chatType {
  66. case enum.ChatType_Game:
  67. return nameActor.Chat_Game
  68. case enum.ChatType_League:
  69. return nameActor.Chat_League
  70. case enum.ChatType_Map:
  71. return nameActor.Chat_Map
  72. case enum.ChatType_Group:
  73. return nameActor.Chat_Group
  74. }
  75. return ""
  76. }