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

200 lines
5.7 KiB
MySQL
Raw Normal View History

2026-02-28 17:26:03 +08:00
-- =====================================================
-- 评价功能部署验证脚本
-- 执行日期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;