feat(ExtraDevice): 添加外部设备管理功能

- 创建了 ExtraDeviceController 提供分页查询外部设备列表的API接口
- 新增 ExtraDeviceService 和 ExtraDeviceServiceImpl 实现设备查询逻辑
- 添加 ExtraDevicePageQueryReq 和 ExtraDeviceRespVO 请求响应数据模型
- 扩展 ExtraDeviceMapper 支持分页查询外部设备列表
- 实现景区名称填充和设备在线状态判断功能
- 集成 Redis 获取设备心跳时间判断在线状态
- 添加了完整的参数校验和异常处理机制
This commit is contained in:
2025-12-29 16:06:32 +08:00
parent d6780ccb7a
commit 4596a61ba8
7 changed files with 304 additions and 1 deletions

View File

@@ -0,0 +1,44 @@
package com.ycwl.basic.controller.pc;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.model.pc.extraDevice.req.ExtraDevicePageQueryReq;
import com.ycwl.basic.model.pc.extraDevice.resp.ExtraDeviceRespVO;
import com.ycwl.basic.service.pc.ExtraDeviceService;
import com.ycwl.basic.utils.ApiResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 外部设备管理控制器
*/
@Slf4j
@RestController
@RequestMapping("/api/extra_device/v1")
@RequiredArgsConstructor
public class ExtraDeviceController {
private final ExtraDeviceService extraDeviceService;
/**
* 分页查询外部设备列表
*
* @param req 查询请求参数,包含scenicId(可选)、pageNum、pageSize
* @return 分页查询结果,包含设备ID、景区ID、景区名称、设备名称、标识、状态、心跳时间、在线状态
*/
@PostMapping("/page")
public ApiResponse<PageInfo<ExtraDeviceRespVO>> page(@RequestBody ExtraDevicePageQueryReq req) {
log.info("分页查询外部设备列表, scenicId: {}, pageNum: {}, pageSize: {}",
req.getScenicId(), req.getPageNum(), req.getPageSize());
PageInfo<ExtraDeviceRespVO> pageInfo = extraDeviceService.pageQuery(req);
log.info("外部设备列表查询完成, total: {}, pages: {}",
pageInfo.getTotal(), pageInfo.getPages());
return ApiResponse.success(pageInfo);
}
}