12 KiB
12 KiB
🎯 评价系统架构图
系统架构总览
┌─────────────────────────────────────────────────────────────┐
│ 评价系统架构 │
└─────────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 家长端 │ │ 陪伴员端 │ │ 管理师端 │
│ │ │ │ │ │
│ • 提交评价 │ │ • 查看评价 │ │ • 评价统计 │
│ • 查看评价 │ │ • 回复评价 │ │ • 评价管理 │
│ • 上传图片 │ │ • 评价统计 │ │ • 数据分析 │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────────────────┼────────────────────┘
│
┌───────▼────────┐
│ API Gateway │
│ (ReviewAPI) │
└───────┬────────┘
│
┌───────▼────────┐
│ ReviewController│
│ │
│ • submit │
│ • getDetail │
│ • getMyList │
│ • getTeacherList│
│ • reply │
└───────┬────────┘
│
┌───────▼────────┐
│ ReviewService │
│ │
│ • 业务逻辑 │
│ • 权限验证 │
│ • 数据处理 │
└───────┬────────┘
│
┌───────▼────────┐
│ ReviewMapper │
│ │
│ • SQL查询 │
│ • 关联查询 │
└───────┬────────┘
│
┌───────▼────────┐
│ MySQL数据库 │
│ │
│ • review表 │
│ • order表 │
│ • user表 │
│ • teacher表 │
│ • student表 │
└─────────────────┘
数据流转图
1. 评价提交流程
家长端
│
├─ 1. 点击"去评价"按钮
│ (order/detail.vue 或 order/my-orders.vue)
│
├─ 2. 跳转到评价提交页面
│ (user-package/pages/review/submit.vue)
│
├─ 3. 填写评价内容
│ • 服务态度评分 (1-5星)
│ • 教学质量评分 (1-5星)
│ • 准时性评分 (1-5星)
│ • 文字评价
│ • 上传图片 (最多9张)
│ • 是否匿名
│
├─ 4. 提交评价
│ POST /api/review/submit
│
▼
后端处理
│
├─ 5. ReviewController.submitReview()
│ • 获取用户ID
│ • 调用Service层
│
├─ 6. ReviewService.submitReview()
│ • 验证订单存在
│ • 验证订单归属
│ • 验证订单状态 (3或4)
│ • 检查是否已评价
│ • 计算综合评分
│ • 处理图片JSON
│ • 保存评价
│ • 更新订单状态
│
├─ 7. ReviewMapper.insert()
│ • 插入review表
│
├─ 8. OrderMapper.updateById()
│ • 更新order.reviewed = true
│
▼
返回结果
│
└─ 9. 前端显示成功
• 提示"评价成功"
• 跳转到评价列表
2. 评价查看流程
家长端
│
├─ 1. 点击"我的评价"
│ (pages/user/index.vue)
│
├─ 2. 跳转到评价列表
│ (user-package/pages/review/list.vue)
│
├─ 3. 加载评价列表
│ GET /api/review/my-list
│
▼
后端处理
│
├─ 4. ReviewController.getMyReviewList()
│ • 获取用户ID
│
├─ 5. ReviewService.getUserReviewList()
│ • 调用Mapper查询
│
├─ 6. ReviewMapper.getUserReviewList()
│ • 关联查询订单信息
│ • 关联查询陪伴员信息
│ • 关联查询学生信息
│ • 返回ReviewVO列表
│
▼
返回结果
│
└─ 7. 前端展示评价列表
• 显示评分
• 显示内容
• 显示图片
• 显示陪伴员回复
3. 陪伴员查看和回复流程
陪伴员端
│
├─ 1. 进入评价列表
│ (teacher-package/pages/teacher/reviews.vue)
│
├─ 2. 加载评价列表
│ GET /api/review/teacher/{teacherId}
│
├─ 3. 查看评价详情
│
├─ 4. 点击"回复"按钮
│
├─ 5. 输入回复内容
│
├─ 6. 提交回复
│ POST /api/review/reply/{reviewId}
│
▼
后端处理
│
├─ 7. ReviewController.replyReview()
│ • 获取陪伴员ID
│
├─ 8. ReviewService.replyReview()
│ • 验证评价存在
│ • 验证权限(只能回复自己的评价)
│ • 检查是否已回复
│ • 更新回复内容
│ • 设置回复时间
│
├─ 9. ReviewMapper.updateById()
│ • 更新review.replyContent
│ • 更新review.replyTime
│
▼
返回结果
│
└─ 10. 前端显示回复成功
• 刷新评价列表
• 显示回复内容
数据库关系图
┌─────────────────┐
│ order表 │
│ │
│ • id │◄────┐
│ • orderNo │ │
│ • userId │ │
│ • teacherId │ │
│ • studentId │ │
│ • status │ │
│ • reviewed │ │ 关联
└─────────────────┘ │
│
┌─────────────────┐ │
│ review表 │ │
│ │ │
│ • id │ │
│ • orderId │─────┘
│ • userId │─────┐
│ • teacherId │─────┼─┐
│ • studentId │─────┼─┼─┐
│ • serviceScore │ │ │ │
│ • qualityScore │ │ │ │
│ • punctualityScore│ │ │ │
│ • overallScore │ │ │ │
│ • content │ │ │ │
│ • images │ │ │ │
│ • isAnonymous │ │ │ │
│ • replyContent │ │ │ │
│ • replyTime │ │ │ │
└─────────────────┘ │ │ │
│ │ │
┌─────────────────┐ │ │ │
│ user表 │◄────┘ │ │
│ │ │ │
│ • id │ │ │
│ • phone │ │ │
│ • nickname │ │ │
└─────────────────┘ │ │
│ │
┌─────────────────┐ │ │
│ teacher表 │◄──────┘ │
│ │ │
│ • id │ │
│ • name │ │
│ • phone │ │
│ • rating │ │
└─────────────────┘ │
│
┌─────────────────┐ │
│ student表 │◄────────┘
│ │
│ • id │
│ • studentName │
│ • age │
└─────────────────┘
页面路由图
家长端路由
├─ /pages/user/index.vue (个人中心)
│ └─ 点击"我的评价" → /user-package/pages/review/list.vue
│
├─ /order-package/pages/order/my-orders.vue (我的订单)
│ ├─ 点击"评价" → /user-package/pages/review/submit.vue
│ └─ 点击"查看反馈" → /user-package/pages/review/list.vue
│
├─ /order-package/pages/order/detail.vue (订单详情)
│ ├─ 点击"去评价" → /user-package/pages/review/submit.vue
│ └─ 点击"查看评价" → /user-package/pages/review/list.vue
│
├─ /user-package/pages/review/submit.vue (评价提交)
│ └─ 提交成功 → /user-package/pages/review/list.vue
│
└─ /user-package/pages/review/list.vue (评价列表)
陪伴员端路由
├─ /teacher-package/pages/teacher/reviews.vue (评价列表)
│ └─ 点击"回复" → 弹窗输入回复
│
└─ /pages/teacher/detail.vue (陪伴员详情)
└─ 点击"查看评价" → /teacher-package/pages/teacher/reviews.vue
管理师端路由
├─ /manager-package/pages/manager/teacher-detail.vue (陪伴员详情)
│ └─ 点击"查看评价" → /manager-package/pages/manager/teacher-reviews.vue
│
└─ /manager-package/pages/manager/reports.vue (汇总报告)
└─ 显示评价详情
API接口清单
| 接口 | 方法 | 路径 | 说明 | 权限 |
|---|---|---|---|---|
| 提交评价 | POST | /api/review/submit |
家长提交评价 | 家长 |
| 评价详情 | GET | /api/review/{id} |
查询评价详情 | 所有 |
| 我的评价 | GET | /api/review/my-list |
家长查看自己的评价 | 家长 |
| 陪伴员评价 | GET | /api/review/teacher/{teacherId} |
查询陪伴员的评价 | 所有 |
| 检查评价 | GET | /api/review/check/{orderId} |
检查订单是否已评价 | 所有 |
| 回复评价 | POST | /api/review/reply/{reviewId} |
陪伴员回复评价 | 陪伴员 |
权限控制
家长端
├─ ✅ 可以提交评价(自己的订单)
├─ ✅ 可以查看自己的评价
├─ ✅ 可以查看陪伴员的评价
└─ ❌ 不能回复评价
陪伴员端
├─ ✅ 可以查看自己收到的评价
├─ ✅ 可以回复评价(自己的评价)
├─ ❌ 不能提交评价
└─ ❌ 不能删除评价
管理师端
├─ ✅ 可以查看所有评价
├─ ✅ 可以查看评价统计
├─ ❌ 不能提交评价
└─ ❌ 不能回复评价(可扩展)
状态流转
订单状态
├─ 0: 待支付 ❌ 不能评价
├─ 1: 待派单 ❌ 不能评价
├─ 2: 待服务 ❌ 不能评价
├─ 3: 服务中 ✅ 可以评价
├─ 4: 已完成 ✅ 可以评价
└─ 5: 已取消 ❌ 不能评价
评价状态
├─ 未评价 → 点击"去评价" → 评价提交页
├─ 已评价 → 点击"查看评价" → 评价列表页
└─ 已回复 → 显示陪伴员回复内容
创建时间:2026-01-23
系统版本:v1.0