api.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package nxd
  2. import (
  3. "fmt"
  4. "github.com/sirupsen/logrus"
  5. "gogs.daxia.dev/huanan/pkg.daxia.dev/event2"
  6. "google.golang.org/protobuf/proto"
  7. "google.golang.org/protobuf/reflect/protoreflect"
  8. "google.golang.org/protobuf/types/known/anypb"
  9. "nn.daxia.dev/gameproto"
  10. "nn.daxia.dev/model"
  11. "nn.daxia.dev/online"
  12. )
  13. //提供基础接口给业务使用,相当于业务模块的sdk
  14. func SendMsgToUser(recvUserID uint32, msg online.Msg) {
  15. evnetUser := model.EventNotifyMsg + fmt.Sprintf("user_%d", recvUserID)
  16. event2.MustFire(evnetUser, online.EventMsg{
  17. Msg: msg,
  18. })
  19. }
  20. func SendMsgToUserList(recvUserIDList []int32, notifyType gameproto.NotifyTypeEnum, dataSend protoreflect.ProtoMessage) {
  21. data, err := proto.Marshal(dataSend)
  22. if err != nil {
  23. logrus.Error(err)
  24. return
  25. }
  26. msg := online.Msg{
  27. NotifyType: uint32(notifyType),
  28. Data: string(data),
  29. }
  30. for _, recvUserID := range recvUserIDList {
  31. evnetUser := model.EventNotifyMsg + fmt.Sprintf("user_%d", recvUserID)
  32. event2.MustFire(evnetUser, online.EventMsg{
  33. Msg: msg,
  34. })
  35. }
  36. }
  37. func SendMsgToAllUser(msg online.Msg) {
  38. userIDList := online.GetAllUser()
  39. for _, userID := range userIDList {
  40. SendMsgToUser(userID, msg)
  41. }
  42. }
  43. func SendMsgToAllUserK(notifyType gameproto.NotifyTypeEnum, dataSend protoreflect.ProtoMessage) {
  44. data, err := proto.Marshal(dataSend)
  45. if err != nil {
  46. logrus.Error(err)
  47. return
  48. }
  49. userIDList := online.GetAllUser()
  50. for _, recvUserID := range userIDList {
  51. SendMsgToUser(recvUserID, online.Msg{
  52. NotifyType: uint32(notifyType),
  53. Data: string(data),
  54. })
  55. }
  56. }
  57. func SendMsgToUserK(recvUserID uint32, notifyType gameproto.NotifyTypeEnum, dataSend protoreflect.ProtoMessage) {
  58. data, err := proto.Marshal(dataSend)
  59. if err != nil {
  60. logrus.Error(err)
  61. return
  62. }
  63. SendMsgToUser(recvUserID, online.Msg{
  64. NotifyType: uint32(notifyType),
  65. Data: string(data),
  66. })
  67. }
  68. func SuccessResponse(once string, recvUserID uint32, dataSend protoreflect.ProtoMessage) {
  69. var err error
  70. var any *anypb.Any
  71. if dataSend != nil {
  72. any, err = anypb.New(dataSend)
  73. if err != nil {
  74. logrus.Error(err)
  75. return
  76. }
  77. }
  78. data, err := proto.Marshal(&gameproto.MsgResp{
  79. Once: once,
  80. Status: gameproto.RespStatus_RespStatusSucc,
  81. Msg: "",
  82. Data: any,
  83. })
  84. if err != nil {
  85. logrus.Error(err)
  86. return
  87. }
  88. SendMsgToUser(recvUserID, online.Msg{
  89. NotifyType: uint32(gameproto.NotifyTypeEnum_NotifyTypeMsgResp),
  90. Data: string(data),
  91. })
  92. }
  93. func FailedResponse(once string, recvUserID uint32, msg string) {
  94. var err error
  95. data, err := proto.Marshal(&gameproto.MsgResp{
  96. Once: once,
  97. Status: gameproto.RespStatus_RespStatusFailed,
  98. Msg: msg,
  99. Data: nil,
  100. })
  101. if err != nil {
  102. logrus.Error(err)
  103. return
  104. }
  105. SendMsgToUser(recvUserID, online.Msg{
  106. NotifyType: uint32(gameproto.NotifyTypeEnum_NotifyTypeMsgResp),
  107. Data: string(data),
  108. })
  109. }