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 d458e9f9..72eb5171 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 @@ -1,29 +1,23 @@ package xiaozhi.modules.device.controller; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; -import xiaozhi.common.constant.Constant; import xiaozhi.common.exception.ErrorCode; -import xiaozhi.common.page.PageData; import xiaozhi.common.redis.RedisKeys; import xiaozhi.common.redis.RedisUtils; import xiaozhi.common.user.UserDetail; -import xiaozhi.common.utils.JsonUtils; import xiaozhi.common.utils.Result; -import xiaozhi.modules.device.dto.DeviceHeaderDTO; +import xiaozhi.modules.device.dto.DeviceBindDTO; import xiaozhi.modules.device.dto.DeviceUnBindDTO; import xiaozhi.modules.device.entity.DeviceEntity; import xiaozhi.modules.device.service.DeviceService; import xiaozhi.modules.security.user.SecurityUser; import java.util.List; -import java.util.Map; @Tag(name = "设备管理") @AllArgsConstructor @@ -31,22 +25,22 @@ import java.util.Map; @RequestMapping("/device") public class DeviceController { private final DeviceService deviceService; + private final RedisUtils redisUtils; - @PostMapping("/bind/{deviceCode}") + @PostMapping("/bind/{agentId}") @Operation(summary = "绑定设备") @RequiresPermissions("sys:role:normal") - public Result bindDevice(@PathVariable String deviceCode) { - UserDetail user = SecurityUser.getUser(); - - String deviceHeaders = (String) redisUtils.get(RedisKeys.getDeviceCaptchaKey(deviceCode)); - if (StringUtils.isBlank(deviceHeaders)) { - return new Result().error(ErrorCode.DEVICE_CAPTCHA_ERROR); + public Result bindDevice(@PathVariable String agentId,@RequestBody String code) { + String macAddress = (String) redisUtils.get(RedisKeys.getDeviceCaptchaKey(code)); + if (StringUtils.isBlank(macAddress)) { + return new Result().error(ErrorCode.DEVICE_CAPTCHA_ERROR); } - DeviceHeaderDTO deviceHeader = JsonUtils.parseObject(deviceHeaders.getBytes(), DeviceHeaderDTO.class); - DeviceEntity device = deviceService.bindDevice(user.getId(), deviceHeader); - return new Result().ok(device); + Long user = SecurityUser.getUser().getId(); + DeviceBindDTO deviceBindDTO = new DeviceBindDTO(macAddress,user,agentId); + deviceService.bindDevice(deviceBindDTO); + return new Result<>(); } @GetMapping("/bind") @@ -67,16 +61,5 @@ public class DeviceController { return new Result(); } - @GetMapping("/all") - @Operation(summary = "设备列表(管理员)") - @RequiresPermissions("sys:role:superAdmin") - @Parameters({ - @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true), - @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true), - }) - public Result> adminDeviceList( - @Parameter(hidden = true) @RequestParam Map params) { - PageData page = deviceService.adminDeviceList(params); - return new Result>().ok(page); - } + } \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceBindDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceBindDTO.java new file mode 100644 index 00000000..58fee01d --- /dev/null +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceBindDTO.java @@ -0,0 +1,26 @@ +package xiaozhi.modules.device.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * 设备绑定的DTO + * @author zjy + * @since 2025-3-28 + */ +@Data +@AllArgsConstructor +@Schema(description = "设备连接头信息") +public class DeviceBindDTO { + + @Schema(description = "mac地址") + private String macAddress; + + @Schema(description = "所属用户id") + private Long userId; + + @Schema(description = "智能体id") + private String agentId; + +} \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceHeaderDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceHeaderDTO.java deleted file mode 100644 index 83327fef..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/dto/DeviceHeaderDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package xiaozhi.modules.device.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(description = "设备连接头信息") -public class DeviceHeaderDTO { - - @Schema(description = "设备ID") - private String deviceId; - - @Schema(description = "协议版本号") - private Long protocolVersion; - - @Schema(description = "认证信息") - private String authorization; - -} \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/entity/DeviceEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/device/entity/DeviceEntity.java index ccbe4683..cf96c319 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/entity/DeviceEntity.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/entity/DeviceEntity.java @@ -3,16 +3,16 @@ package xiaozhi.modules.device.entity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; +import xiaozhi.common.entity.BaseEntity; import java.util.Date; @Data +@EqualsAndHashCode(callSuper = false) @TableName("ai_device") @Schema(description = "设备信息") -public class DeviceEntity { - @Schema(description = "设备ID") - private Long id; - +public class DeviceEntity extends BaseEntity { @Schema(description = "关联用户ID") private Long userId; @@ -40,12 +40,6 @@ public class DeviceEntity { @Schema(description = "排序") private Integer sort; - @Schema(description = "创建者") - private Long creator; - - @Schema(description = "创建时间") - private Date createDate; - @Schema(description = "更新者") private Long updater; 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 16ad44fe..448603b7 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 @@ -1,14 +1,14 @@ package xiaozhi.modules.device.service; import xiaozhi.common.page.PageData; -import xiaozhi.modules.device.dto.DeviceHeaderDTO; +import xiaozhi.modules.device.dto.DeviceBindDTO; import xiaozhi.modules.device.entity.DeviceEntity; import java.util.List; import java.util.Map; public interface DeviceService { - DeviceEntity bindDevice(Long userId, DeviceHeaderDTO deviceHeader); + void bindDevice(DeviceBindDTO dto); List getUserDevices(Long userId); 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 279a9f2e..957e1e3e 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 @@ -5,49 +5,38 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.stereotype.Service; import xiaozhi.common.page.PageData; import xiaozhi.common.service.impl.BaseServiceImpl; +import xiaozhi.common.utils.ConvertUtils; import xiaozhi.modules.device.dao.DeviceDao; -import xiaozhi.modules.device.dto.DeviceHeaderDTO; +import xiaozhi.modules.device.dto.DeviceBindDTO; import xiaozhi.modules.device.entity.DeviceEntity; import xiaozhi.modules.device.service.DeviceService; -import java.util.Date; import java.util.List; import java.util.Map; @Service public class DeviceServiceImpl extends BaseServiceImpl implements DeviceService { - private final DeviceDao deviceDao; - - // 添加构造函数来初始化 deviceMapper - public DeviceServiceImpl(DeviceDao deviceDao) { - this.deviceDao = deviceDao; - } - @Override - public DeviceEntity bindDevice(Long userId, DeviceHeaderDTO deviceHeader) { - DeviceEntity device = new DeviceEntity(); - device.setUserId(userId); - device.setMacAddress(deviceHeader.getDeviceId()); - device.setCreateDate(new Date()); - deviceDao.insert(device); - return device; + public void bindDevice(DeviceBindDTO dto) { + DeviceEntity deviceEntity = ConvertUtils.sourceToTarget(dto, DeviceEntity.class); + baseDao.insert(deviceEntity); } @Override public List getUserDevices(Long userId) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("user_id", userId); - return deviceDao.selectList(wrapper); + return baseDao.selectList(wrapper); } @Override public void unbindDevice(Long userId, Long deviceId) { - deviceDao.deleteById(deviceId); + baseDao.deleteById(deviceId); } @Override public PageData adminDeviceList(Map params) { - IPage page = deviceDao.selectPage( + IPage page = baseDao.selectPage( getPage(params, "sort", true), new QueryWrapper<>() );