官网内容管理-后端接口开发
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
-- ============================================================
|
||||
-- 01_global_settings.sql
|
||||
-- 全局配置:站点基础信息、页脚、社交媒体、SEO 默认值、导航栏
|
||||
-- 对应 proposal.md 第 1、2 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 1.1 站点基础信息(单行记录)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_site_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`site_title` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '站点标题,全站 <title> 后缀',
|
||||
`favicon_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Favicon 素材路径',
|
||||
`logo_dark_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Logo 深色版(浅色区块上用)',
|
||||
`logo_light_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Logo 浅色版(深色区块上用)',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='站点基础信息(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 1.2 页脚配置(单行记录)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_footer_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`company_name` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '公司名称',
|
||||
`company_address` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '公司地址',
|
||||
`contact_phone` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '联系电话',
|
||||
`contact_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '联系邮箱',
|
||||
`copyright_text` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '版权信息',
|
||||
`icp_number` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'ICP 备案号',
|
||||
`police_number` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '公安备案号',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='页脚配置(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 1.3 社交媒体链接
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_social_links` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`platform` VARCHAR(30) NOT NULL COMMENT '平台标识: wechat / weibo / bilibili / youtube / facebook / instagram',
|
||||
`url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '主页链接(微信公众号时为空)',
|
||||
`qrcode_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '二维码图片路径(仅微信用)',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_platform` (`platform`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='社交媒体链接';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 1.4 全站 SEO 默认值(单行记录)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_seo_defaults` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`meta_description` VARCHAR(160) NOT NULL DEFAULT '' COMMENT '默认 Meta Description',
|
||||
`meta_keywords` VARCHAR(300) NOT NULL DEFAULT '' COMMENT '默认 Meta Keywords(逗号分隔)',
|
||||
`og_image_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '默认 OG 图片(1200×630px)',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='全站 SEO 默认值(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 2.1 导航入口
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_nav_items` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name_zh` VARCHAR(50) NOT NULL COMMENT '入口名称(中文)',
|
||||
`name_en` VARCHAR(50) NOT NULL COMMENT '入口名称(英文)',
|
||||
`link` VARCHAR(500) NOT NULL COMMENT '链接地址(站内路由或外部 URL)',
|
||||
`is_visible` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否显示',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排列顺序',
|
||||
`display_mode` VARCHAR(20) NOT NULL DEFAULT 'text' COMMENT '显示形式: text / icon_text / image / image_text',
|
||||
`icon_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '图标名(display_mode 含 icon 时)',
|
||||
`image_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '图片路径(display_mode 含 image 时)',
|
||||
`open_new_tab` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否新窗口打开',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='导航栏入口';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 2.3 导航栏外观配置(单行记录)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_nav_appearance` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`homepage_style` VARCHAR(20) NOT NULL DEFAULT 'transparent' COMMENT '首页导航风格: transparent / glass',
|
||||
`non_homepage_style` VARCHAR(20) NOT NULL DEFAULT 'transparent' COMMENT '非首页导航风格: transparent / glass',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='导航栏外观配置(单行)';
|
||||
@@ -0,0 +1,108 @@
|
||||
-- ============================================================
|
||||
-- 02_sections.sql
|
||||
-- 页面区块系统:Section 区块、特性列表、步骤列表、数据指标、参数规格
|
||||
-- 对应 proposal.md 第 3.1、4.3 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- Section 区块(通用,支持多种页面类型)
|
||||
-- page_type: homepage / product / about / support
|
||||
-- 首页和产品详情页可自由增删区块;关于我们/技术支持为固定布局
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_section_blocks` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`page_type` VARCHAR(20) NOT NULL COMMENT '所属页面: homepage / product / about / support',
|
||||
`product_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联产品 ID(page_type=product 时)',
|
||||
`layout` VARCHAR(30) NOT NULL COMMENT '布局类型: hero_split / hero_center / image_text / two_column / feature_grid / spec_showcase / video_showcase / scroll_narrative / cta_banner / spec_table',
|
||||
`theme` VARCHAR(10) NOT NULL DEFAULT 'light' COMMENT '主题: light / dark',
|
||||
`bg_type` VARCHAR(10) NOT NULL DEFAULT 'color' COMMENT '背景类型: color / image / video',
|
||||
`bg_value` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '背景值(颜色值 或 素材路径)',
|
||||
`overlay_enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否启用遮罩层',
|
||||
`overlay_opacity` DECIMAL(3,2) NOT NULL DEFAULT 0.00 COMMENT '遮罩透明度 0~1',
|
||||
`overline_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Overline 文本(中文)',
|
||||
`overline_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Overline 文本(英文)',
|
||||
`title_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '标题(中文)',
|
||||
`title_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '标题(英文)',
|
||||
`subtitle_zh` VARCHAR(300) NOT NULL DEFAULT '' COMMENT '副标题(中文)',
|
||||
`subtitle_en` VARCHAR(300) NOT NULL DEFAULT '' COMMENT '副标题(英文)',
|
||||
`content_zh` TEXT COMMENT '正文内容(中文,富文本)',
|
||||
`content_en` TEXT COMMENT '正文内容(英文,富文本)',
|
||||
`cta_primary_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '主 CTA 文案(中文)',
|
||||
`cta_primary_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '主 CTA 文案(英文)',
|
||||
`cta_primary_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '主 CTA 链接',
|
||||
`cta_secondary_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '次 CTA 文案(中文)',
|
||||
`cta_secondary_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '次 CTA 文案(英文)',
|
||||
`cta_secondary_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '次 CTA 链接',
|
||||
`media_url_zh` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '图片/媒体路径(中文)',
|
||||
`media_url_en` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '图片/媒体路径(英文)',
|
||||
`video_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '视频地址(Video Showcase 专用)',
|
||||
`config` JSON COMMENT '布局扩展配置(JSON),Feature Grid / Steps / Data Metrics 等',
|
||||
`is_visible` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否显示',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序(同页面内)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_page_type` (`page_type`, `sort_order`),
|
||||
KEY `idx_product_id` (`product_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='页面 Section 区块';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- config 字段 JSON 结构说明(不在数据库中约束,应用层校验)
|
||||
--
|
||||
-- Feature Grid (layout=feature_grid):
|
||||
-- {
|
||||
-- "features": [
|
||||
-- { "icon": "...", "title_zh": "...", "title_en": "...",
|
||||
-- "desc_zh": "...", "desc_en": "..." }
|
||||
-- ]
|
||||
-- }
|
||||
--
|
||||
-- Data Metrics (layout=spec_showcase):
|
||||
-- {
|
||||
-- "metrics": [
|
||||
-- { "value": "≥129.5", "unit": "dB", "label_zh": "信噪比", "label_en": "SNR" }
|
||||
-- ]
|
||||
-- }
|
||||
--
|
||||
-- Steps (layout=scroll_narrative):
|
||||
-- {
|
||||
-- "steps": [
|
||||
-- { "title_zh": "...", "title_en": "...",
|
||||
-- "desc_zh": "...", "desc_en": "...",
|
||||
-- "media_url": "..." }
|
||||
-- ]
|
||||
-- }
|
||||
-- -----------------------------------------------------------
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 4.3 产品参数规格(Spec Table 布局子表)
|
||||
-- 参数分组,挂载在 section_blocks 上
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_spec_groups` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`section_block_id` BIGINT UNSIGNED NOT NULL COMMENT '所属 Section 区块 ID',
|
||||
`title_zh` VARCHAR(100) NOT NULL COMMENT '分组标题(中文)',
|
||||
`title_en` VARCHAR(100) NOT NULL COMMENT '分组标题(英文)',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '分组排序',
|
||||
`default_visible` INT NOT NULL DEFAULT 5 COMMENT '收起状态下默认显示项数',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_section_block` (`section_block_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='产品参数规格分组';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 参数项,挂载在 spec_groups 上
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_spec_items` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`spec_group_id` BIGINT UNSIGNED NOT NULL COMMENT '所属参数分组 ID',
|
||||
`name_zh` VARCHAR(100) NOT NULL COMMENT '参数名称(中文)',
|
||||
`name_en` VARCHAR(100) NOT NULL COMMENT '参数名称(英文)',
|
||||
`value_zh` VARCHAR(500) NOT NULL COMMENT '参数值(中文)',
|
||||
`value_en` VARCHAR(500) NOT NULL COMMENT '参数值(英文)',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '参数排序',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_spec_group` (`spec_group_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='产品参数规格项';
|
||||
@@ -0,0 +1,47 @@
|
||||
-- ============================================================
|
||||
-- 03_products.sql
|
||||
-- 产品管理:产品系列、产品 CRUD
|
||||
-- 对应 proposal.md 第 4.1、4.2 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 4.1 产品系列
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_product_series` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name_zh` VARCHAR(100) NOT NULL COMMENT '系列名称(中文)',
|
||||
`name_en` VARCHAR(100) NOT NULL COMMENT '系列名称(英文)',
|
||||
`overline` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '系列英文名(Overline),如 DMP SERIES',
|
||||
`subtitle_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '系列副标题(中文)',
|
||||
`subtitle_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '系列副标题(英文)',
|
||||
`cover_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '系列封面图路径',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '排列顺序',
|
||||
`is_visible` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否显示',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_sort` (`sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='产品系列';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 4.2 产品
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_products` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`series_id` BIGINT UNSIGNED NOT NULL COMMENT '所属产品系列 ID',
|
||||
`name_zh` VARCHAR(100) NOT NULL COMMENT '产品名称(中文)',
|
||||
`name_en` VARCHAR(100) NOT NULL COMMENT '产品名称(英文)',
|
||||
`slug` VARCHAR(100) NOT NULL COMMENT 'URL 路径标识,如 dmp-a8',
|
||||
`intro_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '产品简介(中文,≤50字)',
|
||||
`intro_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '产品简介(英文)',
|
||||
`cover_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '产品封面图路径(4:3)',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '同系列内排序',
|
||||
`is_visible` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否显示',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_slug` (`slug`),
|
||||
KEY `idx_series` (`series_id`, `sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='产品';
|
||||
@@ -0,0 +1,42 @@
|
||||
-- ============================================================
|
||||
-- 04_news.sql
|
||||
-- 新闻管理:文章 CRUD、相关推荐
|
||||
-- 对应 proposal.md 第 5 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 5.1 新闻文章
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_news_articles` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title_zh` VARCHAR(200) NOT NULL COMMENT '文章标题(中文)',
|
||||
`title_en` VARCHAR(200) NOT NULL COMMENT '文章标题(英文)',
|
||||
`slug` VARCHAR(200) NOT NULL COMMENT 'URL 路径标识,如 new-product-launch',
|
||||
`summary_zh` VARCHAR(300) NOT NULL DEFAULT '' COMMENT '文章摘要(中文,≤100字)',
|
||||
`summary_en` VARCHAR(300) NOT NULL DEFAULT '' COMMENT '文章摘要(英文)',
|
||||
`cover_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '封面图路径(16:9)',
|
||||
`content_zh` MEDIUMTEXT COMMENT '正文内容(中文,富文本)',
|
||||
`content_en` MEDIUMTEXT COMMENT '正文内容(英文,富文本)',
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'draft' COMMENT '发布状态: draft / published / offline',
|
||||
`published_at` DATETIME DEFAULT NULL COMMENT '发布时间(可为未来时间,定时发布)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_slug` (`slug`),
|
||||
KEY `idx_status` (`status`, `published_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='新闻文章';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 5.2 文章相关推荐(手动指定,最多 3 篇)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_news_recommendations` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`article_id` BIGINT UNSIGNED NOT NULL COMMENT '文章 ID',
|
||||
`recommended_id` BIGINT UNSIGNED NOT NULL COMMENT '推荐文章 ID',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '推荐排序',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_article_recommended` (`article_id`, `recommended_id`),
|
||||
KEY `idx_article` (`article_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='文章手动推荐关联';
|
||||
@@ -0,0 +1,53 @@
|
||||
-- ============================================================
|
||||
-- 05_media.sql
|
||||
-- 素材库:媒体资源、标签
|
||||
-- 对应 proposal.md 第 6 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 6.2 素材库
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_media` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`filename` VARCHAR(255) NOT NULL COMMENT '原始文件名',
|
||||
`file_path` VARCHAR(500) NOT NULL COMMENT '存储路径(相对 uploads/)',
|
||||
`file_type` VARCHAR(10) NOT NULL COMMENT '类型: image / video / file',
|
||||
`mime_type` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'MIME 类型',
|
||||
`file_size` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
|
||||
`width` INT DEFAULT NULL COMMENT '图片/视频宽度(px)',
|
||||
`height` INT DEFAULT NULL COMMENT '图片/视频高度(px)',
|
||||
`category` VARCHAR(20) NOT NULL DEFAULT 'other' COMMENT '分类: product / banner / news / brand / video / document / other',
|
||||
`thumbnail_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '缩略图路径(300px 宽)',
|
||||
`webp_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'WebP 版本路径(图片自动生成)',
|
||||
`ref_count` INT NOT NULL DEFAULT 0 COMMENT '引用计数',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`deleted_at` DATETIME DEFAULT NULL COMMENT '软删除时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_category` (`category`),
|
||||
KEY `idx_filename` (`filename`),
|
||||
KEY `idx_created` (`created_at`),
|
||||
KEY `idx_deleted` (`deleted_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='素材库';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 素材标签
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_media_tags` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`tag_name` VARCHAR(50) NOT NULL COMMENT '标签名',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_tag_name` (`tag_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='素材标签';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 素材-标签多对多关联
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_media_tag_map` (
|
||||
`media_id` BIGINT UNSIGNED NOT NULL,
|
||||
`tag_id` BIGINT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`media_id`, `tag_id`),
|
||||
KEY `idx_tag` (`tag_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='素材-标签关联';
|
||||
@@ -0,0 +1,39 @@
|
||||
-- ============================================================
|
||||
-- 06_i18n.sql
|
||||
-- 多语言管理:翻译词条
|
||||
-- 对应 proposal.md 第 8.3 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 翻译词条(系统固定 UI 文案的 key-value 翻译)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_i18n_entries` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`dict_key` VARCHAR(100) NOT NULL COMMENT '词条 Key,如 nav.products',
|
||||
`value_zh` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '中文值',
|
||||
`value_en` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '英文值',
|
||||
`description` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '词条说明(仅供 admin 参考)',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_key` (`dict_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='翻译词条(i18n key-value)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 预置词条数据
|
||||
-- -----------------------------------------------------------
|
||||
INSERT INTO `www_i18n_entries` (`dict_key`, `value_zh`, `value_en`, `description`) VALUES
|
||||
('nav.products', '产品', 'Products', '导航入口'),
|
||||
('nav.news', '新闻', 'News', '导航入口'),
|
||||
('nav.about', '关于我们', 'About Us', '导航入口'),
|
||||
('nav.support', '技术支持', 'Support', '导航入口'),
|
||||
('btn.learn_more', '了解更多', 'Learn More', '通用按钮'),
|
||||
('btn.explore', '探索产品', 'Explore', '通用按钮'),
|
||||
('btn.contact', '联系我们', 'Contact Us', '通用按钮'),
|
||||
('btn.load_more', '加载更多', 'Load More', '列表页按钮'),
|
||||
('btn.view_all', '查看全部参数', 'View All Specs', '参数规格展开'),
|
||||
('btn.collapse', '收起参数', 'Collapse', '参数规格收起'),
|
||||
('label.read_more', '阅读更多', 'Read More', '新闻卡片链接'),
|
||||
('label.breadcrumb_home', '首页', 'Home', '面包屑'),
|
||||
('label.breadcrumb_products', '产品中心', 'Products', '面包屑'),
|
||||
('footer.copyright', '© {year} 乐笙. 保留所有权利.', '© {year} Luxsin. All rights reserved.', '页脚版权')
|
||||
ON DUPLICATE KEY UPDATE `description` = VALUES(`description`);
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
-- ============================================================
|
||||
-- 07_pages.sql
|
||||
-- 页面级配置:SEO 覆盖、产品列表页、新闻列表页、关于我们、技术支持
|
||||
-- 对应 proposal.md 第 3.3~3.7、7 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 7.1 页面级 SEO 配置
|
||||
-- page_type: home / products / product_detail / news / news_detail / about / support
|
||||
-- 产品详情页和新闻详情页通过 entity_id 关联具体产品/文章
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_page_seo` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`page_type` VARCHAR(20) NOT NULL COMMENT '页面类型: home / products / product_detail / news / news_detail / about / support',
|
||||
`entity_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联实体 ID(产品 ID 或文章 ID,通用页面时为 NULL)',
|
||||
`meta_title` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '自定义 <title>(空则自动生成)',
|
||||
`meta_description` VARCHAR(160) NOT NULL DEFAULT '' COMMENT 'Meta Description(空则继承全局默认)',
|
||||
`meta_keywords` VARCHAR(300) NOT NULL DEFAULT '' COMMENT 'Meta Keywords(空则继承全局默认)',
|
||||
`og_image_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'OG 图片(空则继承全局默认)',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_page_entity` (`page_type`, `entity_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='页面级 SEO 配置';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 3.3 产品列表页配置(单行)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_product_list_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`hero_title_zh` VARCHAR(100) NOT NULL DEFAULT '产品中心' COMMENT 'Page Hero 标题(中文)',
|
||||
`hero_title_en` VARCHAR(100) NOT NULL DEFAULT 'Products' COMMENT 'Page Hero 标题(英文)',
|
||||
`hero_subtitle_zh` VARCHAR(200) NOT NULL DEFAULT '探索高保真音频设备,寻找您的理想之声' COMMENT '副标题(中文)',
|
||||
`hero_subtitle_en` VARCHAR(200) NOT NULL DEFAULT 'Explore Hi-Fi audio devices, find your ideal sound' COMMENT '副标题(英文)',
|
||||
`hero_overline_zh` VARCHAR(50) NOT NULL DEFAULT 'LUXSIN PRODUCTS' COMMENT 'Overline(中文)',
|
||||
`hero_overline_en` VARCHAR(50) NOT NULL DEFAULT 'LUXSIN PRODUCTS' COMMENT 'Overline(英文)',
|
||||
`hero_bg_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Page Hero 背景图',
|
||||
`max_columns` TINYINT NOT NULL DEFAULT 3 COMMENT '每行最大产品数: 2 / 3 / 4',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='产品列表页配置(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 3.4 新闻列表页配置(单行)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_news_list_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`hero_title_zh` VARCHAR(100) NOT NULL DEFAULT '新闻中心' COMMENT 'Page Hero 标题(中文)',
|
||||
`hero_title_en` VARCHAR(100) NOT NULL DEFAULT 'News' COMMENT 'Page Hero 标题(英文)',
|
||||
`hero_subtitle_zh` VARCHAR(200) NOT NULL DEFAULT '获取乐笙最新资讯与行业动态' COMMENT '副标题(中文)',
|
||||
`hero_subtitle_en` VARCHAR(200) NOT NULL DEFAULT 'Get the latest Luxsin news and industry insights' COMMENT '副标题(英文)',
|
||||
`hero_bg_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Page Hero 背景图',
|
||||
`page_size` INT NOT NULL DEFAULT 9 COMMENT '每页显示数量',
|
||||
`pagination_mode` VARCHAR(20) NOT NULL DEFAULT 'paginator' COMMENT '分页方式: paginator / load_more',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='新闻列表页配置(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 3.6 关于我们页面配置(单行)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_about_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
-- Page Hero
|
||||
`hero_title_zh` VARCHAR(100) NOT NULL DEFAULT '关于我们' COMMENT 'Hero 标题(中文)',
|
||||
`hero_title_en` VARCHAR(100) NOT NULL DEFAULT 'About Us' COMMENT 'Hero 标题(英文)',
|
||||
`hero_subtitle_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Hero 副标题(中文)',
|
||||
`hero_subtitle_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Hero 副标题(英文)',
|
||||
`hero_bg_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Hero 背景图',
|
||||
-- Section 1: 品牌故事
|
||||
`s1_title_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Section 1 标题(中文)',
|
||||
`s1_title_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Section 1 标题(英文)',
|
||||
`s1_content_zh` TEXT COMMENT 'Section 1 正文(中文,富文本)',
|
||||
`s1_content_en` TEXT COMMENT 'Section 1 正文(英文,富文本)',
|
||||
`s1_image_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Section 1 配图',
|
||||
`s1_cta_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Section 1 CTA(中文)',
|
||||
`s1_cta_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Section 1 CTA(英文)',
|
||||
`s1_cta_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Section 1 CTA 链接',
|
||||
-- Section 2: 价值观/团队
|
||||
`s2_title_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Section 2 标题(中文)',
|
||||
`s2_title_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Section 2 标题(英文)',
|
||||
`s2_features` JSON COMMENT '特性列表 JSON: [{icon, title_zh, title_en, desc_zh, desc_en}]',
|
||||
-- Section 3: CTA
|
||||
`s3_title_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Section 3 标题(中文)',
|
||||
`s3_title_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Section 3 标题(英文)',
|
||||
`s3_cta_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Section 3 CTA(中文)',
|
||||
`s3_cta_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Section 3 CTA(英文)',
|
||||
`s3_cta_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Section 3 CTA 链接',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='关于我们页面配置(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 3.7 技术支持页面配置(单行)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_support_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
-- Page Hero
|
||||
`hero_title_zh` VARCHAR(100) NOT NULL DEFAULT '技术支持' COMMENT 'Hero 标题(中文)',
|
||||
`hero_title_en` VARCHAR(100) NOT NULL DEFAULT 'Support' COMMENT 'Hero 标题(英文)',
|
||||
`hero_subtitle_zh` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Hero 副标题(中文)',
|
||||
`hero_subtitle_en` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Hero 副标题(英文)',
|
||||
`hero_bg_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'Hero 背景图',
|
||||
-- Section 1: 常见问题分类
|
||||
`s1_faq_categories` JSON COMMENT 'FAQ 分类 JSON: [{icon, name_zh, name_en, desc_zh, desc_en}]',
|
||||
-- Section 2: 下载中心
|
||||
`s2_downloads` JSON COMMENT '下载资源 JSON: [{name_zh, name_en, file_url, version}]',
|
||||
-- Section 3: 联系方式
|
||||
`s3_contact` JSON COMMENT '联系信息 JSON: [{title_zh, title_en, info_zh, info_en, image_url}]',
|
||||
-- Section 4: CTA
|
||||
`s4_cta_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'CTA 按钮(中文)',
|
||||
`s4_cta_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'CTA 按钮(英文)',
|
||||
`s4_cta_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'CTA 链接',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='技术支持页面配置(单行)';
|
||||
@@ -0,0 +1,64 @@
|
||||
-- ============================================================
|
||||
-- 08_contact_form.sql
|
||||
-- 联系表单:全局配置、字段配置、提交记录
|
||||
-- 对应 proposal.md 第 9 节
|
||||
-- ============================================================
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 9.1 表单全局配置(单行)
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_form_settings` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`recipient_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '通知接收邮箱',
|
||||
`success_message_zh` VARCHAR(300) NOT NULL DEFAULT '感谢您的留言,我们会尽快回复!' COMMENT '提交成功提示(中文)',
|
||||
`success_message_en` VARCHAR(300) NOT NULL DEFAULT 'Thank you for your message. We will get back to you soon!' COMMENT '提交成功提示(英文)',
|
||||
`error_message_zh` VARCHAR(300) NOT NULL DEFAULT '提交失败,请稍后重试。' COMMENT '提交失败提示(中文)',
|
||||
`error_message_en` VARCHAR(300) NOT NULL DEFAULT 'Submission failed. Please try again later.' COMMENT '提交失败提示(英文)',
|
||||
`cooldown_seconds` INT NOT NULL DEFAULT 60 COMMENT '防重复提交间隔(秒)',
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='表单全局配置(单行)';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 9.2 表单字段配置
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_form_fields` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name_zh` VARCHAR(50) NOT NULL COMMENT '字段名称(中文)',
|
||||
`name_en` VARCHAR(50) NOT NULL COMMENT '字段名称(英文)',
|
||||
`field_type` VARCHAR(20) NOT NULL COMMENT '字段类型: text / textarea / email / phone / select',
|
||||
`is_required` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否必填',
|
||||
`placeholder_zh` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '占位文本(中文)',
|
||||
`placeholder_en` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '占位文本(英文)',
|
||||
`options_json` JSON DEFAULT NULL COMMENT '下拉选项 JSON: [{label_zh, label_en, value}](仅 select 类型)',
|
||||
`sort_order` INT NOT NULL DEFAULT 0 COMMENT '字段排序',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='表单字段配置';
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 预置默认表单字段
|
||||
-- -----------------------------------------------------------
|
||||
INSERT INTO `www_form_fields` (`name_zh`, `name_en`, `field_type`, `is_required`, `placeholder_zh`, `placeholder_en`, `sort_order`) VALUES
|
||||
('姓名', 'Name', 'text', 1, '请输入您的姓名', 'Your name', 1),
|
||||
('邮箱', 'Email', 'email', 1, '请输入您的邮箱', 'Your email', 2),
|
||||
('电话', 'Phone', 'phone', 0, '请输入您的电话', 'Your phone', 3),
|
||||
('咨询内容', 'Message', 'textarea', 1, '请输入您的咨询内容', 'Your message', 4)
|
||||
ON DUPLICATE KEY UPDATE `name_zh` = VALUES(`name_zh`);
|
||||
|
||||
-- -----------------------------------------------------------
|
||||
-- 表单提交记录
|
||||
-- -----------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `www_form_submissions` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`form_data` JSON NOT NULL COMMENT '提交数据 JSON: {field_name: value}',
|
||||
`visitor_ip` VARCHAR(45) NOT NULL DEFAULT '' COMMENT '访客 IP',
|
||||
`user_agent` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '浏览器 UA',
|
||||
`is_read` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已读(admin 端标记)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_created` (`created_at`),
|
||||
KEY `idx_read` (`is_read`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='表单提交记录';
|
||||
Reference in New Issue
Block a user