zhibo/check_and_complete_fan_group.sql
2026-01-05 16:58:39 +08:00

134 lines
3.8 KiB
SQL

-- ============================================
-- 粉丝团系统完整检查与完善脚本
-- 执行此脚本以检查和完善粉丝团功能
-- ============================================
-- ==================== 第一部分:检查表结构 ====================
-- 1. 检查粉丝团表是否存在及结构
SELECT '=== 1. 粉丝团表结构 ===' as info;
DESC eb_fan_group;
-- 2. 检查粉丝团成员表结构
SELECT '=== 2. 粉丝团成员表结构 ===' as info;
DESC eb_fan_group_member;
-- 3. 检查群组消息表结构
SELECT '=== 3. 群组消息表结构 ===' as info;
DESC eb_group_message;
-- ==================== 第二部分:检查现有数据 ====================
-- 4. 查看当前粉丝团数据
SELECT '=== 4. 当前粉丝团列表 ===' as info;
SELECT
fg.id,
fg.name,
fg.anchor_id,
fg.anchor_name,
u.nickname as anchor_real_name,
u.avatar as anchor_avatar,
fg.badge,
fg.badge_color,
fg.member_count,
fg.status,
fg.create_time
FROM eb_fan_group fg
LEFT JOIN eb_user u ON fg.anchor_id = u.uid
ORDER BY fg.id;
-- 5. 查看粉丝团成员数据
SELECT '=== 5. 粉丝团成员列表 ===' as info;
SELECT
m.id,
m.group_id as fan_group_id,
fg.name as fan_group_name,
m.uid,
m.nickname as member_nickname,
u.nickname as real_nickname,
u.avatar,
m.level,
m.intimacy,
m.status,
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, m.intimacy DESC;
-- 6. 查看群组消息
SELECT '=== 6. 粉丝团聊天消息 ===' as info;
SELECT
gm.id,
gm.group_id,
fg.name as fan_group_name,
gm.sender_id,
u.nickname as sender_name,
gm.content,
gm.message_type,
gm.is_deleted,
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
LIMIT 50;
-- ==================== 第三部分:数据统计 ====================
-- 7. 粉丝团统计
SELECT '=== 7. 粉丝团统计 ===' as info;
SELECT
COUNT(*) as total_fan_groups,
SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as active_fan_groups,
SUM(member_count) as total_members
FROM eb_fan_group;
-- 8. 各粉丝团成员数量对比(实际 vs 记录)
SELECT '=== 8. 成员数量校验 ===' as info;
SELECT
fg.id,
fg.name,
fg.member_count as recorded_count,
COUNT(m.id) as actual_count,
CASE
WHEN fg.member_count = COUNT(m.id) THEN '✓ 一致'
ELSE '✗ 不一致'
END as status
FROM eb_fan_group fg
LEFT JOIN eb_fan_group_member m ON fg.id = m.group_id AND m.status = 1
GROUP BY fg.id, fg.name, fg.member_count;
-- ==================== 第四部分:数据修复 ====================
-- 9. 修复粉丝团成员数量(如果不一致)
SELECT '=== 9. 修复成员数量 ===' as info;
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
);
-- 10. 更新粉丝团主播名称(从用户表同步)
SELECT '=== 10. 同步主播名称 ===' as info;
UPDATE eb_fan_group fg
JOIN eb_user u ON fg.anchor_id = u.uid
SET fg.anchor_name = u.nickname
WHERE fg.anchor_name IS NULL OR fg.anchor_name = '' OR fg.anchor_name != u.nickname;
-- ==================== 第五部分:验证修复结果 ====================
-- 11. 再次检查成员数量
SELECT '=== 11. 修复后成员数量校验 ===' as info;
SELECT
fg.id,
fg.name,
fg.anchor_name,
fg.member_count as recorded_count,
COUNT(m.id) as actual_count
FROM eb_fan_group fg
LEFT JOIN eb_fan_group_member m ON fg.id = m.group_id AND m.status = 1
GROUP BY fg.id, fg.name, fg.anchor_name, fg.member_count;
SELECT '=== 粉丝团检查完成 ===' as info;