2026-07-01 6b5f7c66fc40d7f6099d561e31a34fbd50dd20d3
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
-- IM 模块 MySQL 表结构
-- 基于 yudao-module-im 模块实体类提取
-- 生成时间: 2026-06-30
 
-- ========================================
-- 1. im_channel - IM 频道表
-- ========================================
DROP TABLE IF EXISTS `im_channel`;
CREATE TABLE `im_channel` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `code` VARCHAR(64) NOT NULL COMMENT '频道业务码',
    `name` VARCHAR(128) NOT NULL COMMENT '频道名称',
    `avatar` VARCHAR(512) DEFAULT NULL COMMENT '频道头像',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0正常 1禁用)',
    `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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 频道表';
 
-- ========================================
-- 2. im_channel_material - IM 频道素材表
-- ========================================
DROP TABLE IF EXISTS `im_channel_material`;
CREATE TABLE `im_channel_material` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `channel_id` BIGINT NOT NULL COMMENT '频道编号',
    `type` TINYINT NOT NULL COMMENT '素材内容类型',
    `title` VARCHAR(256) NOT NULL COMMENT '标题',
    `cover_url` VARCHAR(512) DEFAULT NULL COMMENT '封面图',
    `summary` VARCHAR(1024) DEFAULT NULL COMMENT '摘要',
    `content` TEXT DEFAULT NULL COMMENT '富文本 HTML',
    `url` VARCHAR(512) DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_channel_id` (`channel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 频道素材表';
 
-- ========================================
-- 3. im_conversation_read - IM 会话读位置表
-- ========================================
DROP TABLE IF EXISTS `im_conversation_read`;
CREATE TABLE `im_conversation_read` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `user_id` BIGINT NOT NULL COMMENT '用户编号',
    `conversation_type` TINYINT NOT NULL COMMENT '会话类型(1私聊 2群聊 3频道)',
    `target_id` BIGINT NOT NULL COMMENT '目标编号',
    `message_id` BIGINT NOT NULL COMMENT '最大已读消息编号',
    `read_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_user_conv` (`user_id`, `conversation_type`, `target_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 会话读位置表';
 
-- ========================================
-- 4. im_face_pack - IM 表情包表
-- ========================================
DROP TABLE IF EXISTS `im_face_pack`;
CREATE TABLE `im_face_pack` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `name` VARCHAR(128) NOT NULL COMMENT '表情包名称',
    `icon` VARCHAR(512) DEFAULT NULL COMMENT '表情包图标',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0正常 1禁用)',
    `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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 表情包表';
 
-- ========================================
-- 5. im_face_pack_item - IM 表情包项表
-- ========================================
DROP TABLE IF EXISTS `im_face_pack_item`;
CREATE TABLE `im_face_pack_item` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `pack_id` BIGINT NOT NULL COMMENT '所属表情包编号',
    `url` VARCHAR(512) NOT NULL COMMENT '表情图 URL',
    `name` VARCHAR(64) DEFAULT NULL COMMENT '表情名',
    `width` INT DEFAULT NULL COMMENT '渲染宽度(像素)',
    `height` INT DEFAULT NULL COMMENT '渲染高度(像素)',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0正常 1禁用)',
    `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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_pack_id` (`pack_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 表情包项表';
 
-- ========================================
-- 6. im_face_user_item - IM 用户私有表情表
-- ========================================
DROP TABLE IF EXISTS `im_face_user_item`;
CREATE TABLE `im_face_user_item` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `user_id` BIGINT NOT NULL COMMENT '所属用户编号',
    `url` VARCHAR(512) NOT NULL COMMENT '表情图 URL',
    `name` VARCHAR(64) DEFAULT NULL COMMENT '表情名',
    `width` INT DEFAULT NULL COMMENT '渲染宽度(像素)',
    `height` INT DEFAULT NULL COMMENT '渲染高度(像素)',
    `sort` INT 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 用户私有表情表';
 
-- ========================================
-- 7. im_friend - IM 好友关系表
-- ========================================
DROP TABLE IF EXISTS `im_friend`;
CREATE TABLE `im_friend` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `user_id` BIGINT NOT NULL COMMENT '用户编号',
    `friend_user_id` BIGINT NOT NULL COMMENT '好友用户编号',
    `silent` BIT(1) DEFAULT b'0' COMMENT '是否免打扰',
    `display_name` VARCHAR(128) DEFAULT NULL COMMENT '好友展示备注',
    `add_source` TINYINT DEFAULT NULL COMMENT '添加来源',
    `pinned` BIT(1) DEFAULT b'0' COMMENT '是否置顶联系人',
    `blocked` BIT(1) DEFAULT b'0' COMMENT '是否拉黑',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '好友状态(0正常 1禁用/已删除)',
    `add_time` DATETIME DEFAULT NULL COMMENT '添加好友时间',
    `delete_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_user_friend` (`user_id`, `friend_user_id`),
    KEY `idx_friend_user_id` (`friend_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 好友关系表';
 
-- ========================================
-- 8. im_friend_request - IM 好友申请记录表
-- ========================================
DROP TABLE IF EXISTS `im_friend_request`;
CREATE TABLE `im_friend_request` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `from_user_id` BIGINT NOT NULL COMMENT '发起方用户编号',
    `to_user_id` BIGINT NOT NULL COMMENT '接收方用户编号',
    `apply_content` VARCHAR(256) DEFAULT NULL COMMENT '申请理由',
    `display_name` VARCHAR(128) DEFAULT NULL COMMENT '发起方对接收方的备注',
    `add_source` TINYINT DEFAULT NULL COMMENT '添加来源',
    `handle_result` TINYINT DEFAULT NULL COMMENT '处理结果',
    `handle_content` VARCHAR(256) DEFAULT NULL COMMENT '处理理由',
    `handle_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_from_user_id` (`from_user_id`),
    KEY `idx_to_user_id` (`to_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 好友申请记录表';
 
-- ========================================
-- 9. im_group - IM 群信息表
-- ========================================
DROP TABLE IF EXISTS `im_group`;
CREATE TABLE `im_group` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `name` VARCHAR(128) NOT NULL COMMENT '群名称',
    `owner_user_id` BIGINT NOT NULL COMMENT '群主用户编号',
    `avatar` VARCHAR(512) DEFAULT NULL COMMENT '群头像',
    `notice` VARCHAR(1024) DEFAULT NULL COMMENT '群公告',
    `join_approval` BIT(1) DEFAULT b'0' COMMENT '进群是否需审批',
    `banned` BIT(1) DEFAULT b'0' COMMENT '是否封禁',
    `banned_reason` VARCHAR(256) DEFAULT NULL COMMENT '封禁原因',
    `banned_time` DATETIME DEFAULT NULL COMMENT '封禁时间',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '群状态(0正常 1已解散)',
    `dissolved_time` DATETIME DEFAULT NULL COMMENT '解散时间',
    `muted_all` BIT(1) DEFAULT b'0' COMMENT '是否全群禁言',
    `pinned_message_ids` VARCHAR(1024) DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_owner_user_id` (`owner_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 群信息表';
 
-- ========================================
-- 10. im_group_member - IM 群成员表
-- ========================================
DROP TABLE IF EXISTS `im_group_member`;
CREATE TABLE `im_group_member` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `group_id` BIGINT NOT NULL COMMENT '群编号',
    `user_id` BIGINT NOT NULL COMMENT '用户编号',
    `display_user_name` VARCHAR(128) DEFAULT NULL COMMENT '组内显示名',
    `group_remark` VARCHAR(256) DEFAULT NULL COMMENT '群备注',
    `silent` BIT(1) DEFAULT b'0' COMMENT '是否免打扰',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '成员状态(0正常 1禁用)',
    `role` TINYINT NOT NULL DEFAULT 0 COMMENT '成员角色(0普通成员 1管理员 2群主)',
    `join_time` DATETIME DEFAULT NULL COMMENT '入群时间',
    `add_source` TINYINT DEFAULT NULL COMMENT '加入来源',
    `inviter_user_id` BIGINT DEFAULT NULL COMMENT '邀请人用户编号',
    `quit_time` DATETIME DEFAULT NULL COMMENT '退群时间',
    `mute_end_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_group_user` (`group_id`, `user_id`),
    KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 群成员表';
 
-- ========================================
-- 11. im_group_request - IM 加群申请记录表
-- ========================================
DROP TABLE IF EXISTS `im_group_request`;
CREATE TABLE `im_group_request` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `group_id` BIGINT NOT NULL COMMENT '群编号',
    `user_id` BIGINT NOT NULL COMMENT '申请人/被邀请人用户编号',
    `inviter_user_id` BIGINT DEFAULT NULL COMMENT '邀请人用户编号',
    `apply_content` VARCHAR(256) DEFAULT NULL COMMENT '申请理由',
    `add_source` TINYINT DEFAULT NULL COMMENT '加入来源',
    `handle_result` TINYINT DEFAULT NULL COMMENT '处理结果',
    `handle_user_id` BIGINT DEFAULT NULL COMMENT '处理人用户编号',
    `handle_content` VARCHAR(256) DEFAULT NULL COMMENT '处理理由',
    `handle_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_group_id` (`group_id`),
    KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 加群申请记录表';
 
-- ========================================
-- 12. im_channel_message - IM 频道消息表
-- ========================================
DROP TABLE IF EXISTS `im_channel_message`;
CREATE TABLE `im_channel_message` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `channel_id` BIGINT NOT NULL COMMENT '频道编号',
    `material_id` BIGINT DEFAULT NULL COMMENT '关联素材编号',
    `type` TINYINT NOT NULL COMMENT '消息类型',
    `content` TEXT DEFAULT NULL COMMENT '消息内容 JSON',
    `receiver_user_ids` VARCHAR(1024) DEFAULT NULL COMMENT '接收人编号列表',
    `send_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_channel_id` (`channel_id`),
    KEY `idx_send_time` (`send_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 频道消息表';
 
-- ========================================
-- 13. im_group_message - IM 群聊消息表
-- ========================================
DROP TABLE IF EXISTS `im_group_message`;
CREATE TABLE `im_group_message` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `client_message_id` VARCHAR(64) DEFAULT NULL COMMENT '客户端消息编号',
    `sender_id` BIGINT NOT NULL COMMENT '发送人编号',
    `group_id` BIGINT NOT NULL COMMENT '群编号',
    `type` TINYINT NOT NULL COMMENT '消息类型',
    `content` TEXT DEFAULT NULL COMMENT '消息内容 JSON',
    `status` TINYINT DEFAULT NULL COMMENT '消息状态',
    `send_time` DATETIME DEFAULT NULL COMMENT '发送时间',
    `receiver_user_ids` VARCHAR(1024) DEFAULT NULL COMMENT '定向接收用户编号列表',
    `at_user_ids` VARCHAR(1024) DEFAULT NULL COMMENT '@目标用户编号列表',
    `receipt_status` TINYINT DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_client_message_id` (`client_message_id`),
    KEY `idx_group_id` (`group_id`),
    KEY `idx_sender_id` (`sender_id`),
    KEY `idx_send_time` (`send_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 群聊消息表';
 
-- ========================================
-- 14. im_private_message - IM 私聊消息表
-- ========================================
DROP TABLE IF EXISTS `im_private_message`;
CREATE TABLE `im_private_message` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `client_message_id` VARCHAR(64) DEFAULT NULL COMMENT '客户端消息编号',
    `sender_id` BIGINT NOT NULL COMMENT '发送人编号',
    `receiver_id` BIGINT NOT NULL COMMENT '接收人编号',
    `type` TINYINT NOT NULL COMMENT '消息类型',
    `content` TEXT DEFAULT NULL COMMENT '消息内容 JSON',
    `status` TINYINT DEFAULT NULL COMMENT '消息状态',
    `receipt_status` TINYINT DEFAULT NULL COMMENT '回执状态',
    `send_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_client_message_id` (`client_message_id`),
    KEY `idx_sender_id` (`sender_id`),
    KEY `idx_receiver_id` (`receiver_id`),
    KEY `idx_send_time` (`send_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 私聊消息表';
 
-- ========================================
-- 15. im_rtc_call - IM 通话记录表
-- ========================================
DROP TABLE IF EXISTS `im_rtc_call`;
CREATE TABLE `im_rtc_call` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `room` VARCHAR(64) NOT NULL COMMENT '业务通话编号(UUID)',
    `conversation_type` TINYINT NOT NULL COMMENT '会话类型',
    `media_type` TINYINT NOT NULL COMMENT '媒体类型',
    `inviter_user_id` BIGINT NOT NULL COMMENT '发起人用户编号',
    `group_id` BIGINT DEFAULT NULL COMMENT '群编号',
    `status` TINYINT NOT NULL COMMENT '通话状态',
    `end_reason` TINYINT DEFAULT NULL COMMENT '结束原因',
    `start_time` DATETIME DEFAULT NULL COMMENT '发起时间',
    `accept_time` DATETIME DEFAULT NULL COMMENT '接通时间',
    `end_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_room` (`room`),
    KEY `idx_inviter_user_id` (`inviter_user_id`),
    KEY `idx_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 通话记录表';
 
-- ========================================
-- 16. im_rtc_participant - IM 通话参与者表
-- ========================================
DROP TABLE IF EXISTS `im_rtc_participant`;
CREATE TABLE `im_rtc_participant` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `call_id` BIGINT NOT NULL COMMENT '通话编号',
    `room` VARCHAR(64) NOT NULL COMMENT '业务通话编号',
    `user_id` BIGINT NOT NULL COMMENT '参与者用户编号',
    `role` TINYINT NOT NULL COMMENT '参与角色',
    `status` TINYINT NOT NULL COMMENT '参与状态',
    `invite_time` DATETIME DEFAULT NULL COMMENT '被邀请时间',
    `accept_time` DATETIME DEFAULT NULL COMMENT '接听时间',
    `leave_time` DATETIME DEFAULT NULL 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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_call_id` (`call_id`),
    KEY `idx_room` (`room`),
    KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 通话参与者表';
 
-- ========================================
-- 17. im_sensitive_word - IM 敏感词表
-- ========================================
DROP TABLE IF EXISTS `im_sensitive_word`;
CREATE TABLE `im_sensitive_word` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
    `word` VARCHAR(128) NOT NULL COMMENT '敏感词',
    `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0正常 1禁用)',
    `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 ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_word` (`word`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IM 敏感词表';