-- ============================================================
|
-- 企业微信模块建表脚本(活动 / 报名 / 通知)
|
-- 目标库:mom-jssm(36.213.150.237:10000)
|
-- 说明:项目不使用多租户,因此不含 tenant_id 字段
|
--
|
-- 活动封面、报名提交的图片/附件都不落本模块的表:
|
-- 统一走 system_storage_attachment 中间表,
|
-- 活动封面 record_type = 'wxcp_activity',报名附件 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 '活动标题',
|
`content` text 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 '参与说明(成员提交的文字内容)',
|
`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 '通知正文',
|
`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;
|