common.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. default:
  58. logrus.Error("非法请求:", reqData)
  59. err = errors.New("非法请求")
  60. }
  61. if err != nil {
  62. logrus.Error(err)
  63. webutils.FailedResponseErr(c, err)
  64. return
  65. }
  66. webutils.SuccessResponse(c, nil)
  67. }
  68. func Test(req api.PerformReq) error {
  69. userModel := req.UserModel
  70. fmt.Println(userModel)
  71. return nil
  72. }
  73. func Connect(req api.PerformReq) error {
  74. userModel := req.UserModel
  75. gameInstance := gameQZ.GetInstance()
  76. err := gameInstance.Connect(int32(userModel.ID))
  77. if err != nil {
  78. logrus.Error(err)
  79. nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
  80. return err
  81. }
  82. nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
  83. return nil
  84. }
  85. func Disconnect(req api.PerformReq) error {
  86. userModel := req.UserModel
  87. gameQZ.UserUnActive(userModel.ID)
  88. return nil
  89. }
  90. func Ping(req api.PerformReq) error {
  91. userModel := req.UserModel
  92. gameQZ.UserActive(userModel.ID)
  93. return nil
  94. }