61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
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,
|
|
})
|
|
}
|