Files
youlai-boot/sql/app_icon.sql
tongtongstudio 157e708a5b feat(device): 重构应用图标功能,新增停止应用操作
- 静态资源路径从 /api/v1/device/app_icon 迁移至 /static/app_icon,避免与 Controller 路径冲突,并添加 immutable 长缓存策略
- 数据库及实体新增 app_name 字段,支持图标上报时同步应用名称
- 图标锁定场景改用 BusinessException(APP_ICON_LOCKED) 明确业务拒绝码,设备端可识别为终态
- 新增 STOP_APP 操作类型及对应推送接口
- 安全配置放行 /static/** 静态资源路径
2026-08-05 21:49:27 +08:00

46 lines
2.8 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- 应用图标库表app_icon
--
-- 设计目标:
-- 1. 全局图标库同一应用包名package_name的所有设备共用图标按包名维度维护
-- 2. 历史版本同一包名可保存多个历史图标版本status 区分当前生效/历史),
-- 支持从历史版本中选取并锁定,规避三方 App 活动期换图标带广告等风险
-- 3. 锁定机制locked=1 的版本不可被设备端/管理端上传覆盖,需先解锁
-- 4. 内容指纹icon_md5 用于内容去重(同一图标不同包名复用同一文件)
--
-- 约定:
-- - 同一 package_name 下 status=1当前生效的记录有且仅有一条
-- - 历史版本status=0仅用于展示与选取锁定不物理删除
-- - 图标文件按 {md5}.{ext} 内容寻址存储,访问路径由后端拼接
--
-- 部署规范:不直连库,由 DBA 执行;先 DROP 再 CREATE 确保结构与实体完全一致
-- DROP 会清空历史图标数据,可由设备端重新上报补齐)。
-- =============================================================================
DROP TABLE IF EXISTS `app_icon`;
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',
`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历史版本',
`locked` TINYINT NOT NULL DEFAULT 0 COMMENT '是否锁定0未锁定 1已锁定锁定后不可上传覆盖',
`source` VARCHAR(20) NOT NULL DEFAULT 'device' COMMENT '图标来源device设备端上报 admin管理端上传',
`create_by` BIGINT DEFAULT NULL COMMENT '创建人ID',
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`update_by` BIGINT DEFAULT NULL COMMENT '更新人ID',
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除0未删 1已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_package_version` (`package_name`, `version`),
KEY `idx_package_status` (`package_name`, `status`),
KEY `idx_md5` (`icon_md5`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COMMENT = '应用图标库(含历史版本)';