-- ============================================================
|
-- 企业微信模块建表脚本(活动 / 报名 / 通知)
|
-- 目标库:mom-jssm(36.213.150.237:10000)
|
-- 说明:项目不使用多租户,因此不含 tenant_id 字段
|
--
|
-- 活动封面、详情图片、报名提交的图片/附件都不落本模块的表:
|
-- 统一走 system_storage_attachment 中间表,
|
-- 活动封面 record_type = 'wxcp_activity',活动详情图片 record_type = 'wxcp_activity_detail',
|
-- 图片通知 record_type = 'wxcp_activity_image',附件通知 record_type = 'wxcp_activity_file',
|
-- 报名附件 record_type = 'wxcp_activity_signup'
|
-- ============================================================
|
|
-- ----------------------------
|
-- 活动主表
|
-- ----------------------------
|
CREATE TABLE IF NOT EXISTS `wxcp_activity` (
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
`title` varchar(128) NOT NULL COMMENT '活动标题',
|
`activity_type` tinyint NOT NULL DEFAULT 5 COMMENT '活动模板:1纯通知 2单条消息 3图片通知 4附件通知 5数据采集/评价',
|
`content` text COMMENT '活动详情',
|
`button_text` varchar(32) DEFAULT NULL COMMENT '卡片按钮文案',
|
`rating_enabled` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否开启评价',
|
`rating_title` varchar(128) DEFAULT NULL COMMENT '评价标题',
|
`rating_max` int NOT NULL DEFAULT 5 COMMENT '评价最高星级',
|
`location` varchar(255) DEFAULT '' COMMENT '活动地点',
|
`start_time` datetime DEFAULT NULL COMMENT '活动开始时间',
|
`end_time` datetime DEFAULT NULL COMMENT '活动结束时间',
|
`signup_start_time` datetime DEFAULT NULL COMMENT '报名开始时间',
|
`signup_end_time` datetime DEFAULT NULL COMMENT '报名结束时间',
|
`signup_limit` int NOT NULL DEFAULT 0 COMMENT '报名人数上限,0 表示不限',
|
`signup_count` int NOT NULL DEFAULT 0 COMMENT '已报名人数(冗余,便于列表展示)',
|
`status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0草稿 1已发布 2已结束 3已取消',
|
`push_scope` tinyint NOT NULL DEFAULT 0 COMMENT '推送范围:0全员 1指定部门 2指定成员',
|
`push_target` varchar(1024) DEFAULT '' COMMENT '推送目标:部门ID或成员账号,多个用逗号分隔',
|
`push_status` tinyint NOT NULL DEFAULT 0 COMMENT '推送状态:0未推送 1已推送',
|
`push_time` datetime DEFAULT NULL COMMENT '最近推送时间',
|
`remark` varchar(512) DEFAULT '' COMMENT '备注',
|
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (`id`),
|
KEY `idx_status` (`status`),
|
KEY `idx_start_time` (`start_time`)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '企业微信活动';
|
|
-- ----------------------------
|
-- 活动报名记录表
|
-- 唯一性(同一活动同一成员只能报一次)在 Service 层校验,不加唯一索引——
|
-- 因为 deleted 是逻辑删除,唯一索引会与"取消报名后重新报名"冲突。
|
-- ----------------------------
|
CREATE TABLE IF NOT EXISTS `wxcp_activity_signup` (
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
`activity_id` bigint NOT NULL COMMENT '活动编号',
|
`wx_user_id` varchar(128) DEFAULT '' COMMENT '企业微信成员账号(UserId),为空表示未通过企业微信授权直接填写表单',
|
`name` varchar(64) DEFAULT '' COMMENT '姓名',
|
`mobile` varchar(32) DEFAULT '' COMMENT '手机号',
|
`dept_name` varchar(255) DEFAULT '' COMMENT '部门名称',
|
`content` text COMMENT '参与说明(成员提交的文字内容)',
|
`rating_score` int DEFAULT NULL COMMENT '评价星级',
|
`status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0已报名 1已取消 2已签到',
|
`signup_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间',
|
`check_in_time` datetime DEFAULT NULL COMMENT '签到时间',
|
`remark` varchar(512) DEFAULT '' COMMENT '备注',
|
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (`id`),
|
KEY `idx_activity_id` (`activity_id`),
|
KEY `idx_wx_user_id` (`wx_user_id`)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '企业微信活动报名记录';
|
|
-- ----------------------------
|
-- 通知表
|
-- ----------------------------
|
CREATE TABLE IF NOT EXISTS `wxcp_notice` (
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
`title` varchar(128) NOT NULL COMMENT '通知标题',
|
`content` text COMMENT '通知正文',
|
`notice_type` tinyint NOT NULL DEFAULT 1 COMMENT '通知模板:1纯文本 2图文卡片(填报/链接) 3文件通知 4图文消息',
|
`summary` varchar(512) DEFAULT NULL COMMENT '摘要(图文卡片/图文消息)',
|
`link_url` varchar(1024) DEFAULT NULL COMMENT '跳转链接(填报/详情)',
|
`link_btn_text` varchar(32) DEFAULT NULL COMMENT '链接按钮文案',
|
`cover_url` varchar(1024) DEFAULT NULL COMMENT '图文消息封面图地址',
|
`file_blob_id` bigint DEFAULT NULL COMMENT '文件通知的附件 Blob ID',
|
`file_name` varchar(255) DEFAULT NULL COMMENT '文件通知的附件文件名',
|
`status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0草稿 1已发布 2已撤回',
|
`push_scope` tinyint NOT NULL DEFAULT 0 COMMENT '推送范围:0全员 1指定部门 2指定成员',
|
`push_target` varchar(1024) DEFAULT '' COMMENT '推送目标:部门ID或成员账号,多个用逗号分隔',
|
`push_status` tinyint NOT NULL DEFAULT 0 COMMENT '推送状态:0未推送 1已推送',
|
`push_time` datetime DEFAULT NULL COMMENT '最近推送时间',
|
`remark` varchar(512) DEFAULT '' COMMENT '备注',
|
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (`id`),
|
KEY `idx_status` (`status`)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '企业微信通知';
|
|
-- ============================================================
|
-- 升级脚本:封面图从「业务表存地址」改为「附件中间表」
|
-- 已建过库的环境执行一次即可;新库执行上面的 CREATE TABLE 已是最新结构,无需执行
|
-- MySQL 的 ADD/DROP COLUMN 不支持 IF NOT EXISTS,这里先判断再执行
|
-- ============================================================
|
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
|
WHERE table_schema = DATABASE() AND table_name = 'wxcp_activity' AND column_name = 'cover_url');
|
SET @sql = IF(@exists > 0,
|
'ALTER TABLE `wxcp_activity` DROP COLUMN `cover_url`',
|
'SELECT 1');
|
PREPARE stmt FROM @sql;
|
EXECUTE stmt;
|
DEALLOCATE PREPARE stmt;
|
|
-- ============================================================
|
-- 活动自定义采集字段(数据采集/评价模板使用)
|
-- ============================================================
|
CREATE TABLE IF NOT EXISTS `wxcp_activity_field` (
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
`activity_id` bigint NOT NULL COMMENT '活动编号',
|
`field_label` varchar(128) NOT NULL COMMENT '字段名称',
|
`field_type` varchar(32) NOT NULL DEFAULT 'text' COMMENT '字段类型:text/textarea/number/date/select/radio/checkbox/rating',
|
`field_options` varchar(1000) DEFAULT NULL COMMENT '选项,多个用英文逗号分隔',
|
`required` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否必填',
|
`placeholder` varchar(255) DEFAULT NULL COMMENT '输入提示',
|
`sort_no` int NOT NULL DEFAULT 0 COMMENT '排序号',
|
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (`id`),
|
KEY `idx_activity_id` (`activity_id`)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '企业微信活动采集字段';
|
|
-- ============================================================
|
-- 报名采集值
|
-- ============================================================
|
CREATE TABLE IF NOT EXISTS `wxcp_activity_signup_value` (
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
`signup_id` bigint NOT NULL COMMENT '报名记录编号',
|
`activity_id` bigint NOT NULL COMMENT '活动编号',
|
`field_id` bigint NOT NULL COMMENT '字段编号',
|
`field_label` varchar(128) NOT NULL COMMENT '字段名称(快照)',
|
`field_type` varchar(32) DEFAULT NULL COMMENT '字段类型(快照)',
|
`field_value` varchar(2000) DEFAULT NULL COMMENT '字段值,多选用英文逗号分隔',
|
`sort_no` int NOT NULL DEFAULT 0 COMMENT '排序号',
|
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (`id`),
|
KEY `idx_signup_id` (`signup_id`),
|
KEY `idx_activity_id` (`activity_id`)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '企业微信活动报名采集值';
|
|
-- ============================================================
|
-- 升级脚本:活动多模板字段(已建库环境执行,新库无需执行)
|
-- 具体见 docs/sql/wxcp_activity_templates_20261021.sql
|
-- ============================================================
|