CREATE TABLE IF NOT EXISTS "im_private_message" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "client_message_id" varchar(64) DEFAULT NULL COMMENT '客户端消息编号', "sender_id" bigint NOT NULL COMMENT '发送人编号', "receiver_id" bigint NOT NULL COMMENT '接收人编号', "type" smallint NOT NULL COMMENT '消息类型', "content" varchar(4096) DEFAULT NULL COMMENT '消息内容', "status" tinyint NOT NULL COMMENT '消息状态', "send_time" timestamp NOT NULL COMMENT '发送时间', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 私聊消息表'; CREATE TABLE IF NOT EXISTS "im_group_message" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "client_message_id" varchar(64) DEFAULT NULL COMMENT '客户端消息编号', "sender_id" bigint NOT NULL COMMENT '发送人编号', "group_id" bigint NOT NULL COMMENT '群编号', "type" smallint NOT NULL COMMENT '消息类型', "content" varchar(4096) DEFAULT NULL COMMENT '消息内容', "status" tinyint NOT NULL COMMENT '消息状态', "send_time" timestamp NOT NULL COMMENT '发送时间', "receiver_user_ids" varchar(1024) DEFAULT NULL COMMENT '定向接收用户编号列表', "at_user_ids" varchar(1024) DEFAULT NULL COMMENT '@ 目标用户编号列表', "receipt_status" tinyint NOT NULL DEFAULT 0 COMMENT '回执状态', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 群聊消息表'; CREATE TABLE IF NOT EXISTS "im_group" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "name" varchar(64) NOT NULL COMMENT '群名称', "owner_user_id" bigint NOT NULL COMMENT '群主用户编号', "avatar" varchar(512) DEFAULT NULL COMMENT '群头像', "notice" varchar(2048) DEFAULT NULL COMMENT '群公告', "banned" bit DEFAULT FALSE COMMENT '是否封禁', "banned_reason" varchar(512) DEFAULT NULL COMMENT '封禁原因', "banned_time" timestamp DEFAULT NULL COMMENT '封禁时间', "status" tinyint NOT NULL COMMENT '群状态', "dissolved_time" timestamp DEFAULT NULL COMMENT '解散时间', "muted_all" bit DEFAULT FALSE COMMENT '是否全群禁言', "join_approval" bit NOT NULL DEFAULT FALSE COMMENT '进群是否需群主 / 管理员审批;false 自由进群,true 需审批', "pinned_message_ids" varchar(128) DEFAULT NULL COMMENT '群置顶消息编号列表,逗号分隔', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 群信息表'; CREATE TABLE IF NOT EXISTS "im_group_member" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "group_id" bigint NOT NULL COMMENT '群编号', "user_id" bigint NOT NULL COMMENT '用户编号', "display_user_name" varchar(64) DEFAULT NULL COMMENT '组内显示名', "group_remark" varchar(64) DEFAULT NULL COMMENT '群备注', "silent" bit DEFAULT FALSE COMMENT '是否免打扰', "status" tinyint NOT NULL COMMENT '成员状态', "role" tinyint NOT NULL DEFAULT 3 COMMENT '成员角色:1=群主 2=管理员 3=普通成员', "join_time" timestamp DEFAULT NULL COMMENT '入群时间', "add_source" tinyint DEFAULT NULL COMMENT '加入来源', "inviter_user_id" bigint DEFAULT NULL COMMENT '邀请人用户编号;用户主动申请进群时为 NULL', "quit_time" timestamp DEFAULT NULL COMMENT '退群时间', "mute_end_time" timestamp DEFAULT NULL COMMENT '禁言到期时间', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 群成员表'; CREATE TABLE IF NOT EXISTS "im_friend" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "user_id" bigint NOT NULL COMMENT '用户编号', "friend_user_id" bigint NOT NULL COMMENT '好友用户编号', "silent" bit DEFAULT FALSE COMMENT '是否免打扰', "display_name" varchar(64) NOT NULL DEFAULT '' COMMENT '好友展示备注(仅自己可见)', "add_source" tinyint DEFAULT NULL COMMENT '添加来源', "pinned" bit DEFAULT FALSE COMMENT '是否置顶联系人', "blocked" bit DEFAULT FALSE COMMENT '是否拉黑', "status" tinyint NOT NULL COMMENT '好友状态', "add_time" timestamp DEFAULT NULL COMMENT '添加好友时间', "delete_time" timestamp DEFAULT NULL COMMENT '删除好友时间', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id"), CONSTRAINT "uk_user_friend" UNIQUE ("user_id", "friend_user_id", "tenant_id") ) COMMENT 'IM 好友关系表'; CREATE TABLE IF NOT EXISTS "im_friend_request" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "from_user_id" bigint NOT NULL COMMENT '发起方用户编号', "to_user_id" bigint NOT NULL COMMENT '接收方用户编号', "handle_result" tinyint NOT NULL DEFAULT 0 COMMENT '处理结果;0未处理;1同意;2拒绝', "apply_content" varchar(255) DEFAULT NULL COMMENT '申请理由', "handle_content" varchar(255) DEFAULT NULL COMMENT '处理理由', "display_name" varchar(64) DEFAULT NULL COMMENT '发起方对接收方的备注', "add_source" tinyint DEFAULT NULL COMMENT '添加来源', "handle_time" timestamp DEFAULT NULL COMMENT '处理时间', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id"), CONSTRAINT "uk_im_friend_request" UNIQUE ("from_user_id", "to_user_id", "tenant_id") ) COMMENT 'IM 好友申请记录表'; CREATE TABLE IF NOT EXISTS "im_group_request" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "group_id" bigint NOT NULL COMMENT '群编号', "user_id" bigint NOT NULL COMMENT '申请人 / 被邀请人用户编号', "inviter_user_id" bigint DEFAULT NULL COMMENT '邀请人用户编号;NULL=主动申请;非NULL=被邀请待审批', "apply_content" varchar(255) DEFAULT NULL COMMENT '申请理由', "add_source" tinyint DEFAULT NULL COMMENT '加入来源', "handle_result" tinyint NOT NULL DEFAULT 0 COMMENT '处理结果;0未处理;1同意;2拒绝', "handle_user_id" bigint DEFAULT NULL COMMENT '处理人用户编号', "handle_content" varchar(255) DEFAULT NULL COMMENT '处理理由', "handle_time" timestamp DEFAULT NULL COMMENT '处理时间', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id"), CONSTRAINT "uk_im_group_request" UNIQUE ("group_id", "user_id", "tenant_id") ) COMMENT 'IM 加群申请记录表'; CREATE TABLE IF NOT EXISTS "im_face_pack" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "name" varchar(64) NOT NULL COMMENT '表情包名称', "icon_url" varchar(512) DEFAULT NULL COMMENT '表情包图标 URL(面板底部 tab 显示)', "sort" int NOT NULL DEFAULT 0 COMMENT '排序', "status" tinyint NOT NULL COMMENT '状态', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 表情包表'; CREATE TABLE IF NOT EXISTS "im_face_pack_item" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "pack_id" bigint NOT NULL COMMENT '所属表情包编号', "url" varchar(512) NOT NULL COMMENT '表情图 URL', "name" varchar(64) DEFAULT NULL COMMENT '表情名(可选;如「狗头」「捂脸」)', "width" int NOT NULL DEFAULT 0 COMMENT '渲染宽度(像素)', "height" int NOT NULL DEFAULT 0 COMMENT '渲染高度(像素)', "sort" int NOT NULL DEFAULT 0 COMMENT '排序', "status" tinyint NOT NULL COMMENT '状态', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 表情包项表'; CREATE TABLE IF NOT EXISTS "im_face_user_item" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "user_id" bigint NOT NULL COMMENT '所属用户编号', "url" varchar(512) NOT NULL COMMENT '表情图 URL', "name" varchar(64) DEFAULT NULL COMMENT '表情名(可选)', "width" int NOT NULL DEFAULT 0 COMMENT '渲染宽度(像素)', "height" int NOT NULL DEFAULT 0 COMMENT '渲染高度(像素)', "source_message_id" bigint DEFAULT NULL COMMENT '来源消息编号(从消息「添加到表情」时记录;自己上传则为 NULL)', "sort" int NOT NULL DEFAULT 0 COMMENT '排序', "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, "tenant_id" bigint NOT NULL DEFAULT 0, PRIMARY KEY ("id") ) COMMENT 'IM 用户私有表情表';