zhibo/ban_system_tables.sql

103 lines
5.4 KiB
MySQL
Raw Normal View History

-- =====================================================
-- 封禁系统数据库表结构
-- 包含用户封禁、房间封禁功能
-- =====================================================
-- 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;