/* Navicat Premium Dump SQL Source Server : 开发环境-本地 Source Server Type : MySQL Source Server Version : 80408 (8.4.8) Source Host : localhost:3306 Source Schema : nl_im_plus Target Server Type : MySQL Target Server Version : 80408 (8.4.8) File Encoding : 65001 Date: 07/07/2026 16:44:26 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for api_request_logs -- ---------------------------- DROP TABLE IF EXISTS `api_request_logs`; CREATE TABLE `api_request_logs` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `route` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求路由', `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求IP', `ip_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IP归属地', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求用户ID', `method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求方式', `request_params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '请求参数', `response_params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '返回参数', `response_code` bigint NULL DEFAULT NULL COMMENT '返回code', `http_status` bigint NULL DEFAULT NULL COMMENT '返回http状态', `request_time` datetime NULL DEFAULT NULL COMMENT '请求时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_api_request_logs_route`(`route` ASC) USING BTREE, INDEX `idx_api_request_logs_ip`(`ip` ASC) USING BTREE, INDEX `idx_api_request_logs_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_api_request_logs_response_code`(`response_code` ASC) USING BTREE, INDEX `idx_api_request_logs_request_time`(`request_time` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '接口请求日志表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for attachments -- ---------------------------- DROP TABLE IF EXISTS `attachments`; CREATE TABLE `attachments` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `uploader_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上传者ID', `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件名', `file_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件类型', `file_size` bigint NULL DEFAULT NULL COMMENT '文件大小(字节)', `file_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件路径', `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件URL', `mime_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'MIME类型', `width` bigint NULL DEFAULT NULL COMMENT '宽度', `height` bigint NULL DEFAULT NULL COMMENT '高度', `duration` bigint NULL DEFAULT NULL COMMENT '时长(秒)', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_attachments_uploader_id`(`uploader_id` ASC) USING BTREE, INDEX `idx_attachments_file_type`(`file_type` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '附件表,记录上传的文件信息' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for chat_conversations -- ---------------------------- DROP TABLE IF EXISTS `chat_conversations`; CREATE TABLE `chat_conversations` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID', `target_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '目标ID(好友或群)', `room_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '房间ID', `type` bigint NULL DEFAULT NULL COMMENT '会话类型(1=私聊,2=群聊)', `is_top` tinyint(1) NULL DEFAULT 0 COMMENT '是否置顶', `is_muted` tinyint(1) NULL DEFAULT 0 COMMENT '是否免打扰', `is_special_care` tinyint(1) NULL DEFAULT 0 COMMENT '是否特别关心', `unread_count` int NULL DEFAULT 0 COMMENT '未读消息数', `last_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后一条消息内容', `last_time` datetime NULL DEFAULT NULL COMMENT '最后消息时间', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_chat_conversations_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_chat_conversations_target_id`(`target_id` ASC) USING BTREE, INDEX `idx_chat_conversations_room_id`(`room_id` ASC) USING BTREE, INDEX `idx_chat_conversations_last_time`(`last_time` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户会话表,记录每个用户的最近会话列表和未读信息' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for chat_messages -- ---------------------------- DROP TABLE IF EXISTS `chat_messages`; CREATE TABLE `chat_messages` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '消息唯一标识ID', `room_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '房间ID', `sender_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发送者用户ID', `sender_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发送者IP', `ip_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IP归属地', `receiver_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '接收者用户ID', `message_type` bigint NULL DEFAULT NULL COMMENT '消息类型', `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '消息内容', `extra` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '扩展字段,存储JSON格式的元数据', `duration` bigint NULL DEFAULT NULL COMMENT '通话时长(秒)', `call_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关联的通话ID', `call_status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '通话状态', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_chat_messages_room_id`(`room_id` ASC) USING BTREE, INDEX `idx_chat_messages_sender_user_id`(`sender_user_id` ASC) USING BTREE, INDEX `idx_chat_messages_receiver_user_id`(`receiver_user_id` ASC) USING BTREE, INDEX `idx_chat_messages_call_id`(`call_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 104 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '聊天消息表,持久化存储聊天记录,包括文本、多媒体和信令状态' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for chat_rooms -- ---------------------------- DROP TABLE IF EXISTS `chat_rooms`; CREATE TABLE `chat_rooms` ( `room_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '房间ID', `room_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '房间类型', `room_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '房间名称', `room_avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '房间头像', `owner_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '群主ID(群聊必填,单聊为0)', `admin_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '管理员ID列表(逗号分隔)', `creator_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建者ID', `last_message_time` datetime NULL DEFAULT NULL COMMENT '最后消息时间', `last_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '最后消息内容', `announcement` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '群公告', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', `members` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '成员列表JSON', PRIMARY KEY (`room_id`) USING BTREE, INDEX `idx_chat_rooms_room_type`(`room_type` ASC) USING BTREE, INDEX `idx_chat_rooms_owner_id`(`owner_id` ASC) USING BTREE, INDEX `idx_chat_rooms_creator_id`(`creator_id` ASC) USING BTREE, INDEX `idx_chat_rooms_last_message_time`(`last_message_time` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '聊天房间表,支持点对点和群聊' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for contact_groups -- ---------------------------- DROP TABLE IF EXISTS `contact_groups`; CREATE TABLE `contact_groups` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID', `group_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '分组名称', `sort_order` bigint NULL DEFAULT 0 COMMENT '排序顺序', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_contact_groups_user_id`(`user_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '联系人分组表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for friend_requests -- ---------------------------- DROP TABLE IF EXISTS `friend_requests`; CREATE TABLE `friend_requests` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `from_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发送者用户ID', `to_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '接收者用户ID', `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '申请消息', `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'pending' COMMENT '状态', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_friend_requests_from_user_id`(`from_user_id` ASC) USING BTREE, INDEX `idx_friend_requests_to_user_id`(`to_user_id` ASC) USING BTREE, INDEX `idx_friend_requests_status`(`status` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '好友申请表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for login_logs -- ---------------------------- DROP TABLE IF EXISTS `login_logs`; CREATE TABLE `login_logs` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录账号', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录ID', `location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '归属地', `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IP地址', `success` tinyint(1) NULL DEFAULT NULL COMMENT '成功状态', `login_time` datetime NULL DEFAULT NULL COMMENT '登录时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_login_logs_account`(`account` ASC) USING BTREE, INDEX `idx_login_logs_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_login_logs_ip`(`ip` ASC) USING BTREE, INDEX `idx_login_logs_success`(`success` ASC) USING BTREE, INDEX `idx_login_logs_login_time`(`login_time` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '登录日志表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for moment_comments -- ---------------------------- DROP TABLE IF EXISTS `moment_comments`; CREATE TABLE `moment_comments` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '评论ID', `moment_id` bigint NULL DEFAULT NULL COMMENT '动态ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '评论者ID', `reply_to_comment_id` bigint NULL DEFAULT NULL COMMENT '回复的评论ID', `reply_to_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '回复的用户ID', `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '评论内容', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否已删除', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_moment_comments_moment_id`(`moment_id` ASC) USING BTREE, INDEX `idx_moment_comments_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_moment_comments_reply_to`(`reply_to_comment_id` ASC) USING BTREE, INDEX `idx_moment_comments_reply_to_comment_id`(`reply_to_comment_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '动态评论表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for moment_likes -- ---------------------------- DROP TABLE IF EXISTS `moment_likes`; CREATE TABLE `moment_likes` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `moment_id` bigint NULL DEFAULT NULL COMMENT '动态ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '点赞用户ID', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_moment_user`(`moment_id` ASC, `user_id` ASC) USING BTREE, INDEX `idx_moment_likes_moment_id`(`moment_id` ASC) USING BTREE, INDEX `idx_moment_likes_user_id`(`user_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '动态点赞表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for moment_notifications -- ---------------------------- DROP TABLE IF EXISTS `moment_notifications`; CREATE TABLE `moment_notifications` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '通知ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '接收通知的用户ID', `from_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '触发通知的用户ID', `moment_id` bigint NULL DEFAULT NULL COMMENT '关联的动态ID', `type` tinyint NULL DEFAULT NULL COMMENT '通知类型', `comment_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '关联的评论ID', `is_read` tinyint(1) NULL DEFAULT 0 COMMENT '是否已读', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_moment_notifications_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_moment_notifications_is_read`(`is_read` ASC) USING BTREE, INDEX `idx_moment_notifications_created_at`(`created_at` ASC) USING BTREE, INDEX `idx_moment_notifications_moment_id`(`moment_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '朋友圈通知表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for moments -- ---------------------------- DROP TABLE IF EXISTS `moments`; CREATE TABLE `moments` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '动态ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发布者ID', `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '文字内容', `media_type` tinyint NULL DEFAULT 0 COMMENT '媒体类型', `media_urls` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '媒体URL列表', `location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '位置信息', `visibility` tinyint NULL DEFAULT 0 COMMENT '可见性', `visible_user_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '可见用户ID列表', `mention_user_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '@的用户ID列表', `topic_tags` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '话题标签', `like_count` int NULL DEFAULT 0 COMMENT '点赞数', `comment_count` int NULL DEFAULT 0 COMMENT '评论数', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否已删除', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_moments_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_moments_created_at`(`created_at` ASC) USING BTREE, INDEX `idx_moments_visibility`(`visibility` ASC) USING BTREE, INDEX `idx_moments_is_deleted`(`is_deleted` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '朋友圈动态表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for room_members -- ---------------------------- DROP TABLE IF EXISTS `room_members`; CREATE TABLE `room_members` ( `room_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '房间ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID', `role` tinyint(1) NOT NULL DEFAULT 0 COMMENT '成员角色(0=成员,1=管理员,2=群主)', `joined_at` datetime(3) NULL DEFAULT NULL COMMENT '加入时间', `muted_until` datetime NULL DEFAULT NULL COMMENT '禁言到期时间', PRIMARY KEY (`room_id`, `user_id`) USING BTREE, INDEX `idx_room_members_user_id`(`user_id` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '房间成员表,存储房间与用户的关联关系' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for user_contacts -- ---------------------------- DROP TABLE IF EXISTS `user_contacts`; CREATE TABLE `user_contacts` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户ID', `contact_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '联系人ID', `room_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '房间ID', `remark_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注名称', `group_id` bigint NULL DEFAULT NULL COMMENT '分组ID', `is_top` tinyint(1) NULL DEFAULT 0 COMMENT '是否置顶', `is_muted` tinyint(1) NULL DEFAULT 0 COMMENT '是否免打扰', `is_special_care` tinyint(1) NULL DEFAULT 0 COMMENT '是否特别关心', `is_blocked` tinyint(1) NULL DEFAULT 0 COMMENT '是否拉黑', `last_chat_time` datetime NULL DEFAULT NULL COMMENT '最后聊天时间', `last_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '最后一条消息', `unread_count` bigint NULL DEFAULT 0 COMMENT '未读消息数', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_user_contacts_user_id`(`user_id` ASC) USING BTREE, INDEX `idx_user_contacts_contact_id`(`contact_id` ASC) USING BTREE, INDEX `idx_user_contacts_room_id`(`room_id` ASC) USING BTREE, INDEX `idx_user_contacts_group_id`(`group_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户联系人表,存储好友关系、分组、备注等信息' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for users -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户唯一ID', `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码(加密后)', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名称', `avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户头像', `desc` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户描述或签名', `region` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '地区', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `idx_users_email`(`email` ASC) USING BTREE, UNIQUE INDEX `idx_users_phone`(`phone` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户基本信息表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for verification_codes -- ---------------------------- DROP TABLE IF EXISTS `verification_codes`; CREATE TABLE `verification_codes` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `target` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱或手机号', `code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '验证码', `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类型', `expires_at` datetime NULL DEFAULT NULL COMMENT '过期时间', `created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_verification_codes_target`(`target` ASC) USING BTREE, INDEX `idx_verification_codes_expires_at`(`expires_at` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '验证码表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for message_read_receipts -- ---------------------------- DROP TABLE IF EXISTS `message_read_receipts`; CREATE TABLE `message_read_receipts` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `message_id` bigint UNSIGNED NOT NULL COMMENT '消息ID', `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '已读用户ID', `read_at` datetime(3) NOT NULL COMMENT '已读时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_msg_user`(`message_id` ASC, `user_id` ASC) USING BTREE, INDEX `idx_message_read_receipts_user_id`(`user_id` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '消息已读回执表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for user_settings -- ---------------------------- DROP TABLE IF EXISTS `user_settings`; CREATE TABLE `user_settings` ( `user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID', `setting_key` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '设置键', `setting_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '设置值', `updated_at` datetime(3) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`user_id`, `setting_key`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户个性化设置表' ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;