官网内容管理-后端接口开发

This commit is contained in:
eafonyang
2026-07-30 17:33:08 +08:00
parent b1c88fc5e6
commit e71d18b331
34 changed files with 4246 additions and 0 deletions
+95
View File
@@ -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='导航栏外观配置(单行)';
+108
View File
@@ -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 '关联产品 IDpage_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='产品参数规格项';
+47
View File
@@ -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='产品';
+42
View File
@@ -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='文章手动推荐关联';
+53
View File
@@ -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='素材-标签关联';
+39
View File
@@ -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
View File
@@ -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='技术支持页面配置(单行)';
+64
View File
@@ -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='表单提交记录';