common.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package common
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "github.com/sirupsen/logrus"
  7. "gogs.daxia.dev/huanan/pkg.daxia.dev/webutils"
  8. gameQZ "nn.daxia.dev/game/qznn"
  9. "nn.daxia.dev/handler/api"
  10. "nn.daxia.dev/handler/qznn"
  11. "nn.daxia.dev/handler/room"
  12. "nn.daxia.dev/nxd"
  13. )
  14. func Dispatch(c *gin.Context) {
  15. var err error
  16. reqData := api.PerformReq{}
  17. if err := c.ShouldBindJSON(&reqData); err != nil {
  18. logrus.Error(err)
  19. webutils.FailedResponseErr(c, err)
  20. return
  21. }
  22. if reqData.Name != "connect" && reqData.Name != "ping" {
  23. userModel := reqData.UserModel
  24. isActive := gameQZ.UserIsOnline(userModel.ID)
  25. if !isActive {
  26. logrus.Error("用户不在线")
  27. webutils.FailedResponse(c, "用户不在线")
  28. return
  29. }
  30. }
  31. logrus.Info("run function:", reqData.Name)
  32. switch reqData.Name {
  33. case "connect":
  34. err = Connect(reqData)
  35. case "disconnect":
  36. err = Disconnect(reqData)
  37. case "ping":
  38. err = Ping(reqData)
  39. case "room/join":
  40. err = room.Join(reqData)
  41. case "room/rnd_join":
  42. err = room.RndJoin(reqData)
  43. case "room/leave":
  44. err = room.Leave(reqData)
  45. case "room/create":
  46. err = room.Create(reqData)
  47. case "qznn/ready":
  48. err = qznn.Ready(reqData)
  49. case "qznn/unready":
  50. err = qznn.UnReady(reqData)
  51. case "qznn/choose_master":
  52. err = qznn.ChooseMaster(reqData)
  53. case "qznn/choose_mul":
  54. err = qznn.ChooseMul(reqData)
  55. case "qznn/open":
  56. err = qznn.Open(reqData)
  57. case "qznn/get_record_list":
  58. err = qznn.GetRecordList(reqData)
  59. case "qznn/get_open_record_list":
  60. err = qznn.GetOpenRecordList(reqData)
  61. default:
  62. logrus.Error("非法请求:", reqData)
  63. err = errors.New("非法请求")
  64. }
  65. if err != nil {
  66. logrus.Error(err)
  67. webutils.FailedResponseErr(c, err)
  68. return
  69. }
  70. webutils.SuccessResponse(c, nil)
  71. }
  72. func Test(req api.PerformReq) error {
  73. userModel := req.UserModel
  74. fmt.Println(userModel)
  75. return nil
  76. }
  77. func Connect(req api.PerformReq) error {
  78. userModel := req.UserModel
  79. gameInstance := gameQZ.GetInstance()
  80. err := gameInstance.Connect(int32(userModel.ID))
  81. if err != nil {
  82. logrus.Error(err)
  83. nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
  84. return err
  85. }
  86. nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
  87. return nil
  88. }
  89. func Disconnect(req api.PerformReq) error {
  90. userModel := req.UserModel
  91. gameQZ.UserUnActive(userModel.ID)
  92. return nil
  93. }
  94. func Ping(req api.PerformReq) error {
  95. userModel := req.UserModel
  96. gameQZ.UserActive(userModel.ID)
  97. return nil
  98. }