设备管理注册心跳远程指令屏幕是怎么活起来的
上篇搞定了权限体系。这篇开始做第一个业务模块——设备管理。设备是整个系统的第一环。没有设备注册进来后面素材、节目、统计都无从谈起。设备有哪些属性回到之前画的表结构CREATETABLEt_device(idBIGINTPRIMARYKEY,device_noVARCHAR(50)NOTNULL,-- 设备编号唯一nameVARCHAR(100)NOTNULL,-- 设备名称modelVARCHAR(50),-- double_side/stand/wallgroup_idBIGINT,-- 所属分组resolutionVARCHAR(20)DEFAULT1920x1080,layout_templateVARCHAR(50)DEFAULTsingle,-- 分屏布局statusVARCHAR(20)DEFAULToffline,-- online/offline/errorip_addressVARCHAR(50),last_heartbeatDATETIME,...);每个字段都有它的来由device_no设备唯一编号相当于身份证。心跳上报和节目下发都靠它model双面屏、立式屏、壁挂屏——不同型号播放器适配不同layout_template单屏、左右分屏、上下分屏、三区——影响素材怎么排status不在线的设备不发节目避免浪费流量last_heartbeat判断在线的依据——超过 5 分钟没心跳就算离线设备分组的取舍要不要做设备分组我想了想——如果只有三五台设备分组是多余的。但如果一个客户有 20 家门店每家店 2 块屏40 台设备不分组根本管不过来。所以我做了分组但做得极简t_device_group就三个字段——名称、描述、创建更新时间。不搞嵌套分组不搞继承关系一级分组够用。心跳机制设备怎么上报心跳一条 POST 请求POST /api/v1/devices/{deviceNo}/heartbeat后端更新last_heartbeat时间。前端列表页根据心跳判断在线状态5 分钟内有心跳 → 在线超过 5 分钟 → ⚪ 离线超过 30 分钟且之前在线 → 异常这个接口是公开的——不需要登录。设备端播放器没有用户概念它只管上报。远程指令有时候需要远程操作设备——重启、关机、调音量、调亮度。这些叫指令PostMapping(/{id}/command)RequirePermission(device:command)publicApiResultVoidsendCommand(PathVariableLongid,RequestBodyCommandDTOdto){deviceService.sendCommand(id,dto);returnApiResult.success();}指令发出去后状态流转是pending → sent → success/failed设备下次心跳时拉取待执行指令执行完上报结果。不是实时的——但够用了。Controller 全貌50 个 Java 文件里DeviceController 是最大的一个GET /api/v1/devices → 列表分页 搜索 POST /api/v1/devices → 新增设备 GET /api/v1/devices/{id} → 设备详情 PUT /api/v1/devices/{id} → 编辑设备 DELETE /api/v1/devices/{id} → 删除设备 GET /api/v1/devices/{id}/commands → 指令历史 POST /api/v1/devices/{id}/command → 发送指令 GET /api/v1/devices/groups → 分组列表 POST /api/v1/devices/groups → 新建分组 DELETE /api/v1/devices/groups/{id} → 删除分组 GET /api/v1/devices/{deviceNo}/current-program → [公开] 拉取当前节目 POST /api/v1/devices/{deviceNo}/heartbeat → [公开] 心跳上报 POST /api/v1/devices/{deviceNo}/play-log → [公开] 播放日志认证接口 6 个公开接口 3 个。每个认证接口都标了RequirePermission——viewer 只能看列表operator 能增能改admin 能删。到这里设备管理模块就完成了。设备能注册、有心跳、能分组、能远程发命令。下篇做素材管理——上传图片视频、分类管理。素材是整个系统里文件最多的模块。关于作者无羡独立开发者全栈工程师专注 AI 应用与微服务架构。 分类技术复盘 个人博客 — 更多技术文章✨ 开发者福利整理 — 云服务资源汇总 软件工坊 — 我的技术分享 个人门户 — 独立开发作品全集

相关新闻

PhotoMath Pro:对着数学题拍张照,答案和解题步骤全有了

PhotoMath Pro:对着数学题拍张照,答案和解题步骤全有了

辅导孩子作业时,一道方程算半天,最后发现第一步就错了;自学高数,课本上的步骤跳得太多,根本看不懂怎么推导的;考试前想快速验证自己的解题过程,身边却找不到人对答案——如果你也经历过这些&quo…

