package controllers import ( models2 "cmii-uav-watchdog-common/models" "cmii-uav-watchdog-common/wdd_log" "cmii-uav-watchdog/services" "net/http" "github.com/gin-gonic/gin" ) // HeartbeatController 心跳控制器 type HeartbeatController struct { heartbeatService *services.HeartbeatService } // NewHeartbeatController 创建心跳控制器 func NewHeartbeatController() *HeartbeatController { return &HeartbeatController{ heartbeatService: services.NewHeartbeatService(), } } // HandleHeartbeat 处理心跳请求 func (hc *HeartbeatController) HandleHeartbeat(c *gin.Context) { var req models2.HeartbeatRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, req) return } // 处理心跳 resp, err := hc.heartbeatService.ProcessHeartbeat(req) if err != nil { c.JSON(http.StatusInternalServerError, resp) return } c.JSON(http.StatusOK, resp) } // GetAllHeartbeatHosts 获取所有心跳主机信息 func (hc *HeartbeatController) GetAllHeartbeatHosts(c *gin.Context) { // 获取所有主机信息 hostInfoMap, err := hc.heartbeatService.GetAllHostInfo() if err != nil { wdd_log.Error("获取所有心跳主机信息失败: %v", err) c.JSON(http.StatusInternalServerError, gin.H{ "error": "获取所有心跳主机信息失败", "message": err.Error(), }) return } // 返回主机信息 c.JSON(http.StatusOK, gin.H{ "host_count": len(hostInfoMap), "hosts": hostInfoMap, }) }