package controller import ( "f1-game/internal/code" "f1-game/internal/data" nameKey "f1-game/internal/name/key" msgWeb "f1-game/nodes/web/internal/message" clog "github.com/cherry-game/cherry/logger" cgin "github.com/cherry-game/components/gin" ) type ServerController struct { cgin.BaseController } func (p *ServerController) Init() { p.GET("/server/list", p.list) p.GET("/server/list/:pid", p.list) } func (p *ServerController) list(c *cgin.Context) { pid := c.GetInt32(nameKey.PID, 0) if pid < 1 { clog.Infof("if pid < 1 {. params=%v", c.GetParams()) code.JSONResult(c, code.PIDError) return } areaMap, found := data.Area.ListByPid(pid) if !found { clog.Infof("Area not found. params=%v", c.GetParams()) code.JSONResult(c, code.PIDError) return } areaList := []*msgWeb.Area{} for _, area := range areaMap { if serverMap, found := data.AreaServer.ListByAreaID(area.AreaID); found { servers := []*msgWeb.AreaServer{} for _, server := range serverMap { servers = append(servers, &msgWeb.AreaServer{ ServerID: server.ServerID, ServerName: server.ServerName, Status: server.Status, }) } areaList = append(areaList, &msgWeb.Area{ PID: area.Pid, AreaID: area.AreaID, AreaName: area.AreaName, Gate: area.Gate, ServerList: servers, }) } } code.JSONResult(c, code.OK, areaList) }