103 lines
5.4 KiB
SQL
103 lines
5.4 KiB
SQL
-- =====================================================
|
||
-- 封禁系统数据库表结构
|
||
-- 包含用户封禁、房间封禁功能
|
||
-- =====================================================
|
||
|
||
-- 1. 用户封禁表(管理员对用户的封禁)
|
||
CREATE TABLE IF NOT EXISTS `eb_user_ban` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`user_id` int(11) NOT NULL COMMENT '被封禁的用户ID',
|
||
`ban_type` varchar(20) NOT NULL DEFAULT 'permanent' COMMENT '封禁类型:permanent-永久, temporary-临时',
|
||
`reason` varchar(500) DEFAULT '' COMMENT '封禁原因',
|
||
`duration_days` int(11) DEFAULT NULL COMMENT '封禁天数(临时封禁时使用)',
|
||
`expire_time` datetime DEFAULT NULL COMMENT '封禁到期时间(临时封禁时使用)',
|
||
`operator_id` int(11) DEFAULT 0 COMMENT '操作人ID(管理员)',
|
||
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1-生效中, 0-已解除',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_expire_time` (`expire_time`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户封禁记录表';
|
||
|
||
-- 2. 房间封禁表(管理员对直播间的封禁)
|
||
CREATE TABLE IF NOT EXISTS `eb_room_ban` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`room_id` int(11) NOT NULL COMMENT '被封禁的房间ID',
|
||
`ban_type` varchar(20) NOT NULL DEFAULT 'permanent' COMMENT '封禁类型:permanent-永久, temporary-临时',
|
||
`reason` varchar(500) DEFAULT '' COMMENT '封禁原因',
|
||
`duration_days` int(11) DEFAULT NULL COMMENT '封禁天数(临时封禁时使用)',
|
||
`expire_time` datetime DEFAULT NULL COMMENT '封禁到期时间(临时封禁时使用)',
|
||
`operator_id` int(11) DEFAULT 0 COMMENT '操作人ID(管理员)',
|
||
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1-生效中, 0-已解除',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_room_id` (`room_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_expire_time` (`expire_time`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间封禁记录表';
|
||
|
||
-- 3. 确保用户黑名单表存在(用户间的拉黑)
|
||
CREATE TABLE IF NOT EXISTS `eb_user_blacklist` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`user_id` int(11) NOT NULL COMMENT '用户ID(发起拉黑的用户)',
|
||
`blocked_user_id` int(11) NOT NULL COMMENT '被拉黑的用户ID',
|
||
`blocker_nickname` varchar(100) DEFAULT '' COMMENT '拉黑者昵称',
|
||
`blocker_avatar` varchar(500) DEFAULT '' COMMENT '拉黑者头像',
|
||
`blocked_nickname` varchar(100) DEFAULT '' COMMENT '被拉黑者昵称',
|
||
`blocked_avatar` varchar(500) DEFAULT '' COMMENT '被拉黑者头像',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_blocked` (`user_id`, `blocked_user_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_blocked_user_id` (`blocked_user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户黑名单表';
|
||
|
||
-- 4. 确保房间黑名单表存在(直播间对用户的拉黑)
|
||
CREATE TABLE IF NOT EXISTS `eb_room_blacklist` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`room_id` int(11) NOT NULL COMMENT '房间ID',
|
||
`room_name` varchar(200) DEFAULT '' COMMENT '房间名称',
|
||
`blocked_user_id` int(11) NOT NULL COMMENT '被拉黑的用户ID',
|
||
`blocked_user_nickname` varchar(100) DEFAULT '' COMMENT '被拉黑用户昵称',
|
||
`blocked_user_avatar` varchar(500) DEFAULT '' COMMENT '被拉黑用户头像',
|
||
`reason` varchar(500) DEFAULT '' COMMENT '拉黑原因',
|
||
`operator_id` int(11) DEFAULT 0 COMMENT '操作人ID(主播或管理员)',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_room_user` (`room_id`, `blocked_user_id`),
|
||
KEY `idx_room_id` (`room_id`),
|
||
KEY `idx_blocked_user_id` (`blocked_user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间黑名单表';
|
||
|
||
-- 5. 添加测试数据
|
||
-- 用户封禁测试数据
|
||
INSERT IGNORE INTO eb_user_ban (user_id, ban_type, reason, duration_days, operator_id, status) VALUES
|
||
(999, 'permanent', '违规发布不良内容', NULL, 1, 1),
|
||
(998, 'temporary', '多次发送垃圾信息', 7, 1, 1);
|
||
|
||
-- 更新临时封禁的到期时间
|
||
UPDATE eb_user_ban SET expire_time = DATE_ADD(create_time, INTERVAL duration_days DAY)
|
||
WHERE ban_type = 'temporary' AND duration_days IS NOT NULL AND expire_time IS NULL;
|
||
|
||
-- 6. 验证表结构
|
||
SELECT '=== 封禁系统表结构 ===' as info;
|
||
SHOW TABLES LIKE 'eb_%ban%';
|
||
SHOW TABLES LIKE 'eb_%blacklist%';
|
||
|
||
SELECT '=== 用户封禁记录 ===' as info;
|
||
SELECT * FROM eb_user_ban ORDER BY create_time DESC LIMIT 5;
|
||
|
||
SELECT '=== 房间封禁记录 ===' as info;
|
||
SELECT * FROM eb_room_ban ORDER BY create_time DESC LIMIT 5;
|
||
|
||
SELECT '=== 用户黑名单 ===' as info;
|
||
SELECT * FROM eb_user_blacklist ORDER BY create_time DESC LIMIT 5;
|
||
|
||
SELECT '=== 房间黑名单 ===' as info;
|
||
SELECT * FROM eb_room_blacklist ORDER BY create_time DESC LIMIT 5;
|