200 lines
5.7 KiB
MySQL
200 lines
5.7 KiB
MySQL
|
|
-- =====================================================
|
|||
|
|
-- 评价功能部署验证脚本
|
|||
|
|
-- 执行日期: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;
|