liu
2026-09-30 91491239c5d4611b5b1404a7abeb2bb23d0edad5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
-- ============================================================
-- 企业微信模块建表脚本(活动 / 报名 / 通知)
-- 目标库: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;