peixue-dev/Archive/peidu-temp-files/sql/verify_review_deployment_2026-01-23.sql

200 lines
5.7 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.

-- =====================================================
-- 评价功能部署验证脚本
-- 执行日期2026-01-23
-- 用途:验证评价功能是否正确部署
-- =====================================================
USE peixue;
-- =====================================================
-- 第一步检查review表是否存在
-- =====================================================
SELECT
'=== 检查review表 ===' AS step,
CASE
WHEN COUNT(*) > 0 THEN '✅ review表已存在'
ELSE '❌ review表不存在请执行 create_review_table_simple_2026-01-23.sql'
END AS result
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'peixue'
AND TABLE_NAME = 'review';
-- =====================================================
-- 第二步检查order表的reviewed字段
-- =====================================================
SELECT
'=== 检查order.reviewed字段 ===' AS step,
CASE
WHEN COUNT(*) > 0 THEN '✅ reviewed字段已存在'
ELSE '❌ reviewed字段不存在请执行 create_review_table_simple_2026-01-23.sql'
END AS result
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'peixue'
AND TABLE_NAME = 'order'
AND COLUMN_NAME = 'reviewed';
-- =====================================================
-- 第三步检查review表结构
-- =====================================================
SELECT
'=== review表结构 ===' AS info;
SHOW COLUMNS FROM review;
-- =====================================================
-- 第四步:检查测试数据
-- =====================================================
SELECT
'=== 测试评价数据 ===' AS info;
SELECT
id,
order_id,
user_id,
teacher_id,
service_score,
quality_score,
punctuality_score,
overall_score,
content,
is_anonymous,
create_time
FROM review
ORDER BY create_time DESC
LIMIT 5;
-- =====================================================
-- 第五步:检查订单评价状态
-- =====================================================
SELECT
'=== 订单评价状态 ===' AS info;
SELECT
id,
order_no,
status,
CASE
WHEN reviewed IS NULL THEN '❌ reviewed字段不存在'
WHEN reviewed = 1 THEN '✅ 已评价'
WHEN reviewed = 0 THEN '⏳ 未评价'
ELSE '❓ 未知状态'
END AS review_status,
service_name,
service_date
FROM `order`
WHERE status = 4
ORDER BY id DESC
LIMIT 10;
-- =====================================================
-- 第六步:统计评价数据
-- =====================================================
SELECT
'=== 评价统计 ===' AS info;
SELECT
COUNT(*) as total_reviews,
COUNT(DISTINCT user_id) as total_users,
COUNT(DISTINCT teacher_id) as total_teachers,
ROUND(AVG(overall_score), 2) as avg_overall_score,
ROUND(AVG(service_score), 2) as avg_service_score,
ROUND(AVG(quality_score), 2) as avg_quality_score,
ROUND(AVG(punctuality_score), 2) as avg_punctuality_score,
SUM(CASE WHEN is_anonymous = 1 THEN 1 ELSE 0 END) as anonymous_count
FROM review
WHERE deleted = 0 AND status = 1;
-- =====================================================
-- 第七步:检查陪伴员评价统计
-- =====================================================
SELECT
'=== 陪伴员评价统计 ===' AS info;
SELECT
r.teacher_id,
t.name as teacher_name,
COUNT(*) as review_count,
ROUND(AVG(r.overall_score), 1) as avg_score,
ROUND(AVG(r.service_score), 1) as avg_service_score,
ROUND(AVG(r.quality_score), 1) as avg_quality_score,
ROUND(AVG(r.punctuality_score), 1) as avg_punctuality_score,
MAX(r.create_time) as last_review_time
FROM review r
LEFT JOIN teacher t ON r.teacher_id = t.id
WHERE r.deleted = 0 AND r.status = 1
GROUP BY r.teacher_id, t.name
ORDER BY review_count DESC;
-- =====================================================
-- 第八步:检查用户评价统计
-- =====================================================
SELECT
'=== 用户评价统计 ===' AS info;
SELECT
r.user_id,
u.nickname as user_name,
COUNT(*) as review_count,
ROUND(AVG(r.overall_score), 1) as avg_score,
SUM(CASE WHEN r.is_anonymous = 1 THEN 1 ELSE 0 END) as anonymous_count,
MAX(r.create_time) as last_review_time
FROM review r
LEFT JOIN user u ON r.user_id = u.id
WHERE r.deleted = 0 AND r.status = 1
GROUP BY r.user_id, u.nickname
ORDER BY review_count DESC;
-- =====================================================
-- 第九步:检查待评价订单
-- =====================================================
SELECT
'=== 待评价订单(已完成但未评价)===' AS info;
SELECT
o.id,
o.order_no,
o.user_id,
o.teacher_id,
o.service_name,
o.service_date,
o.complete_time,
CASE
WHEN o.reviewed = 1 THEN '✅ 已评价'
WHEN o.reviewed = 0 THEN '⏳ 待评价'
ELSE '❓ 未知'
END AS review_status
FROM `order` o
WHERE o.status = 4
AND (o.reviewed = 0 OR o.reviewed IS NULL)
ORDER BY o.complete_time DESC
LIMIT 10;
-- =====================================================
-- 第十步:验证评价与订单的关联
-- =====================================================
SELECT
'=== 评价与订单关联验证 ===' AS info;
SELECT
r.id as review_id,
r.order_id,
o.order_no,
o.reviewed as order_reviewed,
CASE
WHEN o.id IS NULL THEN '❌ 订单不存在'
WHEN o.reviewed = 1 THEN '✅ 订单已标记为已评价'
ELSE '❌ 订单未标记为已评价'
END AS validation_result
FROM review r
LEFT JOIN `order` o ON r.order_id = o.id
ORDER BY r.create_time DESC
LIMIT 10;
-- =====================================================
-- 验证完成提示
-- =====================================================
SELECT
'✅ 验证脚本执行完成!' AS message,
'请检查上面的验证结果' AS next_step,
'如果发现问题,请执行 create_review_table_simple_2026-01-23.sql' AS solution;