将GeneralDeviceService改成通用版, 随用随New
This commit is contained in:
@@ -17,18 +17,12 @@ type GeneralDeviceService struct {
|
|||||||
deviceRepo repository.DeviceRepository
|
deviceRepo repository.DeviceRepository
|
||||||
logger *logs.Logger
|
logger *logs.Logger
|
||||||
|
|
||||||
deviceID uint // 区域主控的设备ID
|
|
||||||
|
|
||||||
// regionalController 是执行命令的区域主控, 所有的指令都会发往区域主控
|
|
||||||
regionalController *models.Device
|
|
||||||
|
|
||||||
comm transport.Communicator
|
comm transport.Communicator
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGeneralDeviceService 创建一个通用设备服务
|
// NewGeneralDeviceService 创建一个通用设备服务
|
||||||
func NewGeneralDeviceService(deviceID uint, deviceRepo repository.DeviceRepository, logger *logs.Logger, comm transport.Communicator) *GeneralDeviceService {
|
func NewGeneralDeviceService(deviceRepo repository.DeviceRepository, logger *logs.Logger, comm transport.Communicator) *GeneralDeviceService {
|
||||||
return &GeneralDeviceService{
|
return &GeneralDeviceService{
|
||||||
deviceID: deviceID,
|
|
||||||
deviceRepo: deviceRepo,
|
deviceRepo: deviceRepo,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
comm: comm,
|
comm: comm,
|
||||||
@@ -38,8 +32,8 @@ func NewGeneralDeviceService(deviceID uint, deviceRepo repository.DeviceReposito
|
|||||||
func (g *GeneralDeviceService) Switch(device models.Device, action DeviceAction) error {
|
func (g *GeneralDeviceService) Switch(device models.Device, action DeviceAction) error {
|
||||||
|
|
||||||
// 校验设备参数及生成指令
|
// 校验设备参数及生成指令
|
||||||
if *device.ParentID != g.deviceID {
|
if *device.ParentID == 0 {
|
||||||
return fmt.Errorf("设备 %v(id=%v) 的上级区域主控是(id=%v), 不是当前区域主控(id=%v)下属设备, 无法执行指令", device.Name, device.ID, device.ParentID, g.deviceID)
|
return fmt.Errorf("设备 %v(id=%v) 的上级区域主控(id=%v) ID不合理, 无法执行指令", device.Name, device.ID, *device.ParentID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !device.SelfCheck() {
|
if !device.SelfCheck() {
|
||||||
@@ -80,9 +74,9 @@ func (g *GeneralDeviceService) Switch(device models.Device, action DeviceAction)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取自身LoRa设备ID, 因为可能变更, 所以每次都现获取
|
// 获取自身LoRa设备ID, 因为可能变更, 所以每次都现获取
|
||||||
thisDevice, err := g.deviceRepo.FindByID(g.deviceID)
|
thisDevice, err := g.deviceRepo.FindByID(*device.ParentID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("获取区域主控(id=%v)信息失败: %v", g.deviceID, err)
|
return fmt.Errorf("获取区域主控(id=%v)信息失败: %v", *device.ParentID, err)
|
||||||
}
|
}
|
||||||
if !thisDevice.SelfCheck() {
|
if !thisDevice.SelfCheck() {
|
||||||
return fmt.Errorf("区域主控 %v(id=%v) 缺少必要信息, 无法发送指令", thisDevice.Name, thisDevice.ID)
|
return fmt.Errorf("区域主控 %v(id=%v) 缺少必要信息, 无法发送指令", thisDevice.Name, thisDevice.ID)
|
||||||
|
|||||||
Reference in New Issue
Block a user