zhibo/fan_group_real_data.sql

121 lines
4.7 KiB
MySQL
Raw Normal View History

2026-01-05 16:58:39 +08:00
-- ============================================
-- 粉丝团真实数据设置
-- 确保成员来自真实用户,消息与成员对应
-- ============================================
-- 1. 先查看系统中的真实用户
SELECT '=== 系统真实用户 ===' as info;
SELECT uid, nickname, avatar, phone FROM eb_user WHERE is_del = 0 LIMIT 20;
-- 2. 查看当前粉丝团
SELECT '=== 当前粉丝团 ===' as info;
SELECT id, name, anchor_id, anchor_name, member_count FROM eb_fan_group;
-- 3. 清空测试数据,重新基于真实用户创建
DELETE FROM eb_fan_group_member;
DELETE FROM eb_group_message;
-- 4. 为每个粉丝团添加真实用户作为成员
-- 粉丝团1 (anchor_id=121) 的成员 - 从真实用户中选取(排除主播自己)
INSERT INTO eb_fan_group_member (group_id, uid, nickname, level, intimacy, status, join_time)
SELECT 1, u.uid, u.nickname,
FLOOR(1 + RAND() * 5) as level, -- 随机等级1-5
FLOOR(100 + RAND() * 5000) as intimacy, -- 随机亲密度
1,
DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 30) DAY)
FROM eb_user u
WHERE u.uid != 121 AND u.is_del = 0 AND u.nickname IS NOT NULL AND u.nickname != ''
ORDER BY RAND()
LIMIT 5;
-- 粉丝团2 (anchor_id=122) 的成员
INSERT INTO eb_fan_group_member (group_id, uid, nickname, level, intimacy, status, join_time)
SELECT 2, u.uid, u.nickname,
FLOOR(1 + RAND() * 5) as level,
FLOOR(100 + RAND() * 5000) as intimacy,
1,
DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 30) DAY)
FROM eb_user u
WHERE u.uid != 122 AND u.is_del = 0 AND u.nickname IS NOT NULL AND u.nickname != ''
AND u.uid NOT IN (SELECT uid FROM eb_fan_group_member WHERE group_id = 1)
ORDER BY RAND()
LIMIT 5;
-- 粉丝团3 (anchor_id=123) 的成员
INSERT INTO eb_fan_group_member (group_id, uid, nickname, level, intimacy, status, join_time)
SELECT 3, u.uid, u.nickname,
FLOOR(1 + RAND() * 5) as level,
FLOOR(100 + RAND() * 5000) as intimacy,
1,
DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 30) DAY)
FROM eb_user u
WHERE u.uid != 123 AND u.is_del = 0 AND u.nickname IS NOT NULL AND u.nickname != ''
AND u.uid NOT IN (SELECT uid FROM eb_fan_group_member WHERE group_id IN (1,2))
ORDER BY RAND()
LIMIT 3;
-- 5. 更新粉丝团成员数量
UPDATE eb_fan_group fg SET member_count = (
SELECT COUNT(*) FROM eb_fan_group_member m WHERE m.group_id = fg.id AND m.status = 1
);
-- 6. 为粉丝团添加真实成员的聊天消息
-- 粉丝团1的消息由该粉丝团的真实成员发送
INSERT INTO eb_group_message (group_id, sender_id, content, message_type, create_time)
SELECT 1, m.uid,
CASE FLOOR(RAND() * 5)
WHEN 0 THEN '大家好,很高兴加入粉丝团!'
WHEN 1 THEN '主播今天直播太精彩了!'
WHEN 2 THEN '支持主播,冲冲冲!'
WHEN 3 THEN '期待下次直播~'
ELSE '粉丝团的氛围真好!'
END,
'text',
DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 7) DAY)
FROM eb_fan_group_member m
WHERE m.group_id = 1 AND m.status = 1
LIMIT 3;
-- 粉丝团2的消息
INSERT INTO eb_group_message (group_id, sender_id, content, message_type, create_time)
SELECT 2, m.uid,
CASE FLOOR(RAND() * 5)
WHEN 0 THEN '新人报到!'
WHEN 1 THEN '主播唱歌太好听了!'
WHEN 2 THEN '今天的游戏直播太刺激了'
WHEN 3 THEN '大家晚上好~'
ELSE '感谢主播的精彩表演!'
END,
'text',
DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 7) DAY)
FROM eb_fan_group_member m
WHERE m.group_id = 2 AND m.status = 1
LIMIT 3;
-- 7. 验证数据完整性
SELECT '=== 粉丝团成员(关联真实用户)===' as info;
SELECT m.id, m.group_id, fg.name as fan_group_name,
m.uid, m.nickname, u.nickname as real_nickname, u.avatar,
m.level, m.intimacy, m.join_time
FROM eb_fan_group_member m
LEFT JOIN eb_fan_group fg ON m.group_id = fg.id
LEFT JOIN eb_user u ON m.uid = u.uid
WHERE m.status = 1
ORDER BY m.group_id, m.level DESC;
SELECT '=== 聊天消息(关联真实发送者)===' as info;
SELECT gm.id, gm.group_id, fg.name as fan_group_name,
gm.sender_id, u.nickname as sender_name, u.avatar as sender_avatar,
gm.content, gm.create_time
FROM eb_group_message gm
LEFT JOIN eb_fan_group fg ON gm.group_id = fg.id
LEFT JOIN eb_user u ON gm.sender_id = u.uid
WHERE gm.is_deleted = 0
ORDER BY gm.group_id, gm.create_time DESC;
SELECT '=== 粉丝团统计 ===' as info;
SELECT fg.id, fg.name, fg.anchor_name, fg.member_count,
(SELECT COUNT(*) FROM eb_fan_group_member m WHERE m.group_id = fg.id AND m.status = 1) as actual_members,
(SELECT COUNT(*) FROM eb_group_message gm WHERE gm.group_id = fg.id AND gm.is_deleted = 0) as message_count
FROM eb_fan_group fg;