-- H5 组件库系统建表脚本 -- 创建时间:2026-03-06 -- 1. 组件分类表 (两级分类) CREATE TABLE `h5_component_category` ( [id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37) BIGINT NOT NULL COMMENT '主键 ID', `parent_id` BIGINT NOT NULL DEFAULT 0 COMMENT '父分类 ID(0 为一级分类)', `name` VARCHAR(100) NOT NULL COMMENT '分类名称', `type` VARCHAR(50) NOT NULL COMMENT '分类类型 (text/image/extension/background/music)', `sort` INT NOT NULL DEFAULT 0 COMMENT '排序值', `icon` VARCHAR(500) DEFAULT NULL COMMENT '分类图标 URL', `description` VARCHAR(500) DEFAULT NULL COMMENT '分类描述', `is_system` TINYINT NOT NULL DEFAULT 0 COMMENT '是否系统预设 (1:是 0:否)', `create_time` BIGINT NOT NULL COMMENT '创建时间 (Unix 时间戳秒级)', `update_time` BIGINT DEFAULT NULL COMMENT '更新时间 (Unix 时间戳秒级)', PRIMARY KEY ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37)), INDEX `idx_parent_id` (`parent_id`), INDEX `idx_type` (`type`), INDEX `idx_sort` (`sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='H5 组件分类表'; -- 2. 组件表 CREATE TABLE `h5_component` ( [id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37) BIGINT NOT NULL COMMENT '主键 ID', `name` VARCHAR(200) NOT NULL COMMENT '组件名称', `type` VARCHAR(50) NOT NULL COMMENT '组件类型 (text/image/form/map/background/music)', `thumbnail_url` VARCHAR(500) DEFAULT NULL COMMENT '缩略图 URL', `preview_url` VARCHAR(500) DEFAULT NULL COMMENT '预览图 URL', `content` JSON NOT NULL COMMENT '组件完整配置数据 (JSON 格式)', `usage_count` BIGINT NOT NULL DEFAULT 0 COMMENT '使用次数统计', `like_count` BIGINT NOT NULL DEFAULT 0 COMMENT '点赞数量', `is_premium` TINYINT NOT NULL DEFAULT 0 COMMENT '是否付费组件 (1:是 0:否)', `is_system` TINYINT NOT NULL DEFAULT 0 COMMENT '是否系统预设 (1:是 0:否)', `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态 (1:启用 0:禁用)', `remark` VARCHAR(1000) DEFAULT NULL COMMENT '备注说明', `create_time` BIGINT NOT NULL COMMENT '创建时间 (Unix 时间戳秒级)', `update_time` BIGINT DEFAULT NULL COMMENT '更新时间 (Unix 时间戳秒级)', PRIMARY KEY ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37)), INDEX `idx_type` (`type`), INDEX `idx_status` (`status`), INDEX `idx_usage_count` (`usage_count`), INDEX `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='H5 组件表'; -- 3. 标签表 CREATE TABLE `h5_tag` ( [id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37) BIGINT NOT NULL COMMENT '主键 ID', `name` VARCHAR(100) NOT NULL COMMENT '标签名称', `type` VARCHAR(50) DEFAULT NULL COMMENT '标签适用类型,NULL 表示通用', `sort` INT NOT NULL DEFAULT 0 COMMENT '排序值', `is_hot` TINYINT NOT NULL DEFAULT 0 COMMENT '是否热门 (1:是 0:否)', `use_count` BIGINT NOT NULL DEFAULT 0 COMMENT '使用次数', `create_time` BIGINT NOT NULL COMMENT '创建时间 (Unix 时间戳秒级)', `update_time` BIGINT DEFAULT NULL COMMENT '更新时间 (Unix 时间戳秒级)', PRIMARY KEY ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37)), UNIQUE INDEX `uk_name` (`name`), INDEX `idx_type` (`type`), INDEX `idx_is_hot` (`is_hot`), INDEX `idx_sort` (`sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='H5 组件标签表'; -- 4. 组件分类关联表 (多对多) CREATE TABLE `h5_component_category_rel` ( [id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37) BIGINT NOT NULL COMMENT '主键 ID', `component_id` BIGINT NOT NULL COMMENT '组件 ID', `category_id` BIGINT NOT NULL COMMENT '分类 ID', `create_time` BIGINT NOT NULL COMMENT '创建时间 (Unix 时间戳秒级)', PRIMARY KEY ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37)), UNIQUE INDEX `uk_component_category` (`component_id`, `category_id`), INDEX `idx_category_id` (`category_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='H5 组件与分类关联表'; -- 5. 组件标签关联表 (多对多) CREATE TABLE `h5_component_tag_rel` ( [id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37) BIGINT NOT NULL COMMENT '主键 ID', `component_id` BIGINT NOT NULL COMMENT '组件 ID', `tag_id` BIGINT NOT NULL COMMENT '标签 ID', `create_time` BIGINT NOT NULL COMMENT '创建时间 (Unix 时间戳秒级)', PRIMARY KEY ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37)), UNIQUE INDEX `uk_component_tag` (`component_id`, `tag_id`), INDEX `idx_tag_id` (`tag_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='H5 组件与标签关联表'; -- 初始化数据 - 一级分类 (固定 5 大类) INSERT INTO `h5_component_category` ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37), `parent_id`, [name](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-common\ruoyi-common-translation\src\main\java\org\dromara\common\translation\core\TranslationInterface.java#L27-L27), `type`, `sort`, `icon`, `description`, `is_system`, `create_time`) VALUES (1, 0, '文字', 'text', 1, NULL, '文字类组件,包括标题、正文、艺术字等', 1, UNIX_TIMESTAMP()), (2, 0, '图片', 'image', 2, NULL, '图片类组件,包括产品图、背景图、装饰图等', 1, UNIX_TIMESTAMP()), (3, 0, '扩展', 'extension', 3, NULL, '扩展功能组件,包括表单、定位、微信头像等', 1, UNIX_TIMESTAMP()), (4, 0, '背景', 'background', 4, NULL, '背景类组件,包括渐变色、图案背景等', 1, UNIX_TIMESTAMP()), (5, 0, '音乐', 'music', 5, NULL, '音乐音频类组件', 1, UNIX_TIMESTAMP()); -- 初始化数据 - 二级分类示例 INSERT INTO `h5_component_category` ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37), `parent_id`, [name](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-common\ruoyi-common-translation\src\main\java\org\dromara\common\translation\core\TranslationInterface.java#L27-L27), `type`, `sort`, `is_system`, `create_time`) VALUES (101, 1, '标题文字', 'text', 1, 1, UNIX_TIMESTAMP()), (102, 1, '正文文本', 'text', 2, 1, UNIX_TIMESTAMP()), (103, 1, '艺术字', 'text', 3, 1, UNIX_TIMESTAMP()), (201, 2, '产品图片', 'image', 1, 1, UNIX_TIMESTAMP()), (202, 2, '装饰元素', 'image', 2, 1, UNIX_TIMESTAMP()), (301, 3, '表单组件', 'extension', 1, 1, UNIX_TIMESTAMP()), (302, 3, '地图定位', 'extension', 2, 1, UNIX_TIMESTAMP()), (303, 3, '社交组件', 'extension', 3, 1, UNIX_TIMESTAMP()); -- 初始化数据 - 标签示例 INSERT INTO `h5_tag` ([id](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-admin\src\test\java\org\dromara\test\DemoUnitTest.java#L37-L37), [name](file://D:\project\gitee\RuoYi-Vue-Plus\ruoyi-common\ruoyi-common-translation\src\main\java\org\dromara\common\translation\core\TranslationInterface.java#L27-L27), `type`, `sort`, `is_hot`, `create_time`) VALUES (1, '简约', NULL, 1, 1, UNIX_TIMESTAMP()), (2, '商务', NULL, 2, 1, UNIX_TIMESTAMP()), (3, '创意', NULL, 3, 1, UNIX_TIMESTAMP()), (4, '节日', NULL, 4, 0, UNIX_TIMESTAMP()), (5, '促销', NULL, 5, 1, UNIX_TIMESTAMP()), (6, '中国风', NULL, 6, 0, UNIX_TIMESTAMP()), (7, '科技感', NULL, 7, 1, UNIX_TIMESTAMP()), (8, '清新', NULL, 8, 0, UNIX_TIMESTAMP());