365 lines
12 KiB
Markdown
365 lines
12 KiB
Markdown
|
|
# 🎯 评价系统架构图
|
|||
|
|
|
|||
|
|
## 系统架构总览
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────────┐
|
|||
|
|
│ 评价系统架构 │
|
|||
|
|
└─────────────────────────────────────────────────────────────┘
|
|||
|
|
|
|||
|
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|||
|
|
│ 家长端 │ │ 陪伴员端 │ │ 管理师端 │
|
|||
|
|
│ │ │ │ │ │
|
|||
|
|
│ • 提交评价 │ │ • 查看评价 │ │ • 评价统计 │
|
|||
|
|
│ • 查看评价 │ │ • 回复评价 │ │ • 评价管理 │
|
|||
|
|
│ • 上传图片 │ │ • 评价统计 │ │ • 数据分析 │
|
|||
|
|
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
|
|||
|
|
│ │ │
|
|||
|
|
└────────────────────┼────────────────────┘
|
|||
|
|
│
|
|||
|
|
┌───────▼────────┐
|
|||
|
|
│ 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
|