-- =====================================================
-- 优选导航 数据库结构 + 种子数据
-- 使用：先创建数据库，再导入本文件
--   CREATE DATABASE nav_site DEFAULT CHARSET utf8mb4;
--   然后在 nav_site 库中执行本文件
-- =====================================================

-- 站点配置（键值对，JSON 类字段存字符串）
CREATE TABLE IF NOT EXISTS site_config (
  `key`   VARCHAR(64) PRIMARY KEY,
  `value` TEXT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 轮播图
CREATE TABLE IF NOT EXISTS banners (
  id        INT AUTO_INCREMENT PRIMARY KEY,
  image_url VARCHAR(512) NOT NULL DEFAULT '',
  link_url  VARCHAR(512) NOT NULL DEFAULT '',
  sort      INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 分类
CREATE TABLE IF NOT EXISTS categories (
  id   INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(64) NOT NULL,
  span INT NOT NULL DEFAULT 4,
  sort INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 站点卡片
CREATE TABLE IF NOT EXISTS platforms (
  id            INT AUTO_INCREMENT PRIMARY KEY,
  category      VARCHAR(64)  NOT NULL DEFAULT '',
  name          VARCHAR(128) NOT NULL,
  description   VARCHAR(255) NOT NULL DEFAULT '',
  url           VARCHAR(512) NOT NULL DEFAULT '',
  badge         VARCHAR(16)  NOT NULL DEFAULT '推荐',
  requires_code TINYINT      NOT NULL DEFAULT 0,
  logo          VARCHAR(512) NOT NULL DEFAULT '',
  group_name    VARCHAR(64)  NOT NULL DEFAULT '',
  group_desc    VARCHAR(255) NOT NULL DEFAULT '',
  sort          INT NOT NULL DEFAULT 0,
  INDEX idx_category (category)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 访问码（platform_id 为空 = 全站通用码）
CREATE TABLE IF NOT EXISTS access_codes (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  code        VARCHAR(64) NOT NULL,
  platform_id INT NULL,
  created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uk_code_platform (code, platform_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 访问统计
CREATE TABLE IF NOT EXISTS visits (
  id           INT AUTO_INCREMENT PRIMARY KEY,
  platform_id  INT         NOT NULL DEFAULT 0,
  platform_name VARCHAR(128) NOT NULL DEFAULT '',
  event_type   VARCHAR(32) NOT NULL DEFAULT 'visit',
  source_type  VARCHAR(32) NOT NULL DEFAULT 'direct',
  created_at   DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_event (event_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- =====================================================
-- 种子数据
-- =====================================================

INSERT INTO site_config (`key`, `value`) VALUES
  ('site_name',   '优选导航'),
  ('site_desc',   '好工具，一网打尽'),
  ('brand_sub',   '精选工具'),
  ('brand_label', '精选工具'),
  ('brand_en',    'BEST TOOLS GUIDE'),
  ('logo_url',    ''),
  ('notice_text', '欢迎访问优选导航！本站收录优质工具与学习资源，收藏本站不迷路，每日更新精选内容。'),
  ('site_footer', '© 2026 优选导航 · 仅收录公开合法站点 · 仅供学习交流使用'),
  ('service_list', '[{"name":"站务小助手","account":"support@example.com","link":"mailto:support@example.com"},{"name":"合作洽谈","account":"biz@example.com","link":""}]'),
  ('demo_codes',  '["DEMO2026"]')
ON DUPLICATE KEY UPDATE `value` = VALUES(`value`);

INSERT INTO categories (name, span, sort) VALUES
  ('推荐站点', 4, 1),
  ('常用工具', 4, 2),
  ('学习资源', 4, 3),
  ('设计素材', 6, 4),
  ('开发必备', 6, 5);

INSERT INTO banners (image_url, link_url, sort) VALUES
  ('https://picsum.photos/seed/banner1/1180/360', '', 1),
  ('https://picsum.photos/seed/banner2/1180/360', '', 2),
  ('https://picsum.photos/seed/banner3/1180/360', '', 3);

INSERT INTO platforms (category, name, description, url, badge, requires_code, logo, group_name, group_desc, sort) VALUES
  ('推荐站点', 'MDN 文档',        'Web 开发权威文档',       'https://developer.mozilla.org',  '优选', 0, '', '', '', 1),
  ('推荐站点', 'GitHub',         '全球最大代码托管平台',     'https://github.com',             '人气', 0, '', '', '', 2),
  ('推荐站点', 'Stack Overflow', '程序员问答社区',          'https://stackoverflow.com',      '推荐', 0, '', '', '', 3),
  ('推荐站点', '维基百科',        '自由的百科全书',          'https://www.wikipedia.org',      '推荐', 0, '', '', '', 4),
  ('推荐站点', '示例专区',        '输入访问码查看内容',       'https://example.com',            '新品', 1, '', '', '', 5),
  ('推荐站点', '会员专区',        '访问码解锁的精选内容',     'https://example.com',            '推荐', 1, '', '', '', 6),
  ('常用工具', '在线文档',        '多人协作云端文档',        'https://shimo.im',               '推荐', 0, '', '效率办公', '提升日常办公效率的实用工具', 1),
  ('常用工具', '思维导图',        '在线脑图工具',            'https://www.processon.com',      '推荐', 0, '', '效率办公', '提升日常办公效率的实用工具', 2),
  ('常用工具', '图片压缩',        '在线无损压缩',            'https://tinypng.com',            '推荐', 0, '', '图像处理', '图片处理与压缩工具', 3),
  ('常用工具', '在线抠图',        'AI 智能抠图',             'https://www.remove.bg',          '推荐', 0, '', '图像处理', '图片处理与压缩工具', 4),
  ('常用工具', '格式工厂',        '万能格式转换',            'https://convertio.co/zh/',       '推荐', 0, '', '格式转换', '文件格式在线转换', 5),
  ('常用工具', 'PDF 工具',       'PDF 合并拆分',           'https://smallpdf.com',           '推荐', 0, '', '格式转换', '文件格式在线转换', 6),
  ('学习资源', '菜鸟教程',        '编程入门教程大全',        'https://www.runoob.com',         '人气', 0, '', '', '', 1),
  ('学习资源', 'B 站公开课',      '海量免费视频课程',        'https://www.bilibili.com',       '推荐', 0, '', '', '', 2),
  ('学习资源', 'Coursera',       '国际名校在线课程',        'https://www.coursera.org',       '优选', 0, '', '', '', 3),
  ('学习资源', 'LeetCode',       '算法刷题练习平台',        'https://leetcode.cn',            '推荐', 0, '', '', '', 4),
  ('设计素材', 'Unsplash',        '免费高清图库',            'https://unsplash.com',           '优选', 0, '', '', '', 1),
  ('设计素材', 'Figma',          '在线 UI 设计工具',       'https://www.figma.com',          '人气', 0, '', '', '', 2),
  ('设计素材', 'Iconfont',       '阿里巴巴图标库',          'https://www.iconfont.cn',        '推荐', 0, '', '', '', 3),
  ('设计素材', 'Coolors',        '配色方案生成器',          'https://coolors.co',             '推荐', 0, '', '', '', 4),
  ('开发必备', 'CodePen',        '前端代码在线演示',        'https://codepen.io',             '推荐', 0, '', '', '', 1),
  ('开发必备', 'Can I Use',      '浏览器兼容性查询',        'https://caniuse.com',            '优选', 0, '', '', '', 2),
  ('开发必备', 'Vercel',         '前端项目一键部署',        'https://vercel.com',             '人气', 0, '', '', '', 3),
  ('开发必备', 'npm',            'JavaScript 包管理',      'https://www.npmjs.com',          '推荐', 0, '', '', '', 4);

INSERT INTO access_codes (code, platform_id) VALUES
  ('DEMO2026', NULL);
