214 lines
5.5 KiB
Markdown
214 lines
5.5 KiB
Markdown
# 服务列表游客模式支持
|
|
|
|
## 需求描述
|
|
|
|
游客(未登录用户)访问服务列表页面时:
|
|
- ✅ 可以正常浏览服务分类
|
|
- ✅ 可以查看服务列表
|
|
- ✅ 可以搜索服务
|
|
- ✅ 可以查看服务详情
|
|
- ❌ 提交订单时会提示"未登录"并跳转到登录页面
|
|
|
|
## 问题分析
|
|
|
|
### 当前问题
|
|
游客访问服务列表页面时,可能会出现:
|
|
- "登录已过期"提示
|
|
- 接口请求失败
|
|
- 页面无法正常显示
|
|
|
|
### 根本原因
|
|
服务相关的API接口没有添加到游客白名单中:
|
|
- `/api/category/all` - 获取服务分类 ❌
|
|
- `/api/service/list` - 获取服务列表 ✅ (已在白名单)
|
|
- `/api/service/search` - 搜索服务 ❌
|
|
|
|
## 解决方案
|
|
|
|
### 修改 request.js 游客白名单
|
|
|
|
在 `peidu/uniapp/src/utils/request.js` 中添加服务相关接口:
|
|
|
|
```javascript
|
|
const GUEST_ALLOWED_URLS = [
|
|
'/api/notification/unread-count',
|
|
'/api/timecard/list',
|
|
'/api/home/courses',
|
|
'/api/banner/list',
|
|
'/api/service/list', // 已有
|
|
'/api/service/search', // ✅ 新增
|
|
'/api/category/all', // ✅ 新增
|
|
'/api/teacher/list',
|
|
'/api/course/list',
|
|
'/api/order/list',
|
|
'/api/order/list-full'
|
|
]
|
|
```
|
|
|
|
## 游客模式完整体验流程
|
|
|
|
### 1. 浏览服务列表
|
|
```
|
|
游客打开小程序
|
|
↓
|
|
点击"服务"标签
|
|
↓
|
|
✅ 正常显示服务分类列表
|
|
↓
|
|
✅ 点击分类查看服务
|
|
↓
|
|
✅ 正常显示服务列表
|
|
```
|
|
|
|
### 2. 搜索服务
|
|
```
|
|
游客在服务页面
|
|
↓
|
|
输入搜索关键词
|
|
↓
|
|
✅ 正常显示搜索结果
|
|
↓
|
|
✅ 点击查看服务详情
|
|
```
|
|
|
|
### 3. 查看服务详情
|
|
```
|
|
游客点击服务卡片
|
|
↓
|
|
✅ 正常显示服务详情
|
|
↓
|
|
✅ 可以查看价格、时长等信息
|
|
↓
|
|
✅ 可以查看测评师团队
|
|
```
|
|
|
|
### 4. 预约服务(登录拦截)
|
|
```
|
|
游客点击"立即预约"
|
|
↓
|
|
✅ 跳转到预约页面
|
|
↓
|
|
✅ 可以查看和填写预约信息
|
|
↓
|
|
点击"确认预约"
|
|
↓
|
|
🔔 提示"请先登录"
|
|
↓
|
|
🔄 跳转到登录页面
|
|
```
|
|
|
|
## 修改的文件
|
|
|
|
### peidu/uniapp/src/utils/request.js
|
|
|
|
**修改内容**: 添加服务相关接口到游客白名单
|
|
|
|
```javascript
|
|
// 添加以下两个接口
|
|
'/api/service/search', // 搜索服务
|
|
'/api/category/all', // 获取服务分类
|
|
```
|
|
|
|
## 游客白名单完整列表
|
|
|
|
当前支持游客访问的接口:
|
|
|
|
| 接口路径 | 功能说明 | 状态 |
|
|
|---------|---------|------|
|
|
| `/api/notification/unread-count` | 未读消息数量 | ✅ |
|
|
| `/api/timecard/list` | 时卡列表 | ✅ |
|
|
| `/api/home/courses` | 首页课程 | ✅ |
|
|
| `/api/banner/list` | 轮播图列表 | ✅ |
|
|
| `/api/service/list` | 服务列表 | ✅ |
|
|
| `/api/service/search` | 搜索服务 | ✅ 新增 |
|
|
| `/api/category/all` | 服务分类 | ✅ 新增 |
|
|
| `/api/teacher/list` | 教师列表 | ✅ |
|
|
| `/api/course/list` | 课程列表 | ✅ |
|
|
| `/api/order/list` | 订单列表 | ✅ |
|
|
| `/api/order/list-full` | 完整订单列表 | ✅ |
|
|
|
|
## 登录拦截点
|
|
|
|
以下操作需要登录:
|
|
|
|
| 操作 | 拦截位置 | 提示信息 |
|
|
|-----|---------|---------|
|
|
| 购买课程 | 课程详情页 | "请先登录" |
|
|
| 购买服务 | 服务详情页 | "请先登录" |
|
|
| 购买次卡 | 首页次卡 | "请先登录" |
|
|
| 确认预约 | 预约页面 | "请先登录" |
|
|
| 创建订单 | 订单创建 | "请先登录" |
|
|
| 支付订单 | 支付页面 | "请先登录" |
|
|
|
|
## 测试步骤
|
|
|
|
### 测试1: 浏览服务列表
|
|
1. 清除小程序缓存和登录状态
|
|
2. 以游客身份打开小程序
|
|
3. 点击"服务"标签
|
|
4. **预期结果**:
|
|
- ✅ 正常显示服务分类
|
|
- ✅ 点击分类正常显示服务列表
|
|
- ✅ 不显示"登录已过期"提示
|
|
|
|
### 测试2: 搜索服务
|
|
1. 以游客身份进入服务页面
|
|
2. 在搜索框输入关键词
|
|
3. 点击搜索
|
|
4. **预期结果**:
|
|
- ✅ 正常显示搜索结果
|
|
- ✅ 不显示登录提示
|
|
|
|
### 测试3: 查看服务详情
|
|
1. 以游客身份浏览服务列表
|
|
2. 点击任意服务卡片
|
|
3. **预期结果**:
|
|
- ✅ 正常显示服务详情
|
|
- ✅ 可以查看所有信息
|
|
|
|
### 测试4: 预约服务(登录拦截)
|
|
1. 以游客身份进入服务详情
|
|
2. 点击"立即预约"
|
|
3. 进入预约页面,填写信息
|
|
4. 点击"确认预约"
|
|
5. **预期结果**:
|
|
- 🔔 显示"请先登录"提示
|
|
- 🔄 跳转到登录页面
|
|
|
|
## 相关文件
|
|
|
|
- `peidu/uniapp/src/utils/request.js` - 请求拦截器(已修改)
|
|
- `peidu/uniapp/src/pages/service/list.vue` - 服务列表页面
|
|
- `peidu/uniapp/src/pages/booking/teacher-booking.vue` - 预约页面(已添加登录检查)
|
|
- `Archive/[一次性]清除缓存重新编译-服务列表游客模式-2026-02-01.bat` - 清除缓存脚本
|
|
|
|
## 执行步骤
|
|
|
|
1. ✅ 修改 `request.js` 添加游客白名单
|
|
2. ✅ 创建清除缓存的批处理文件
|
|
3. ⏳ 执行批处理文件清除缓存
|
|
4. ⏳ 在微信开发者工具中重新编译
|
|
5. ⏳ 测试游客浏览服务列表
|
|
6. ⏳ 测试游客搜索服务
|
|
7. ⏳ 测试预约登录拦截
|
|
|
|
## 优势
|
|
|
|
1. **完整的游客体验**: 游客可以浏览所有内容,了解服务详情
|
|
2. **精准的登录拦截**: 只在需要提交订单时才要求登录
|
|
3. **统一的拦截逻辑**: 所有需要登录的操作使用相同的拦截方式
|
|
4. **良好的用户体验**: 不会在浏览时频繁提示登录
|
|
|
|
## 注意事项
|
|
|
|
1. **白名单维护**: 新增需要游客访问的接口时,记得添加到白名单
|
|
2. **登录检查**: 所有涉及订单创建、支付的操作都要检查登录状态
|
|
3. **一致性**: 保持所有页面的登录拦截逻辑一致
|
|
4. **测试覆盖**: 每次修改后都要测试游客模式和登录模式
|
|
|
|
---
|
|
|
|
**修复时间**: 2026-02-01
|
|
**修复人员**: Kiro AI
|
|
**功能状态**: 已完成,待测试
|