设备信息修改
引用文件
目录
简介
本技术文档围绕“设备信息修改”能力进行系统化梳理,重点覆盖以下方面:
- 安全控制机制:权限验证、操作审计、数据校验
- 支持修改的信息范围:设备 MAC、CPU、MAC 分配状态与时间、创建/更新信息等
- 审核与变更管理:修改申请、审批流程、变更记录
- 日志与审计:操作时间、操作人、修改内容、审批状态等
- API 接口规范:请求格式、参数校验、响应处理
- 安全最佳实践与合规要求
说明:当前仓库实现聚焦于“设备信息修改记录”的管理与 MAC 分配池的导入/统计,以及基于 Redis 的 MAC 分配逻辑;“设备信息修改”的完整业务(如品牌、系统版本、构建号、内存配置等)在现有代码中未体现,本文按现有实现进行说明,并在“概念性概述”部分给出扩展建议。
项目结构
设备信息修改相关模块位于 yudao-module-device 子模块中,采用典型的分层架构:
- 控制层:对外暴露 REST 接口,负责鉴权、参数校验、调用服务层
- 服务层:封装业务逻辑,协调 Mapper/DAO、Redis 缓存与导入处理
- 数据访问层:MyBatis Mapper 负责数据库 CRUD;XML 提供批量插入等 SQL
- 数据对象:DO 映射 base_device_info_modify 表
- VO/DTO:请求/响应参 数结构,用于接口契约
图表来源
- DeviceInfoModifyController.java
- DeviceInfoModifyServiceImpl.java
- DeviceInfoModifyMapper.java
- DeviceInfoModifyMapper.xml
- DeviceInfoModifyDO.java
章节来源
- DeviceInfoModifyController.java
- DeviceInfoModifyService.java
- DeviceInfoModifyServiceImpl.java
- DeviceInfoModifyMapper.java
- DeviceInfoModifyMapper.xml
- DeviceInfoModifyDO.java
核心组件
- 控制器 DeviceInfoModifyController:提供创建、更新、删除、查询、分页、导出 Excel、导入 MAC 池、统计未分配 MAC 等接口,并通过注解进行权限控制与操作日志记录
- 服务 DeviceInfoModifyService/Impl:实现创建/更新/删除/查询/分页、导入 MAC 池、统计未分配数量、系统自动分配 MAC 的核心逻辑
- 数据访问 DeviceInfoModifyMapper:提供分页查询、批量插入 MAC 池、查询未分配 MAC、更新分配设备信息、按状态计数等方法
- 数据对象 DeviceInfoModifyDO:映射 base_device_info_modify 表,包含分配 MAC、设备原 MAC、CPU、状态、分配时间、创建/更新时间及创建者/更新者等字段
- VO/DTO:DeviceInfoModifySaveReqVO、DeviceInfoModifyPageReqVO、AppDeviceInfoModifyReqVO、DeviceModifyRespDTO,分别用于管理后台新增/修改、分页查询、APP 修改请求、RPC 响应
章节来源
- DeviceInfoModifyController.java
- DeviceInfoModifyService.java
- DeviceInfoModifyServiceImpl.java
- DeviceInfoModifyMapper.java
- DeviceInfoModifyDO.java
- DeviceInfoModifySaveReqVO.java
- DeviceInfoModifyPageReqVO.java
- AppDeviceInfoModifyReqVO.java
- DeviceModifyRespDTO.java
架构总览
下图展示“设备信息修改”从接口到持久化的整体交互:
图表来源
- DeviceInfoModifyController.java
- DeviceInfoModifyServiceImpl.java
- DeviceInfoModifyMapper.java
- DeviceInfoModifyMapper.xml
详细组件分析
控制器层:DeviceInfoModifyController
- 权限控制:使用注解对各接口进行权限校验 ,如创建/更新/删除/查询/导出/导入等
- 操作审计:通过注解开启 API 访问日志,导出/导入操作记录操作类型
- 接口职责:
- 创建/更新/删除/查询/分页
- 导出 Excel
- 导入 MAC 池(Excel)
- 统计未分配 MAC 数量
章节来源
服务层:DeviceInfoModifyServiceImpl
- 核心逻辑:
- 创建/更新/删除/查询/分页:委托 Mapper 执行
- 导入 MAC 池:解析 Excel,批量写入数据库
- 统计未分配 MAC:按状态计数
- 系统自动分配 MAC:从 Redis 弹出可用 MAC,更新分配设备信息
- 缓存加载:首次加载未分配 MAC 到 Redis,带重入锁避免重复加载
图表来源
章节来源
数据访问层:DeviceInfoModifyMapper 与 XML
- Mapper 方法:
- selectPage:按条件分页查询
- insertMacPool:批量插入 MAC 池
- selectUnallocatedMac:查询未分配 MAC(限制数量)
- updateAllocationDeviceByAllocatedMac:更新分配设备信息
- selectCountByStatus:按状态计数
- XML 提供 insertMacPool 的批量插入 SQL
章节来源
数据对象:DeviceInfoModifyDO
- 字段说明:
- id:主键
- allocatedMac:分配的 MAC
- deviceMac:设备原 MAC
- cpu:CPU 信息
- status:MAC 分配状态(0 未分配,1 已分配)
- allocatedTime:分配时间
- createTime/updateTime:创建/更新时间
- creator/updater:创建者/更新者标识
章节来源
请求/响应结构:VO/DTO
- 管理后台:
- DeviceInfoModifySaveReqVO:新增/修改请求,包含 id、allocatedMac、deviceMac、cpu、status、allocatedTime 等
- DeviceInfoModifyPageReqVO:分页查询请求,支持按 allocatedMac、deviceMac、cpu、status、时间区间过滤
- APP/RPC:
- AppDeviceInfoModifyReqVO:APP 修改请求,包含 mac、cpu、可选 macs 数组
- DeviceModifyRespDTO:RPC 响应,包含 mac、cpu、可选 macs 数组
章节来源
- DeviceInfoModifySaveReqVO.java
- DeviceInfoModifyPageReqVO.java
- AppDeviceInfoModifyReqVO.java
- DeviceModifyRespDTO.java
依赖关系分析
- 控制器依赖服务接口 DeviceInfoModifyService
- 服务实现依赖 Mapper 接口与 Redis DAO(通过类名可见)
- Mapper 依赖 XML SQL 与数据库
- VO/DTO 作为接口契约,贯穿控制器与服务层
图表来源
- DeviceInfoModifyController.java
- DeviceInfoModifyService.java
- DeviceInfoModifyServiceImpl.java
- DeviceInfoModifyMapper.java
- DeviceInfoModifyDO.java
- DeviceInfoModifySaveReqVO.java
- DeviceInfoModifyPageReqVO.java
- AppDeviceInfoModifyReqVO.java
- DeviceModifyRespDTO.java
性能与并发特性
- 批量导入:使用 EasyExcel 分页监听器逐批处理,减少内存占用
- Redis 缓存:未分配 MAC 预热到 Redis,降低数据库压力;带过期策略
- 双重检查加锁:避免重复加载缓存,保证并发安全
- 分页查询:支持按多个维度过滤,提升检索效率
章节来源
安全与合规
- 权限控制:所有接口均标注权限注解,仅授权用户可访问
- 参数校验:请求 VO 使用注解进行必填/格式校验
- 操作审计:启用 API 访问日志,记录导出/导入等关键操作
- 数据隔离:服务层统一校验记录存在性,防止越权删除/更新
- 合规建议(概念性):
- 审批流程:对敏感字段修改增加审批流(如品牌、系统版本、构建号、内存配置),结合审批状态字段记录审批人与时间
- 变更记录:建立变更历史表,记录每次修改前后的值、操作人、审批状态、操作时间
- 数据脱敏:导出/展示时对敏感字段进行脱敏处理
- 审计日志:完善字段级审计,支持回溯与合规检查
章节来源
故障排查
- 导入失败:检查 Excel 格式与字段映射,查看日志异常堆栈
- 无可用 MAC:确认 MAC 池是否已加载或是否存在未分配记录
- 权限不足:确认用户角色是否具备相应权限
- 查询无结果:检查分页参数与过滤条件
章节来源
结论
当前实现提供了完善的“设备信息修改记录”管理能力与 MAC 分配池的导入/统计功能,并通过权限控制、参数校验与操作日志保障基本安全与可追溯性。若需覆盖品牌、系统版本、构建号、内存配置等更广泛的设备信息修改场景,可在现有基础上扩展审批流、变更历史与字段级审计,以满足更高合规要求。
附录:API 接口文档
-
创建设备信息修改记录
- 方法与路径:POST /device/info-modify/create
- 权限:device:info-modify:create
- 请求体:DeviceInfoModifySaveReqVO
- 响应:Long(记录编号)
-
更新设备信息修改记录
- 方法与路径:PUT /device/info-modify/update
- 权限:device:info-modify:update
- 请求体:DeviceInfoModifySaveReqVO
- 响应:Boolean(true)
-
删除设备信息修改记录
- 方法与路径:DELETE /device/info-modify/delete?id=
{id} - 权限:device:info-modify:delete
- 参数:id(Long)
- 响应:Boolean(true)
- 方法与路径:DELETE /device/info-modify/delete?id=
-
获取设备信息修改记录
- 方法与路径:GET /device/info-modify/get?id=
{id} - 权限:device:info-modify:query
- 参数:id(Long)
- 响应:DeviceInfoModifyRespVO
- 方法与路径:GET /device/info-modify/get?id=
-
分页查询设备信息修改记录
- 方法与路径:GET /device/info-modify/page
- 权限:device:info-modify:query
- 查询参数:DeviceInfoModifyPageReqVO(支持按 allocatedMac、deviceMac、cpu、status、allocatedTime、createTime 过滤)
- 响应:PageResult
<DeviceInfoModifyRespVO>
-
导出设备信息修改记录 Excel
- 方法与路径:GET /device/info-modify/export-excel
- 权限:device:info-modify:export
- 查询参数:DeviceInfoModifyPageReqVO(不分页,一次性导出全部)
- 响应:Excel 文件
-
导入分配 MAC Excel
- 方法与路径:POST /device/info-modify/import/mac-pool
- 权限:device:info-modify:import
- 请求:multipart/form-data(文件列表)
- 响应:Integer(导入成功数量)
-
统计未分配 MAC 数量
- 方法与路径:GET /device/info-modify/count/mac-pool
- 权限:无需
- 响应:Long(未分配数量)
-
APP 设备信息修改(系统分配 MAC)
- 方法与路径:RPC/内部调用(系统自动分配)
- 请求:AppDeviceInfoModifyReqVO(包含 mac、cpu、可选 macs)
- 响应:AppDeviceInfoModifyReqVO(返回分配的 mac)
章节来源