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

155 lines
5.2 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
-- 数据库peixue
-- 说明:完全兼容,可直接执行
-- =====================================================
-- 使用数据库
USE peixue;
-- =====================================================
-- 第一步:创建评价表
-- =====================================================
DROP TABLE IF EXISTS `review`;
CREATE TABLE `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='服务评价表';
-- =====================================================
-- 第二步为order表添加reviewed字段
-- =====================================================
-- 检查字段是否存在
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;
-- =====================================================
-- 第三步:插入测试数据
-- =====================================================
-- 插入测试数据(明确指定所有字段)
INSERT INTO `review` (
`order_id`,
`user_id`,
`teacher_id`,
`student_id`,
`service_score`,
`quality_score`,
`punctuality_score`,
`overall_score`,
`content`,
`images`,
`is_anonymous`,
`tenant_id`
) VALUES
(102, 1, 1, 1, 5, 5, 5, 5.0, '陪伴员非常专业,孩子很喜欢,会继续选择这位老师!', '[]', 0, 1),
(103, 1, 2, 1, 4, 4, 5, 4.3, '服务态度很好,准时到达,孩子学习有进步。', '[]', 0, 1),
(104, 2, 1, 2, 5, 4, 5, 4.7, '老师很有耐心,讲解清晰,孩子听得很认真。', '[]', 1, 1);
-- =====================================================
-- 第四步:更新订单的评价状态
-- =====================================================
UPDATE `order` SET `reviewed` = 1 WHERE `id` IN (102, 103, 104);
-- =====================================================
-- 第五步:验证数据
-- =====================================================
SELECT '========================================' AS '';
SELECT '✅ 评价功能数据库脚本执行完成!' AS '执行结果';
SELECT '========================================' AS '';
-- 查询评价记录
SELECT '=== 评价记录 ===' AS '';
SELECT
r.id,
r.order_id,
r.user_id,
r.teacher_id,
r.student_id,
r.overall_score,
r.content,
r.is_anonymous,
r.create_time
FROM review r
ORDER BY r.create_time DESC
LIMIT 10;
-- 查询订单评价状态
SELECT '=== 订单评价状态 ===' AS '';
SELECT
id,
order_no,
status,
reviewed,
service_name
FROM `order`
WHERE id IN (102, 103, 104)
ORDER BY id;
-- 统计信息
SELECT '=== 统计信息 ===' AS '';
SELECT
COUNT(*) as '评价总数',
COUNT(DISTINCT user_id) as '用户数',
COUNT(DISTINCT teacher_id) as '陪伴员数',
ROUND(AVG(overall_score), 1) as '平均评分'
FROM review
WHERE deleted = 0 AND status = 1;
SELECT '========================================' AS '';
SELECT '请检查上面的数据是否正确' AS '下一步';
SELECT '========================================' AS '';