156 lines
5.2 KiB
SQL
156 lines
5.2 KiB
SQL
-- =====================================================
|
||
-- 家长端评价功能 - 数据库脚本(简化版)
|
||
-- 执行日期:2026-01-23
|
||
-- 说明:兼容所有MySQL版本
|
||
-- =====================================================
|
||
|
||
-- 使用数据库
|
||
USE peixue;
|
||
|
||
-- =====================================================
|
||
-- 第一步:创建评价表
|
||
-- =====================================================
|
||
CREATE TABLE IF NOT EXISTS `review` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '评价ID',
|
||
`order_id` BIGINT NOT NULL COMMENT '订单ID',
|
||
`user_id` BIGINT NOT NULL COMMENT '用户ID(家长)',
|
||
`teacher_id` BIGINT NOT NULL COMMENT '陪伴员ID',
|
||
`student_id` BIGINT DEFAULT NULL COMMENT '学生ID',
|
||
|
||
-- 评分字段
|
||
`service_score` INT NOT NULL DEFAULT 5 COMMENT '服务态度评分(1-5星)',
|
||
`quality_score` INT NOT NULL DEFAULT 5 COMMENT '教学质量评分(1-5星)',
|
||
`punctuality_score` INT NOT NULL DEFAULT 5 COMMENT '准时性评分(1-5星)',
|
||
`overall_score` DECIMAL(3,1) NOT NULL DEFAULT 5.0 COMMENT '综合评分(自动计算平均分)',
|
||
|
||
-- 评价内容
|
||
`content` TEXT COMMENT '评价内容(最多200字)',
|
||
`images` TEXT COMMENT '评价图片(JSON数组,最多9张)',
|
||
|
||
-- 评价状态
|
||
`is_anonymous` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否匿名(0-否,1-是)',
|
||
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '评价状态(1-正常,0-已删除)',
|
||
|
||
-- 回复信息
|
||
`reply_content` TEXT COMMENT '陪伴员回复内容',
|
||
`reply_time` DATETIME DEFAULT NULL COMMENT '回复时间',
|
||
|
||
-- 租户和时间
|
||
`tenant_id` BIGINT DEFAULT 1 COMMENT '租户ID',
|
||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_order_id` (`order_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_teacher_id` (`teacher_id`),
|
||
KEY `idx_student_id` (`student_id`),
|
||
KEY `idx_tenant_id` (`tenant_id`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评价表';
|
||
|
||
-- =====================================================
|
||
-- 第二步:检查并添加 reviewed 字段到 order 表
|
||
-- =====================================================
|
||
|
||
-- 先检查字段是否存在
|
||
SET @col_exists = 0;
|
||
SELECT COUNT(*) INTO @col_exists
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = 'peixue'
|
||
AND TABLE_NAME = 'order'
|
||
AND COLUMN_NAME = 'reviewed';
|
||
|
||
-- 如果字段不存在,则添加
|
||
SET @sql = IF(@col_exists = 0,
|
||
'ALTER TABLE `order` ADD COLUMN `reviewed` TINYINT(1) NOT NULL DEFAULT 0 COMMENT ''是否已评价(0-未评价,1-已评价)'' AFTER `status`',
|
||
'SELECT ''字段 reviewed 已存在,跳过添加'' AS message'
|
||
);
|
||
|
||
PREPARE stmt FROM @sql;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
-- =====================================================
|
||
-- 第三步:插入测试数据
|
||
-- =====================================================
|
||
|
||
-- 清空可能存在的测试数据
|
||
DELETE FROM `review` WHERE id IN (1, 2, 3);
|
||
|
||
-- 插入测试数据
|
||
INSERT INTO `review` (
|
||
`id`, `order_id`, `user_id`, `teacher_id`, `student_id`,
|
||
`service_score`, `quality_score`, `punctuality_score`, `overall_score`,
|
||
`content`, `images`, `is_anonymous`, `tenant_id`
|
||
) VALUES
|
||
(1, 102, 1, 1, 1, 5, 5, 5, 5.0, '陪伴员非常专业,孩子很喜欢,会继续选择这位老师!', '[]', 0, 1),
|
||
(2, 103, 1, 2, 1, 4, 4, 5, 4.3, '服务态度很好,准时到达,孩子学习有进步。', '[]', 0, 1),
|
||
(3, 104, 2, 1, 2, 5, 4, 5, 4.7, '老师很有耐心,讲解清晰,孩子听得很认真。', '[]', 1, 1);
|
||
|
||
-- =====================================================
|
||
-- 第四步:更新订单的评价状态
|
||
-- =====================================================
|
||
UPDATE `order` SET `reviewed` = 1 WHERE `id` IN (102, 103, 104);
|
||
|
||
-- =====================================================
|
||
-- 第五步:验证数据
|
||
-- =====================================================
|
||
|
||
-- 查询评价记录
|
||
SELECT
|
||
'=== 评价记录 ===' AS info;
|
||
|
||
SELECT
|
||
r.id,
|
||
r.order_id,
|
||
o.order_no,
|
||
r.user_id,
|
||
r.teacher_id,
|
||
r.overall_score,
|
||
r.content,
|
||
r.is_anonymous,
|
||
r.create_time
|
||
FROM review r
|
||
LEFT JOIN `order` o ON r.order_id = o.id
|
||
ORDER BY r.create_time DESC
|
||
LIMIT 10;
|
||
|
||
-- 查询订单评价状态
|
||
SELECT
|
||
'=== 订单评价状态 ===' AS info;
|
||
|
||
SELECT
|
||
id,
|
||
order_no,
|
||
status,
|
||
reviewed,
|
||
service_name
|
||
FROM `order`
|
||
WHERE status = 4
|
||
ORDER BY id DESC
|
||
LIMIT 10;
|
||
|
||
-- 统计陪伴员评价数据
|
||
SELECT
|
||
'=== 陪伴员评价统计 ===' AS info;
|
||
|
||
SELECT
|
||
teacher_id,
|
||
COUNT(*) as review_count,
|
||
ROUND(AVG(overall_score), 1) as avg_score,
|
||
ROUND(AVG(service_score), 1) as avg_service_score,
|
||
ROUND(AVG(quality_score), 1) as avg_quality_score,
|
||
ROUND(AVG(punctuality_score), 1) as avg_punctuality_score
|
||
FROM review
|
||
WHERE deleted = 0 AND status = 1
|
||
GROUP BY teacher_id;
|
||
|
||
-- =====================================================
|
||
-- 执行完成提示
|
||
-- =====================================================
|
||
SELECT
|
||
'✅ 评价功能数据库脚本执行完成!' AS message,
|
||
'请检查上面的验证数据是否正确' AS next_step;
|