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 2ae9e023..43009bf8 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 @@ -20,6 +20,7 @@ import xiaozhi.common.redis.RedisUtils; import xiaozhi.common.user.UserDetail; import xiaozhi.common.utils.Result; import xiaozhi.modules.device.dto.DeviceBindDTO; +import xiaozhi.modules.device.dto.DeviceRegisterDTO; import xiaozhi.modules.device.dto.DeviceUnBindDTO; import xiaozhi.modules.device.entity.DeviceEntity; import xiaozhi.modules.device.service.DeviceService; @@ -48,6 +49,25 @@ public class DeviceController { return new Result<>(); } + @PostMapping("/register") + @Operation(summary = "注册设备") + public Result registerDevice(@RequestBody DeviceRegisterDTO deviceRegisterDTO) { + String macAddress = deviceRegisterDTO.getMacAddress(); + if (StringUtils.isBlank(macAddress)) { + return new Result().error(ErrorCode.NOT_NULL, "mac地址不能为空"); + } + // 生成六位验证码 + String code = String.valueOf(Math.random()).substring(2, 8); + String key = RedisKeys.getDeviceCaptchaKey(code); + String existsMac = null; + do { + existsMac = (String) redisUtils.get(key); + } while (StringUtils.isNotBlank(existsMac)); + + redisUtils.set(key, macAddress); + return new Result().ok(code); + } + @GetMapping("/bind/{agentId}") @Operation(summary = "获取已绑定设备") @RequiresPermissions("sys:role:normal") diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceRegisterDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceRegisterDTO.java new file mode 100644 index 00000000..ce37c517 --- /dev/null +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceRegisterDTO.java @@ -0,0 +1,23 @@ +package xiaozhi.modules.device.dto; + +import java.io.Serializable; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 设备注册头信息 + * + * @author zjy + * @since 2025-3-28 + */ +@Setter +@Getter +@Schema(description = "设备注册头信息") +public class DeviceRegisterDTO implements Serializable { + + @Schema(description = "mac地址") + private String macAddress; + +} \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java b/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java index fc5db705..e5b89c99 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java @@ -77,6 +77,7 @@ public class ShiroConfig { filterMap.put("/user/captcha", "anon"); filterMap.put("/user/login", "anon"); filterMap.put("/user/register", "anon"); + filterMap.put("/device/register", "anon"); filterMap.put("/**", "oauth2"); shiroFilter.setFilterChainDefinitionMap(filterMap); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserServiceImpl.java index 71d507c6..3849b485 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserServiceImpl.java @@ -156,6 +156,7 @@ public class SysUserServiceImpl extends BaseServiceImpl