zhibo/ban_system_tables.sql

103 lines
5.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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