server_controller.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package controller
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/data"
  5. nameKey "f1-game/internal/name/key"
  6. msgWeb "f1-game/nodes/web/internal/message"
  7. clog "github.com/cherry-game/cherry/logger"
  8. cgin "github.com/cherry-game/components/gin"
  9. )
  10. type ServerController struct {
  11. cgin.BaseController
  12. }
  13. func (p *ServerController) Init() {
  14. p.GET("/server/list", p.list)
  15. p.GET("/server/list/:pid", p.list)
  16. }
  17. func (p *ServerController) list(c *cgin.Context) {
  18. pid := c.GetInt32(nameKey.PID, 0)
  19. if pid < 1 {
  20. clog.Infof("if pid < 1 {. params=%v", c.GetParams())
  21. code.JSONResult(c, code.PIDError)
  22. return
  23. }
  24. areaMap, found := data.Area.ListByPid(pid)
  25. if !found {
  26. clog.Infof("Area not found. params=%v", c.GetParams())
  27. code.JSONResult(c, code.PIDError)
  28. return
  29. }
  30. areaList := []*msgWeb.Area{}
  31. for _, area := range areaMap {
  32. if serverMap, found := data.AreaServer.ListByAreaID(area.AreaID); found {
  33. servers := []*msgWeb.AreaServer{}
  34. for _, server := range serverMap {
  35. servers = append(servers, &msgWeb.AreaServer{
  36. ServerID: server.ServerID,
  37. ServerName: server.ServerName,
  38. Status: server.Status,
  39. })
  40. }
  41. areaList = append(areaList, &msgWeb.Area{
  42. PID: area.Pid,
  43. AreaID: area.AreaID,
  44. AreaName: area.AreaName,
  45. Gate: area.Gate,
  46. ServerList: servers,
  47. })
  48. }
  49. }
  50. code.JSONResult(c, code.OK, areaList)
  51. }