-- 微信公众号信息管理模块数据库表结构

-- 1. 微信菜单配置表
CREATE TABLE wechat_menu (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '菜单ID',
    parent_id BIGINT DEFAULT 0 COMMENT '父菜单ID，0表示顶级菜单',
    menu_name VARCHAR(16) NOT NULL COMMENT '菜单名称，最多16个字符',
    menu_type VARCHAR(20) NOT NULL COMMENT '菜单类型：click/view/miniprogram/scancode_push/scancode_waitmsg/pic_sysphoto/pic_photo_or_album/pic_weixin/location_select',
    menu_key VARCHAR(128) COMMENT '菜单KEY值，click类型必须',
    menu_url VARCHAR(1024) COMMENT '网页链接，view类型必须',
    media_id VARCHAR(128) COMMENT '媒体文件ID',
    appid VARCHAR(64) COMMENT '小程序appid，miniprogram类型必须',
    pagepath VARCHAR(256) COMMENT '小程序页面路径，miniprogram类型必须',
    sort_order INT DEFAULT 0 COMMENT '排序顺序',
    is_enabled TINYINT DEFAULT 1 COMMENT '是否启用：0-禁用，1-启用',
    description TEXT COMMENT '菜单描述',
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    INDEX idx_parent_id (parent_id),
    INDEX idx_sort_order (sort_order),
    INDEX idx_menu_key (menu_key),
    INDEX idx_enabled (is_enabled)
) COMMENT='微信菜单配置表';

-- 2. 微信消息模板配置表
CREATE TABLE wechat_message_template (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '模板ID',
    template_key VARCHAR(64) NOT NULL UNIQUE COMMENT '模板标识键',
    template_name VARCHAR(100) NOT NULL COMMENT '模板名称',
    template_type VARCHAR(20) NOT NULL COMMENT '模板类型：text/news/image/voice/video/music',
    trigger_type VARCHAR(30) NOT NULL COMMENT '触发类型：subscribe/unsubscribe/scan/click/view/keyword',
    trigger_value VARCHAR(128) COMMENT '触发值（如菜单key、关键词等）',
    content TEXT COMMENT '文本内容',
    media_id VARCHAR(128) COMMENT '媒体文件ID',
    title VARCHAR(128) COMMENT '标题（图文消息用）',
    description TEXT COMMENT '描述（图文消息用）',
    pic_url VARCHAR(512) COMMENT '图片链接',
    url VARCHAR(512) COMMENT '跳转链接',
    music_url VARCHAR(512) COMMENT '音乐链接',
    hq_music_url VARCHAR(512) COMMENT '高质量音乐链接',
    thumb_media_id VARCHAR(128) COMMENT '缩略图媒体ID',
    is_enabled TINYINT DEFAULT 1 COMMENT '是否启用：0-禁用，1-启用',
    priority INT DEFAULT 0 COMMENT '优先级，数字越大优先级越高',
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    INDEX idx_template_key (template_key),
    INDEX idx_trigger_type (trigger_type),
    INDEX idx_trigger_value (trigger_value),
    INDEX idx_enabled (is_enabled),
    INDEX idx_priority (priority)
) COMMENT='微信消息模板配置表';

-- 3. 微信图文消息文章表
CREATE TABLE wechat_news_article (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '文章ID',
    template_id BIGINT NOT NULL COMMENT '关联的消息模板ID',
    title VARCHAR(128) NOT NULL COMMENT '文章标题',
    author VARCHAR(64) COMMENT '作者',
    digest VARCHAR(256) COMMENT '摘要',
    content TEXT COMMENT '文章内容',
    content_source_url VARCHAR(512) COMMENT '原文链接',
    thumb_media_id VARCHAR(128) COMMENT '缩略图媒体ID',
    show_cover_pic TINYINT DEFAULT 0 COMMENT '是否显示封面：0-不显示，1-显示',
    url VARCHAR(512) COMMENT '点击跳转链接',
    thumb_url VARCHAR(512) COMMENT '缩略图URL',
    need_open_comment TINYINT DEFAULT 0 COMMENT '是否打开评论：0-不打开，1-打开',
    only_fans_can_comment TINYINT DEFAULT 0 COMMENT '是否粉丝才可评论：0-所有人，1-仅粉丝',
    sort_order INT DEFAULT 0 COMMENT '排序顺序',
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    INDEX idx_template_id (template_id),
    INDEX idx_sort_order (sort_order),
    FOREIGN KEY (template_id) REFERENCES wechat_message_template(id) ON DELETE CASCADE
) COMMENT='微信图文消息文章表';

