Files
pig-farm-controller/internal/app/dto/device_dto.go

127 lines
6.3 KiB
Go
Raw Normal View History

2025-10-03 23:02:43 +08:00
package dto
import (
"mime/multipart"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
)
2025-10-03 23:02:43 +08:00
// CreateDeviceRequest 定义了创建设备时需要传入的参数
type CreateDeviceRequest struct {
2025-10-30 17:39:05 +08:00
Name string `json:"name" validate:"required"`
2025-11-10 22:23:31 +08:00
DeviceTemplateID uint32 `json:"device_template_id" validate:"required"`
AreaControllerID uint32 `json:"area_controller_id" validate:"required"`
2025-10-30 17:39:05 +08:00
Location string `json:"location,omitempty" validate:"omitempty"`
Properties map[string]interface{} `json:"properties,omitempty" validate:"omitempty"`
2025-10-03 23:02:43 +08:00
}
// UpdateDeviceRequest 定义了更新设备时需要传入的参数
type UpdateDeviceRequest struct {
2025-10-30 17:39:05 +08:00
Name string `json:"name" validate:"required"`
2025-11-10 22:23:31 +08:00
DeviceTemplateID uint32 `json:"device_template_id" validate:"required"`
AreaControllerID uint32 `json:"area_controller_id" validate:"required"`
2025-10-30 17:39:05 +08:00
Location string `json:"location,omitempty" validate:"omitempty"`
Properties map[string]interface{} `json:"properties,omitempty" validate:"omitempty"`
2025-10-03 23:02:43 +08:00
}
2025-10-13 10:39:51 +08:00
// ManualControlDeviceRequest 定义了手动控制设备时需要传入的参数
type ManualControlDeviceRequest struct {
// Action 不传表示这是一个传感器, 会触发一次采集
2025-10-13 14:37:57 +08:00
Action *string `json:"action"`
2025-10-13 10:39:51 +08:00
}
2025-10-03 23:02:43 +08:00
// CreateAreaControllerRequest 定义了创建区域主控时需要传入的参数
type CreateAreaControllerRequest struct {
2025-10-30 17:39:05 +08:00
Name string `json:"name" validate:"required"`
NetworkID string `json:"network_id" validate:"required"`
Location string `json:"location,omitempty" validate:"omitempty"`
Properties map[string]interface{} `json:"properties,omitempty" validate:"omitempty"`
2025-10-03 23:02:43 +08:00
}
// UpdateAreaControllerRequest 定义了更新区域主控时需要传入的参数
type UpdateAreaControllerRequest struct {
2025-10-30 17:39:05 +08:00
Name string `json:"name" validate:"required"`
NetworkID string `json:"network_id" validate:"required"`
Location string `json:"location,omitempty" validate:"omitempty"`
Properties map[string]interface{} `json:"properties,omitempty" validate:"omitempty"`
2025-10-03 23:02:43 +08:00
}
// CreateDeviceTemplateRequest 定义了创建设备模板时需要传入的参数
type CreateDeviceTemplateRequest struct {
2025-10-30 17:39:05 +08:00
Name string `json:"name" validate:"required"`
Manufacturer string `json:"manufacturer,omitempty" validate:"omitempty"`
Description string `json:"description,omitempty" validate:"omitempty"`
Category models.DeviceCategory `json:"category" validate:"required"`
Commands map[string]interface{} `json:"commands" validate:"required"`
Values []models.ValueDescriptor `json:"values,omitempty" validate:"omitempty,dive"`
2025-10-03 23:02:43 +08:00
}
// UpdateDeviceTemplateRequest 定义了更新设备模板时需要传入的参数
type UpdateDeviceTemplateRequest struct {
2025-10-30 17:39:05 +08:00
Name string `json:"name" validate:"required"`
Manufacturer string `json:"manufacturer,omitempty" validate:"omitempty"`
Description string `json:"description,omitempty" validate:"omitempty"`
Category models.DeviceCategory `json:"category" validate:"required"`
Commands map[string]interface{} `json:"commands" validate:"required"`
Values []models.ValueDescriptor `json:"values,omitempty" validate:"omitempty,dive"`
2025-10-03 23:02:43 +08:00
}
// DeviceResponse 定义了返回给客户端的单个设备信息的结构
type DeviceResponse struct {
2025-11-10 22:23:31 +08:00
ID uint32 `json:"id"`
2025-10-03 23:02:43 +08:00
Name string `json:"name"`
2025-11-10 22:23:31 +08:00
DeviceTemplateID uint32 `json:"device_template_id"`
2025-10-03 23:02:43 +08:00
DeviceTemplateName string `json:"device_template_name"`
2025-11-10 22:23:31 +08:00
AreaControllerID uint32 `json:"area_controller_id"`
2025-10-03 23:02:43 +08:00
AreaControllerName string `json:"area_controller_name"`
Location string `json:"location"`
Properties map[string]interface{} `json:"properties"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
// AreaControllerResponse 定义了返回给客户端的单个区域主控信息的结构
type AreaControllerResponse struct {
2025-12-01 17:49:30 +08:00
ID uint32 `json:"id"`
Name string `json:"name"`
NetworkID string `json:"network_id"`
FirmwareVersion string `json:"firmware_version"`
Location string `json:"location"`
Status string `json:"status"`
Properties map[string]interface{} `json:"properties"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
2025-10-03 23:02:43 +08:00
}
// DeviceTemplateResponse 定义了返回给客户端的单个设备模板信息的结构
type DeviceTemplateResponse struct {
2025-11-10 22:23:31 +08:00
ID uint32 `json:"id"`
2025-10-03 23:02:43 +08:00
Name string `json:"name"`
Manufacturer string `json:"manufacturer"`
Description string `json:"description"`
Category models.DeviceCategory `json:"category"`
Commands map[string]interface{} `json:"commands"`
Values []models.ValueDescriptor `json:"values"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
// OtaUpgradeRequest 定义了 OTA 升级请求时需要传入的参数
type OtaUpgradeRequest struct {
FirmwareFile *multipart.FileHeader `form:"firmware_file" validate:"required"` // 固件压缩包文件
}
// OtaUpgradeResponse 定义了 OTA 升级响应的结构
type OtaUpgradeResponse struct {
TaskID uint32 `json:"task_id"` // OTA 升级任务ID
}
// OtaUpgradeProgressResponse 定义了 OTA 升级进度响应的结构
type OtaUpgradeProgressResponse struct {
TaskID uint32 `json:"task_id"` // OTA 升级任务ID
CurrentStage models.OTATaskStatus `json:"current_stage"` // 当前阶段
ExecutedNum uint32 `json:"executed_num"` // 已执行步骤数
TotalNum uint32 `json:"total_num"` // 总步骤数
Message string `json:"message"` // 状态消息
}