diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java b/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java index eaf3636f..b0320e3c 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java @@ -25,6 +25,7 @@ import xiaozhi.common.utils.Result; import xiaozhi.modules.device.dto.DeviceRegisterDTO; import xiaozhi.modules.device.dto.DeviceUnBindDTO; import xiaozhi.modules.device.dto.DeviceUpdateDTO; +import xiaozhi.modules.device.dto.DeviceManualAddDTO; import xiaozhi.modules.device.entity.DeviceEntity; import xiaozhi.modules.device.service.DeviceService; import xiaozhi.modules.security.user.SecurityUser; @@ -99,4 +100,13 @@ public class DeviceController { deviceService.updateById(entity); return new Result(); } + + @PostMapping("/manual-add") + @Operation(summary = "手动添加设备") + @RequiresPermissions("sys:role:normal") + public Result manualAddDevice(@RequestBody @Valid DeviceManualAddDTO dto) { + UserDetail user = SecurityUser.getUser(); + deviceService.manualAddDevice(user.getId(), dto); + return new Result<>(); + } } \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceManualAddDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceManualAddDTO.java new file mode 100644 index 00000000..369726b0 --- /dev/null +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceManualAddDTO.java @@ -0,0 +1,11 @@ +package xiaozhi.modules.device.dto; + +import lombok.Data; + +@Data +public class DeviceManualAddDTO { + private String agentId; + private String board; // 设备型号 + private String appVersion; // 固件版本 + private String macAddress; // Mac地址 +} \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/service/DeviceService.java b/main/manager-api/src/main/java/xiaozhi/modules/device/service/DeviceService.java index fb91ff89..39ec5fdd 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/service/DeviceService.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/service/DeviceService.java @@ -8,6 +8,7 @@ import xiaozhi.common.service.BaseService; import xiaozhi.modules.device.dto.DevicePageUserDTO; import xiaozhi.modules.device.dto.DeviceReportReqDTO; import xiaozhi.modules.device.dto.DeviceReportRespDTO; +import xiaozhi.modules.device.dto.DeviceManualAddDTO; import xiaozhi.modules.device.entity.DeviceEntity; import xiaozhi.modules.device.vo.UserShowDeviceListVO; @@ -87,5 +88,9 @@ public interface DeviceService extends BaseService { */ Date getLatestLastConnectionTime(String agentId); + /** + * 手动添加设备 + */ + void manualAddDevice(Long userId, DeviceManualAddDTO dto); } \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java index ee31c41f..b29a94f9 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java @@ -44,6 +44,7 @@ import xiaozhi.modules.device.vo.UserShowDeviceListVO; import xiaozhi.modules.security.user.SecurityUser; import xiaozhi.modules.sys.service.SysParamsService; import xiaozhi.modules.sys.service.SysUserUtilService; +import xiaozhi.modules.device.dto.DeviceManualAddDTO; @Slf4j @Service @@ -410,4 +411,23 @@ public class DeviceServiceImpl extends BaseServiceImpl } return 0; } + + @Override + public void manualAddDevice(Long userId, DeviceManualAddDTO dto) { + // 检查mac是否已存在 + DeviceEntity exist = this.lambdaQuery().eq(DeviceEntity::getMacAddress, dto.getMacAddress()).one(); + if (exist != null) { + throw new RenException("该Mac地址已存在"); + } + DeviceEntity entity = new DeviceEntity(); + entity.setUserId(userId); + entity.setAgentId(dto.getAgentId()); + entity.setBoard(dto.getBoard()); + entity.setAppVersion(dto.getAppVersion()); + entity.setMacAddress(dto.getMacAddress()); + entity.setCreateDate(new Date()); + entity.setAutoUpdate(1); + entity.setLastConnectedAt(null); // 最近对话时间为空 + this.save(entity); + } }