65 lines
4.1 KiB
SQL
65 lines
4.1 KiB
SQL
|
|
-- ============================================================
|
||
|
|
-- 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='表单提交记录';
|