-- 4. 微信关键词回复配置表
CREATE TABLE wechat_keyword_reply (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关键词回复ID',
    keyword VARCHAR(128) NOT NULL COMMENT '关键词',
    match_type VARCHAR(20) DEFAULT 'exact' COMMENT '匹配类型：exact-精确匹配，fuzzy-模糊匹配，regex-正则匹配',
    template_id BIGINT NOT NULL COMMENT '关联的消息模板ID',
    is_enabled TINYINT DEFAULT 1 COMMENT '是否启用：0-禁用，1-启用',
    priority INT DEFAULT 0 COMMENT '优先级，数字越大优先级越高',
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    INDEX idx_keyword (keyword),
    INDEX idx_match_type (match_type),
    INDEX idx_template_id (template_id),
    INDEX idx_enabled (is_enabled),
    INDEX idx_priority (priority),
    FOREIGN KEY (template_id) REFERENCES wechat_message_template(id) ON DELETE CASCADE
) COMMENT='微信关键词回复配置表';

-- 5. 微信菜单发布历史表
CREATE TABLE wechat_menu_publish_history (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '发布历史ID',
    menu_config JSON NOT NULL COMMENT '菜单配置JSON',
    publish_status VARCHAR(20) NOT NULL COMMENT '发布状态：success/failed',
    error_message TEXT COMMENT '错误信息',
    publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
    operator VARCHAR(64) COMMENT '操作人',
    
    INDEX idx_publish_status (publish_status),
    INDEX idx_publish_time (publish_time)
) COMMENT='微信菜单发布历史表';

-- 插入默认数据
-- 默认菜单配置
INSERT INTO wechat_menu (menu_name, menu_type, menu_key, sort_order, description) VALUES
('首页', 'view', '', 1, '跳转到网站首页'),
('课程中心', 'click', 'MENU_COURSES', 2, '查看课程列表'),
('更多功能', 'click', 'MENU_MORE', 3, '更多功能菜单');

-- 默认子菜单
INSERT INTO wechat_menu (parent_id, menu_name, menu_type, menu_key, sort_order, description) VALUES
(3, '联系客服', 'click', 'MENU_CONTACT', 1, '联系客服'),
(3, '关于我们', 'click', 'MENU_ABOUT', 2, '关于我们'),
(3, '帮助中心', 'view', 'https://help.example.com', 3, '帮助中心');

-- 默认消息模板
INSERT INTO wechat_message_template (template_key, template_name, template_type, trigger_type, content) VALUES
('welcome', '欢迎消息', 'text', 'subscribe', '🎉 欢迎关注1818AI！\n\n我们为您提供：\n📚 优质课程内容\n🎯 个性化学习推荐\n💡 AI智能辅导\n\n点击菜单开始您的学习之旅！'),
('default_reply', '默认回复', 'text', 'keyword', '感谢您的消息！如需帮助，请点击菜单或发送"帮助"获取更多信息。'),
('help', '帮助信息', 'text', 'keyword', '📖 使用帮助\n\n1. 点击【课程中心】查看最新课程\n2. 点击【联系客服】获取人工服务\n3. 发送关键词获取相关信息\n\n如有其他问题，欢迎随时咨询！');

-- 默认关键词回复
INSERT INTO wechat_keyword_reply (keyword, match_type, template_id) VALUES
('帮助', 'exact', 3),
('help', 'exact', 3),
('客服', 'fuzzy', 2),
('联系', 'fuzzy', 2);
