增加心跳
This commit is contained in:
@@ -122,16 +122,18 @@ type Controller struct {
|
||||
deviceControlRepo repository.DeviceControlRepo
|
||||
deviceRepo repository.DeviceRepo
|
||||
websocketService *service.WebSocketService
|
||||
heartbeatService *service.HeartbeatService
|
||||
deviceStatusPool *service.DeviceStatusPool
|
||||
logger *logs.Logger
|
||||
}
|
||||
|
||||
// NewController 创建设备控制控制器实例
|
||||
func NewController(deviceControlRepo repository.DeviceControlRepo, deviceRepo repository.DeviceRepo, websocketService *service.WebSocketService, deviceStatusPool *service.DeviceStatusPool) *Controller {
|
||||
func NewController(deviceControlRepo repository.DeviceControlRepo, deviceRepo repository.DeviceRepo, websocketService *service.WebSocketService, heartbeatService *service.HeartbeatService, deviceStatusPool *service.DeviceStatusPool) *Controller {
|
||||
return &Controller{
|
||||
deviceControlRepo: deviceControlRepo,
|
||||
deviceRepo: deviceRepo,
|
||||
websocketService: websocketService,
|
||||
heartbeatService: heartbeatService,
|
||||
deviceStatusPool: deviceStatusPool,
|
||||
logger: logs.NewLogger(),
|
||||
}
|
||||
@@ -199,6 +201,9 @@ func (c *Controller) Create(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 刷新设备状态
|
||||
c.heartbeatService.TriggerManualHeartbeatAsync()
|
||||
|
||||
controller.SendSuccessResponse(ctx, "创建设备成功", device)
|
||||
}
|
||||
|
||||
@@ -253,9 +258,6 @@ func (c *Controller) Update(ctx *gin.Context) {
|
||||
req.BusNumber != nil && req.DeviceAddress != nil {
|
||||
device.Set485Address(*req.BusNumber, *req.DeviceAddress)
|
||||
}
|
||||
// TODO: 设备状态应该由系统自动获取,而不是由用户指定
|
||||
// 这里保持设备原有状态,后续需要实现自动状态检测
|
||||
// 设备状态现在只在内存中维护,不持久化到数据库
|
||||
|
||||
if err := c.deviceRepo.Update(device); err != nil {
|
||||
c.logger.Error("更新设备失败: " + err.Error())
|
||||
@@ -263,6 +265,9 @@ func (c *Controller) Update(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 刷新设备状态
|
||||
c.heartbeatService.TriggerManualHeartbeatAsync()
|
||||
|
||||
controller.SendSuccessResponse(ctx, "更新设备成功", device)
|
||||
}
|
||||
|
||||
@@ -291,6 +296,9 @@ func (c *Controller) Delete(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 刷新设备状态
|
||||
c.heartbeatService.TriggerManualHeartbeatAsync()
|
||||
|
||||
controller.SendSuccessResponse(ctx, "删除设备成功", nil)
|
||||
}
|
||||
|
||||
@@ -397,6 +405,9 @@ func (c *Controller) Switch(ctx *gin.Context) {
|
||||
Message: message,
|
||||
}
|
||||
|
||||
// 刷新设备状态
|
||||
c.heartbeatService.TriggerManualHeartbeatAsync()
|
||||
|
||||
controller.SendSuccessResponse(ctx, "设备控制成功", data)
|
||||
}
|
||||
|
||||
@@ -474,6 +485,8 @@ func (c *Controller) GetDeviceStatus(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// TODO 需要刷新设备状态吗? 刷新的话这个接口可能会很慢
|
||||
|
||||
// 从设备状态池中获取设备状态
|
||||
status, exists := c.deviceStatusPool.GetStatus(deviceID)
|
||||
if !exists {
|
||||
|
||||
Reference in New Issue
Block a user