mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-28 01:53:53 +08:00
修改了设备模块的绑定设备接口的逻辑
--DeviceBindDTO.java 把原来设备请求头dto改为绑定dto --DeviceController.java 修改设备绑定接口,改为需要提供智能体和设备验证码2个参数,通过设备验证码获取到mac地址,把用户id,mac地址,智能体id保存到数据库 --DeviceEntity.java 继承基础实体类 --DeviceService.java 修改绑定设备方法定义 --DeviceServiceImpl.java 重写绑定设备方法
This commit is contained in:
+12
-29
@@ -1,29 +1,23 @@
|
|||||||
package xiaozhi.modules.device.controller;
|
package xiaozhi.modules.device.controller;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
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 io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import xiaozhi.common.constant.Constant;
|
|
||||||
import xiaozhi.common.exception.ErrorCode;
|
import xiaozhi.common.exception.ErrorCode;
|
||||||
import xiaozhi.common.page.PageData;
|
|
||||||
import xiaozhi.common.redis.RedisKeys;
|
import xiaozhi.common.redis.RedisKeys;
|
||||||
import xiaozhi.common.redis.RedisUtils;
|
import xiaozhi.common.redis.RedisUtils;
|
||||||
import xiaozhi.common.user.UserDetail;
|
import xiaozhi.common.user.UserDetail;
|
||||||
import xiaozhi.common.utils.JsonUtils;
|
|
||||||
import xiaozhi.common.utils.Result;
|
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.dto.DeviceUnBindDTO;
|
||||||
import xiaozhi.modules.device.entity.DeviceEntity;
|
import xiaozhi.modules.device.entity.DeviceEntity;
|
||||||
import xiaozhi.modules.device.service.DeviceService;
|
import xiaozhi.modules.device.service.DeviceService;
|
||||||
import xiaozhi.modules.security.user.SecurityUser;
|
import xiaozhi.modules.security.user.SecurityUser;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Tag(name = "设备管理")
|
@Tag(name = "设备管理")
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@@ -31,22 +25,22 @@ import java.util.Map;
|
|||||||
@RequestMapping("/device")
|
@RequestMapping("/device")
|
||||||
public class DeviceController {
|
public class DeviceController {
|
||||||
private final DeviceService deviceService;
|
private final DeviceService deviceService;
|
||||||
|
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/bind/{deviceCode}")
|
@PostMapping("/bind/{agentId}")
|
||||||
@Operation(summary = "绑定设备")
|
@Operation(summary = "绑定设备")
|
||||||
@RequiresPermissions("sys:role:normal")
|
@RequiresPermissions("sys:role:normal")
|
||||||
public Result<DeviceEntity> bindDevice(@PathVariable String deviceCode) {
|
public Result<Void> bindDevice(@PathVariable String agentId,@RequestBody String code) {
|
||||||
UserDetail user = SecurityUser.getUser();
|
String macAddress = (String) redisUtils.get(RedisKeys.getDeviceCaptchaKey(code));
|
||||||
|
if (StringUtils.isBlank(macAddress)) {
|
||||||
String deviceHeaders = (String) redisUtils.get(RedisKeys.getDeviceCaptchaKey(deviceCode));
|
return new Result<Void>().error(ErrorCode.DEVICE_CAPTCHA_ERROR);
|
||||||
if (StringUtils.isBlank(deviceHeaders)) {
|
|
||||||
return new Result<DeviceEntity>().error(ErrorCode.DEVICE_CAPTCHA_ERROR);
|
|
||||||
}
|
}
|
||||||
DeviceHeaderDTO deviceHeader = JsonUtils.parseObject(deviceHeaders.getBytes(), DeviceHeaderDTO.class);
|
Long user = SecurityUser.getUser().getId();
|
||||||
DeviceEntity device = deviceService.bindDevice(user.getId(), deviceHeader);
|
DeviceBindDTO deviceBindDTO = new DeviceBindDTO(macAddress,user,agentId);
|
||||||
return new Result<DeviceEntity>().ok(device);
|
deviceService.bindDevice(deviceBindDTO);
|
||||||
|
return new Result<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/bind")
|
@GetMapping("/bind")
|
||||||
@@ -67,16 +61,5 @@ public class DeviceController {
|
|||||||
return new Result();
|
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<PageData<DeviceEntity>> adminDeviceList(
|
|
||||||
@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
|
|
||||||
PageData<DeviceEntity> page = deviceService.adminDeviceList(params);
|
|
||||||
return new Result<PageData<DeviceEntity>>().ok(page);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -3,16 +3,16 @@ package xiaozhi.modules.device.entity;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import xiaozhi.common.entity.BaseEntity;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("ai_device")
|
@TableName("ai_device")
|
||||||
@Schema(description = "设备信息")
|
@Schema(description = "设备信息")
|
||||||
public class DeviceEntity {
|
public class DeviceEntity extends BaseEntity {
|
||||||
@Schema(description = "设备ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "关联用户ID")
|
@Schema(description = "关联用户ID")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
@@ -40,12 +40,6 @@ public class DeviceEntity {
|
|||||||
@Schema(description = "排序")
|
@Schema(description = "排序")
|
||||||
private Integer sort;
|
private Integer sort;
|
||||||
|
|
||||||
@Schema(description = "创建者")
|
|
||||||
private Long creator;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createDate;
|
|
||||||
|
|
||||||
@Schema(description = "更新者")
|
@Schema(description = "更新者")
|
||||||
private Long updater;
|
private Long updater;
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
package xiaozhi.modules.device.service;
|
package xiaozhi.modules.device.service;
|
||||||
|
|
||||||
import xiaozhi.common.page.PageData;
|
import xiaozhi.common.page.PageData;
|
||||||
import xiaozhi.modules.device.dto.DeviceHeaderDTO;
|
import xiaozhi.modules.device.dto.DeviceBindDTO;
|
||||||
import xiaozhi.modules.device.entity.DeviceEntity;
|
import xiaozhi.modules.device.entity.DeviceEntity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface DeviceService {
|
public interface DeviceService {
|
||||||
DeviceEntity bindDevice(Long userId, DeviceHeaderDTO deviceHeader);
|
void bindDevice(DeviceBindDTO dto);
|
||||||
|
|
||||||
List<DeviceEntity> getUserDevices(Long userId);
|
List<DeviceEntity> getUserDevices(Long userId);
|
||||||
|
|
||||||
|
|||||||
+8
-19
@@ -5,49 +5,38 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import xiaozhi.common.page.PageData;
|
import xiaozhi.common.page.PageData;
|
||||||
import xiaozhi.common.service.impl.BaseServiceImpl;
|
import xiaozhi.common.service.impl.BaseServiceImpl;
|
||||||
|
import xiaozhi.common.utils.ConvertUtils;
|
||||||
import xiaozhi.modules.device.dao.DeviceDao;
|
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.entity.DeviceEntity;
|
||||||
import xiaozhi.modules.device.service.DeviceService;
|
import xiaozhi.modules.device.service.DeviceService;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class DeviceServiceImpl extends BaseServiceImpl<DeviceDao, DeviceEntity> implements DeviceService {
|
public class DeviceServiceImpl extends BaseServiceImpl<DeviceDao, DeviceEntity> implements DeviceService {
|
||||||
private final DeviceDao deviceDao;
|
|
||||||
|
|
||||||
// 添加构造函数来初始化 deviceMapper
|
|
||||||
public DeviceServiceImpl(DeviceDao deviceDao) {
|
|
||||||
this.deviceDao = deviceDao;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeviceEntity bindDevice(Long userId, DeviceHeaderDTO deviceHeader) {
|
public void bindDevice(DeviceBindDTO dto) {
|
||||||
DeviceEntity device = new DeviceEntity();
|
DeviceEntity deviceEntity = ConvertUtils.sourceToTarget(dto, DeviceEntity.class);
|
||||||
device.setUserId(userId);
|
baseDao.insert(deviceEntity);
|
||||||
device.setMacAddress(deviceHeader.getDeviceId());
|
|
||||||
device.setCreateDate(new Date());
|
|
||||||
deviceDao.insert(device);
|
|
||||||
return device;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeviceEntity> getUserDevices(Long userId) {
|
public List<DeviceEntity> getUserDevices(Long userId) {
|
||||||
QueryWrapper<DeviceEntity> wrapper = new QueryWrapper<>();
|
QueryWrapper<DeviceEntity> wrapper = new QueryWrapper<>();
|
||||||
wrapper.eq("user_id", userId);
|
wrapper.eq("user_id", userId);
|
||||||
return deviceDao.selectList(wrapper);
|
return baseDao.selectList(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unbindDevice(Long userId, Long deviceId) {
|
public void unbindDevice(Long userId, Long deviceId) {
|
||||||
deviceDao.deleteById(deviceId);
|
baseDao.deleteById(deviceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<DeviceEntity> adminDeviceList(Map<String, Object> params) {
|
public PageData<DeviceEntity> adminDeviceList(Map<String, Object> params) {
|
||||||
IPage<DeviceEntity> page = deviceDao.selectPage(
|
IPage<DeviceEntity> page = baseDao.selectPage(
|
||||||
getPage(params, "sort", true),
|
getPage(params, "sort", true),
|
||||||
new QueryWrapper<>()
|
new QueryWrapper<>()
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user