peixue-dev/Archive/[一次性]服务列表游客模式支持-2026-02-01.md

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
**功能状态**: 已完成,待测试