-- ================================================================
-- Wuhan Saga official website - Schema Initialization
-- MySQL 5.7+ / 8.0+ | utf8mb4 | InnoDB
-- Spring Boot will execute this file first, then data.sql
-- ================================================================

-- 必须用 UTF-8 连接执行；否则中文会变成乱码
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

-- ================================================================
-- 系统用户表
-- ================================================================
CREATE TABLE IF NOT EXISTS sys_user (
  user_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  username VARCHAR(64) NOT NULL COMMENT '用户名',
  password VARCHAR(200) NOT NULL COMMENT '密码(BCrypt)',
  nickname VARCHAR(100) COMMENT '昵称',
  avatar VARCHAR(255) COMMENT '头像路径',
  email VARCHAR(100) COMMENT '邮箱',
  phone VARCHAR(20) COMMENT '手机号',
  status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态：0禁用 1正常',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (user_id),
  UNIQUE KEY uk_sys_user_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户表';

-- ================================================================
-- 公司信息表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_company_info (
  company_info_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  name_zh VARCHAR(200) NOT NULL COMMENT '公司名称（中文）',
  name_en VARCHAR(200) NOT NULL COMMENT '公司名称（英文）',
  established_year INT NOT NULL COMMENT '成立年份',
  business_scope_zh TEXT COMMENT '主营业务（中文）',
  business_scope_en TEXT COMMENT '主营业务（英文）',
  core_data_zh TEXT COMMENT '核心数据（中文）',
  core_data_en TEXT COMMENT '核心数据（英文）',
  technical_source_zh TEXT COMMENT '技术来源（中文）',
  technical_source_en TEXT COMMENT '技术来源（英文）',
  markets VARCHAR(500) COMMENT '覆盖市场（逗号分隔）',
  vision_zh TEXT COMMENT '企业愿景（中文）',
  vision_en TEXT COMMENT '企业愿景（英文）',
  mission_zh TEXT COMMENT '企业使命（中文）',
  mission_en TEXT COMMENT '企业使命（英文）',
  values_zh VARCHAR(500) COMMENT '核心价值观（中文）',
  values_en VARCHAR(500) COMMENT '核心价值观（英文）',
  spirit_zh VARCHAR(200) COMMENT '企业精神（中文）',
  spirit_en VARCHAR(200) COMMENT '企业精神（英文）',
  phone VARCHAR(50) COMMENT '联系电话',
  email VARCHAR(100) COMMENT '电子邮箱',
  address_zh VARCHAR(500) COMMENT '公司地址（中文）',
  address_en VARCHAR(500) COMMENT '公司地址（英文）',
  website VARCHAR(200) COMMENT '官网地址',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (company_info_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公司信息';

-- ================================================================
-- 联系方式表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_contact (
  contact_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  company_info_id BIGINT NOT NULL COMMENT '关联公司',
  phone VARCHAR(50) COMMENT '电话',
  fax VARCHAR(50) COMMENT '传真',
  email VARCHAR(100) COMMENT '邮箱',
  address_zh VARCHAR(500) COMMENT '地址（中文）',
  address_en VARCHAR(500) COMMENT '地址（英文）',
  zip_code VARCHAR(20) COMMENT '邮编',
  map_coordinates VARCHAR(100) COMMENT '地图坐标',
  business_hours_zh VARCHAR(200) COMMENT '营业时间（中文）',
  business_hours_en VARCHAR(200) COMMENT '营业时间（英文）',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (contact_id),
  KEY idx_f_contact_company (company_info_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='联系方式';

-- ================================================================
-- 关于我们表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_about (
  about_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  company_info_id BIGINT NOT NULL COMMENT '关联公司',
  section_type VARCHAR(50) NOT NULL COMMENT '内容类型',
  title_zh VARCHAR(200) NOT NULL COMMENT '标题（中文）',
  title_en VARCHAR(200) NOT NULL COMMENT '标题（英文）',
  content_zh TEXT COMMENT '内容（中文）',
  content_en TEXT COMMENT '内容（英文）',
  image_path VARCHAR(255) COMMENT '配图相对路径',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (about_id),
  KEY idx_f_about_company (company_info_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='关于我们';

-- ================================================================
-- 轮播图表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_banner (
  banner_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  company_info_id BIGINT NOT NULL DEFAULT 1 COMMENT '关联公司',
  image_path VARCHAR(255) NOT NULL COMMENT '图片相对路径',
  title_zh VARCHAR(200) NOT NULL COMMENT '标题（中文）',
  title_en VARCHAR(200) NOT NULL COMMENT '标题（英文）',
  subtitle_zh VARCHAR(500) COMMENT '副标题（中文）',
  subtitle_en VARCHAR(500) COMMENT '副标题（英文）',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (banner_id),
  KEY idx_f_banner_company (company_info_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='轮播图';

-- ================================================================
-- 车间展示表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_workshop (
  workshop_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  company_info_id BIGINT NOT NULL COMMENT '关联公司',
  workshop_type VARCHAR(50) NOT NULL COMMENT '车间类型',
  name_zh VARCHAR(200) NOT NULL COMMENT '车间名称（中文）',
  name_en VARCHAR(200) NOT NULL COMMENT '车间名称（英文）',
  description_zh TEXT COMMENT '描述（中文）',
  description_en TEXT COMMENT '描述（英文）',
  equipment_list_zh TEXT COMMENT '设备清单（中文）',
  equipment_list_en TEXT COMMENT '设备清单（英文）',
  area_size VARCHAR(50) COMMENT '占地面积',
  image_path VARCHAR(255) COMMENT '配图相对路径',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (workshop_id),
  KEY idx_f_workshop_company (company_info_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车间展示';

-- ================================================================
-- 核心技术表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_core_technology (
  core_technology_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  name_zh VARCHAR(200) NOT NULL COMMENT '技术名称（中文）',
  name_en VARCHAR(200) NOT NULL COMMENT '技术名称（英文）',
  description_zh TEXT COMMENT '技术描述（中文）',
  description_en TEXT COMMENT '技术描述（英文）',
  advantages_zh TEXT COMMENT '技术优势（中文）',
  advantages_en TEXT COMMENT '技术优势（英文）',
  icon_class VARCHAR(100) COMMENT '图标类名',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (core_technology_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='核心技术';

-- ================================================================
-- 产品分类表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_product_category (
  product_category_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  name_zh VARCHAR(100) NOT NULL COMMENT '分类名称（中文）',
  name_en VARCHAR(100) NOT NULL COMMENT '分类名称（英文）',
  module_type VARCHAR(20) NOT NULL DEFAULT 'product_line' COMMENT '模块类型 product_line/equipment/spare_part',
  parent_id BIGINT NULL COMMENT '父分类ID',
  icon_class VARCHAR(100) COMMENT '图标类名',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (product_category_id),
  KEY idx_f_product_category_parent (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品分类';

-- ================================================================
-- 成套机组产品表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_product_line (
  product_line_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  category_id BIGINT NOT NULL COMMENT '所属分类',
  name_zh VARCHAR(200) NOT NULL COMMENT '产品名称（中文）',
  name_en VARCHAR(200) NOT NULL COMMENT '产品名称（英文）',
  short_name VARCHAR(50) COMMENT '简称或缩写',
  description_zh TEXT COMMENT '产品描述（中文）',
  description_en TEXT COMMENT '产品描述（英文）',
  specifications_zh TEXT COMMENT '技术规格（中文）',
  specifications_en TEXT COMMENT '技术规格（英文）',
  capacity VARCHAR(200) COMMENT '产能或产量数据',
  applications_zh TEXT COMMENT '应用领域（中文）',
  applications_en TEXT COMMENT '应用领域（英文）',
  achievements VARCHAR(200) COMMENT '业绩数据',
  excerpt_zh VARCHAR(500) COMMENT '列表摘要（中文）',
  excerpt_en VARCHAR(500) COMMENT '列表摘要（英文）',
  content_zh MEDIUMTEXT COMMENT '详情正文HTML（中文）',
  content_en MEDIUMTEXT COMMENT '详情正文HTML（英文）',
  cover_image VARCHAR(500) COMMENT '封面图路径',
  meta_title_zh VARCHAR(200) COMMENT 'SEO标题（中文）',
  meta_title_en VARCHAR(200) COMMENT 'SEO标题（英文）',
  meta_description_zh VARCHAR(500) COMMENT 'SEO描述（中文）',
  meta_description_en VARCHAR(500) COMMENT 'SEO描述（英文）',
  meta_keywords VARCHAR(500) COMMENT 'SEO关键词',
  is_featured TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否推荐',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (product_line_id),
  KEY idx_f_product_line_category (category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成套机组产品';

-- ================================================================
-- 单体设备表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_single_equipment (
  single_equipment_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  category_id BIGINT NOT NULL COMMENT '所属分类',
  name_zh VARCHAR(200) NOT NULL COMMENT '设备名称（中文）',
  name_en VARCHAR(200) NOT NULL COMMENT '设备名称（英文）',
  description_zh TEXT COMMENT '设备描述（中文）',
  description_en TEXT COMMENT '设备描述（英文）',
  technical_highlights_zh TEXT COMMENT '技术亮点（中文）',
  technical_highlights_en TEXT COMMENT '技术亮点（英文）',
  specifications_zh TEXT COMMENT '技术参数（中文）',
  specifications_en TEXT COMMENT '技术参数（英文）',
  excerpt_zh VARCHAR(500) COMMENT '列表摘要（中文）',
  excerpt_en VARCHAR(500) COMMENT '列表摘要（英文）',
  content_zh MEDIUMTEXT COMMENT '详情正文HTML（中文）',
  content_en MEDIUMTEXT COMMENT '详情正文HTML（英文）',
  cover_image VARCHAR(500) COMMENT '封面图路径',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (single_equipment_id),
  KEY idx_f_single_equipment_category (category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='单体设备';

-- ================================================================
-- 成套机组与单体设备关联表（多对多）
-- ================================================================
CREATE TABLE IF NOT EXISTS f_product_line_equipment (
  product_line_equipment_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  product_line_id BIGINT NOT NULL COMMENT '成套机组ID',
  equipment_id BIGINT NOT NULL COMMENT '单体设备ID（f_single_equipment）',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  PRIMARY KEY (product_line_equipment_id),
  UNIQUE KEY uk_f_ple_line_equipment (product_line_id, equipment_id),
  KEY idx_f_ple_equipment (equipment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成套机组关联单体设备';

-- ================================================================
-- 备品备件表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_spare_part (
  spare_part_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  category_id BIGINT NOT NULL COMMENT '所属分类',
  name_zh VARCHAR(200) NOT NULL COMMENT '备件名称（中文）',
  name_en VARCHAR(200) NOT NULL COMMENT '备件名称（英文）',
  model VARCHAR(100) COMMENT '型号规格',
  description_zh TEXT COMMENT '描述（中文）',
  description_en TEXT COMMENT '描述（英文）',
  material VARCHAR(200) COMMENT '材质',
  applications TEXT COMMENT '应用场景',
  excerpt_zh VARCHAR(500) COMMENT '列表摘要（中文）',
  excerpt_en VARCHAR(500) COMMENT '列表摘要（英文）',
  content_zh MEDIUMTEXT COMMENT '详情正文HTML（中文）',
  content_en MEDIUMTEXT COMMENT '详情正文HTML（英文）',
  cover_image VARCHAR(500) COMMENT '封面图路径',
  specifications_zh TEXT COMMENT '技术参数（中文）',
  specifications_en TEXT COMMENT '技术参数（英文）',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (spare_part_id),
  KEY idx_f_spare_part_category (category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='备品备件';

-- ================================================================
-- 案例分类表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_case_category (
  case_category_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  name_zh VARCHAR(100) NOT NULL COMMENT '分类名称（中文）',
  name_en VARCHAR(100) NOT NULL COMMENT '分类名称（英文）',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (case_category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='案例分类';

-- ================================================================
-- 成功案例表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_case_study (
  case_study_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  category_id BIGINT NOT NULL COMMENT '所属分类',
  client_name_zh VARCHAR(200) NOT NULL COMMENT '客户名称（中文）',
  client_name_en VARCHAR(200) NOT NULL COMMENT '客户名称（英文）',
  project_name_zh VARCHAR(200) COMMENT '项目名称（中文）',
  project_name_en VARCHAR(200) COMMENT '项目名称（英文）',
  location VARCHAR(200) COMMENT '项目地点',
  description_zh TEXT COMMENT '项目描述（中文）',
  description_en TEXT COMMENT '项目描述（英文）',
  scope_zh TEXT COMMENT '项目范围（中文）',
  scope_en TEXT COMMENT '项目范围（英文）',
  achievement_zh TEXT COMMENT '项目成果（中文）',
  achievement_en TEXT COMMENT '项目成果（英文）',
  is_overseas TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否海外项目',
  is_featured TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否推荐',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (case_study_id),
  KEY idx_f_case_study_category (category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成功案例';

-- ================================================================
-- 新闻分类表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_news_category (
  category_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  site_code VARCHAR(32) NOT NULL DEFAULT 'wuhansaga' COMMENT '站点编码：小写英文短码，与 f_news.site_code 取值域一致',
  name_zh VARCHAR(100) NOT NULL COMMENT '分类名称（中文）',
  name_en VARCHAR(100) NOT NULL COMMENT '分类名称（英文）',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (category_id),
  KEY idx_f_news_category_site (site_code, del_flag, is_published, sort_order)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='新闻分类';

-- ================================================================
-- 新闻文章表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_news (
  news_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  category_id BIGINT NOT NULL COMMENT '所属分类',
  site_code VARCHAR(32) NOT NULL DEFAULT 'wuhansaga' COMMENT '站点编码：与分类 site_code 一致，用于多站点数据隔离',
  title_zh VARCHAR(200) NOT NULL COMMENT '标题（中文）',
  title_en VARCHAR(200) NOT NULL COMMENT '标题（英文）',
  excerpt_zh TEXT COMMENT '摘要（中文）',
  excerpt_en TEXT COMMENT '摘要（英文）',
  content_zh LONGTEXT COMMENT '正文（中文）',
  content_en LONGTEXT COMMENT '正文（英文）',
  cover_image VARCHAR(255) COMMENT '封面图相对路径',
  meta_title_zh VARCHAR(200) COMMENT 'SEO标题（中文）',
  meta_title_en VARCHAR(200) COMMENT 'SEO标题（英文）',
  meta_description_zh VARCHAR(500) COMMENT 'SEO描述（中文）',
  meta_description_en VARCHAR(500) COMMENT 'SEO描述（英文）',
  meta_keywords VARCHAR(500) COMMENT 'SEO关键词',
  is_featured TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否推荐',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  view_count INT NOT NULL DEFAULT 0 COMMENT '浏览量',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (news_id),
  KEY idx_f_news_site_list (site_code, del_flag, is_published, category_id),
  KEY idx_f_news_site_time (site_code, del_flag, is_published, create_time),
  KEY idx_f_news_category (category_id),
  KEY idx_f_news_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='新闻文章';

-- ================================================================
-- 媒体库表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_media_library (
  media_library_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  file_path VARCHAR(255) NOT NULL COMMENT '文件相对路径',
  file_name VARCHAR(200) NOT NULL COMMENT '文件名',
  file_type VARCHAR(50) COMMENT '文件类型',
  category VARCHAR(50) COMMENT '资源分类',
  title_zh VARCHAR(200) COMMENT '标题（中文）',
  title_en VARCHAR(200) COMMENT '标题（英文）',
  description_zh VARCHAR(500) COMMENT '描述（中文）',
  description_en VARCHAR(500) COMMENT '描述（英文）',
  file_size BIGINT COMMENT '文件大小字节',
  width INT COMMENT '宽度像素',
  height INT COMMENT '高度像素',
  is_published TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否发布',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (media_library_id),
  KEY idx_f_media_library_category (category)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='媒体库';

-- ================================================================
-- 产品与媒体关联表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_product_media (
  product_media_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  product_id BIGINT NOT NULL COMMENT '成套机组产品ID',
  media_id BIGINT NOT NULL COMMENT '媒体库ID',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (product_media_id),
  UNIQUE KEY uk_f_product_media_pair (product_id, media_id),
  KEY idx_f_product_media_media (media_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品与媒体关联';

-- ================================================================
-- 案例与媒体关联表
-- ================================================================
CREATE TABLE IF NOT EXISTS f_case_media (
  case_media_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
  case_id BIGINT NOT NULL COMMENT '案例ID',
  media_id BIGINT NOT NULL COMMENT '媒体库ID',
  sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
  create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
  update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志：0正常 1删除',
  PRIMARY KEY (case_media_id),
  UNIQUE KEY uk_f_case_media_pair (case_id, media_id),
  KEY idx_f_case_media_media (media_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='案例与媒体关联';

-- ================================================================
-- FULLTEXT索引 (MySQL 5.7+)
-- ================================================================
ALTER TABLE f_product_line ADD FULLTEXT INDEX ft_product_line_zh (name_zh, description_zh, specifications_zh);
ALTER TABLE f_product_line ADD FULLTEXT INDEX ft_product_line_en (name_en, description_en, specifications_en);

ALTER TABLE f_single_equipment ADD FULLTEXT INDEX ft_single_equipment_zh (name_zh, description_zh, technical_highlights_zh);
ALTER TABLE f_single_equipment ADD FULLTEXT INDEX ft_single_equipment_en (name_en, description_en, technical_highlights_en);

ALTER TABLE f_spare_part ADD FULLTEXT INDEX ft_spare_part_zh (name_zh, description_zh);
ALTER TABLE f_spare_part ADD FULLTEXT INDEX ft_spare_part_en (name_en, description_en);

ALTER TABLE f_case_study ADD FULLTEXT INDEX ft_case_study_zh (client_name_zh, project_name_zh, description_zh);
ALTER TABLE f_case_study ADD FULLTEXT INDEX ft_case_study_en (client_name_en, project_name_en, description_en);

ALTER TABLE f_news ADD FULLTEXT INDEX ft_news_zh (title_zh, excerpt_zh, content_zh);
ALTER TABLE f_news ADD FULLTEXT INDEX ft_news_en (title_en, excerpt_en, content_en);

-- ================================================================
-- 外键约束
-- ================================================================
ALTER TABLE f_product_category
  ADD CONSTRAINT fk_f_product_category_parent
    FOREIGN KEY (parent_id) REFERENCES f_product_category (product_category_id)
    ON DELETE SET NULL ON UPDATE CASCADE;

ALTER TABLE f_banner
  ADD CONSTRAINT fk_f_banner_company
    FOREIGN KEY (company_info_id) REFERENCES f_company_info (company_info_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_about
  ADD CONSTRAINT fk_f_about_company
    FOREIGN KEY (company_info_id) REFERENCES f_company_info (company_info_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_workshop
  ADD CONSTRAINT fk_f_workshop_company
    FOREIGN KEY (company_info_id) REFERENCES f_company_info (company_info_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_contact
  ADD CONSTRAINT fk_f_contact_company
    FOREIGN KEY (company_info_id) REFERENCES f_company_info (company_info_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_product_line
  ADD CONSTRAINT fk_f_product_line_category
    FOREIGN KEY (category_id) REFERENCES f_product_category (product_category_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_single_equipment
  ADD CONSTRAINT fk_f_single_equipment_category
    FOREIGN KEY (category_id) REFERENCES f_product_category (product_category_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_product_line_equipment
  ADD CONSTRAINT fk_f_ple_product_line
    FOREIGN KEY (product_line_id) REFERENCES f_product_line (product_line_id)
    ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT fk_f_ple_single_equipment
    FOREIGN KEY (equipment_id) REFERENCES f_single_equipment (single_equipment_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_spare_part
  ADD CONSTRAINT fk_f_spare_part_category
    FOREIGN KEY (category_id) REFERENCES f_product_category (product_category_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_case_study
  ADD CONSTRAINT fk_f_case_study_category
    FOREIGN KEY (category_id) REFERENCES f_case_category (case_category_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_news
  ADD CONSTRAINT fk_f_news_category
    FOREIGN KEY (category_id) REFERENCES f_news_category (category_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_product_media
  ADD CONSTRAINT fk_f_product_media_product
    FOREIGN KEY (product_id) REFERENCES f_product_line (product_line_id)
    ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT fk_f_product_media_media
    FOREIGN KEY (media_id) REFERENCES f_media_library (media_library_id)
    ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE f_case_media
  ADD CONSTRAINT fk_f_case_media_case
    FOREIGN KEY (case_id) REFERENCES f_case_study (case_study_id)
    ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT fk_f_case_media_media
    FOREIGN KEY (media_id) REFERENCES f_media_library (media_library_id)
    ON DELETE CASCADE ON UPDATE CASCADE;