2026/10/4 9:30:55 阅读更多 →
三维建模中阵列操作的核心:方向向量详解与实战避坑指南

三维建模中阵列操作的核心:方向向量详解与实战避坑指南

1. 项目概述:从“方向”到“向量”的思维转换 在三维建模、计算机图形学、游戏开发乃至工业设计领域,“阵列”是一个高频操作。无论是为了快速复制一排路灯、一列螺栓,还是生成复杂的几何图案,阵列工具都不可或缺。然而&#xff0…

2026/10/11 8:10:16 阅读更多 →
Unity动画系统进阶:从Animation到Animator状态机完整工作流解析

Unity动画系统进阶:从Animation到Animator状态机完整工作流解析

1. 项目概述:从Animation到Animator的进化之路 如果你是从Unity 4.x甚至更早版本一路用过来的老开发者,看到项目里同时存在 Animation 组件和 Animator 组件,心里大概会涌起一股复杂的怀旧感。十多年前,我们给一个门做开关动画…

2026/10/12 12:24:31 阅读更多 →

最新新闻

2026年最新--区块链运营岗面试题库(100题)

2026年最新--区块链运营岗面试题库(100题)

一、行业趋势与运营思维(1-10题) 1. 2026年加密行业营销的核心趋势有哪些?请结合“用户质量优先”的转变,说明运营策略应如何调整。 2026年加密营销的7大核心趋势涵盖绩效营销、内容创作、渠道多元化、活动体验、激励机制以及AI驱动的运营。最关键的转变是:Fintech和Web…

2026/10/14 15:17:11 阅读更多 →
C# GPS定位到地图显示:NMEA解析、坐标转换与GMap.NET实战

C# GPS定位到地图显示:NMEA解析、坐标转换与GMap.NET实战

简介:面向C#开发者和GIS初学者的GPS定位与地图综合示例源码。项目基于.NET框架,展示如何使用GeoCoordinateWatcher获取NMEA GPS数据,并通过Bing Maps控件实现地图加载、缩放、平移及城市名地理编码定位,涵盖地图事件处理、UI布局、…

2026/10/14 15:17:11 阅读更多 →
HTML表单与表格实战:学生注册表单与课程表制作全解析

HTML表单与表格实战:学生注册表单与课程表制作全解析

做了几年前端开发,接手过不少新人带教和作业评审。说句实在话,不管后来技术栈换成React还是Vue,凡是能把HTML里的表单和表格玩明白的,上手业务系统的效率往往都不会太差。这两块看起来基础,里面的门道却一点也不少——…

2026/10/14 15:17:11 阅读更多 →
工业AI检测项目为何死于“全产线覆盖”?

工业AI检测项目为何死于“全产线覆盖”?

1. 那句“全产线覆盖”,到底杀死了什么我做了七八年机器视觉和上位机开发,前前后后参与过二十多个工业AI项目,从服装检测、3C外观检、到食品包装异物识别都碰过。如果让我总结这些项目失败的最大共性,不是算法不行,不是…

2026/10/14 15:17:11 阅读更多 →
微信小程序商城定制怎么落地?选型要点全拆解

微信小程序商城定制怎么落地?选型要点全拆解

其实, 微信小程序商城定制这事儿, 说起来就是搭建一套能够实现商品售卖、会员管理以及营销推广的线上商业闭环, 不要被“定制”这两个字给吓到了, 要知道现在的SaaS平台已经把所有的基础功能都变成了现成的模块状态, 这些模块大概占据了整体功能总量的百分之八十的比例, 因此, …

2026/10/14 15:17:11 阅读更多 →
fast-check 4.7.0 深度解析:stringMatching 支持 Unicode 属性转义与可逆的 json 生成器

fast-check 4.7.0 深度解析:stringMatching 支持 Unicode 属性转义与可逆的 json 生成器

开发工具测试 【免费下载链接】fast-check Property based testing framework for JavaScript (like QuickCheck) written in TypeScript 项目地址: https://gitcode.com/gh_mirrors/fa/fast-check 点击查看 免费下载 fast-check 4.7.0 是一个围绕"让生成器更…

2026/10/14 15:16:08 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →