-- 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 敏感词表';