feat(device): 重构应用图标静态资源路径并新增停止应用功能

- 将图标访问路径从 /api/v1/device/app_icon 迁移至 /static/app_icon,避免与业务 Controller 命名空间冲突,并添加 immutable 长缓存策略
- 新增 STOP_APP(39) 操作类型及 DeviceOpsController.stopApp 接口,支持强制停止应用
- 图标上传接口增加 appName 参数,支持应用名称上报与刷新,并做长度截断保护
- 图标锁定场景改用 BusinessException(APP_ICON_LOCKED) 替代 RuntimeException,设备端可据此识别终态不再重试
- 新增 /static/** 路径到安全白名单,允许 img 标签无 token 访问图标资源
- 同步更新数据库表结构注释及实体/VO 字段
This commit is contained in:
TongTongStudio
2026-08-05 21:52:37 +08:00
parent 157e708a5b
commit 5cc08a73ff
15 changed files with 114 additions and 15 deletions

View File

@@ -11,7 +11,8 @@
-- 约定:
-- - 同一 package_name 下 status=1当前生效的记录有且仅有一条
-- - 历史版本status=0仅用于展示与选取锁定不物理删除
-- - 图标文件按 {md5}.{ext} 内容寻址存储,访问路径由后端拼接
-- - 图标文件按 {md5}.{ext} 内容寻址存储,访问路径由后端拼接为 /static/app_icon/{md5}.{ext}
-- (该前缀与 WebMvcConfig 注册的静态资源映射一致;内容变更必然导致文件名变更,故可长缓存)
--
-- 部署规范:不直连库,由 DBA 执行;先 DROP 再 CREATE 确保结构与实体完全一致
-- DROP 会清空历史图标数据,可由设备端重新上报补齐)。
@@ -23,7 +24,8 @@ CREATE TABLE `app_icon`
(
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`package_name` VARCHAR(255) NOT NULL COMMENT '应用包名(全局唯一维度,同包名多版本共存)',
`icon_url` VARCHAR(500) NOT NULL COMMENT '图标访问地址(相对路径,如 /api/v1/device/app_icon/{md5}.png',
`app_name` VARCHAR(128) DEFAULT NULL COMMENT '应用名称(上报时的展示名,可为空;新版本上报时刷新',
`icon_url` VARCHAR(500) NOT NULL COMMENT '图标访问地址(相对路径,如 /static/app_icon/{md5}.png',
`icon_md5` VARCHAR(64) DEFAULT NULL COMMENT '图标文件MD5内容指纹用于去重与换图标检测',
`version` INT NOT NULL DEFAULT 1 COMMENT '版本号同包名内自增从1开始',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态1当前生效 0历史版本',