# 服务列表游客模式支持 ## 需求描述 游客(未登录用户)访问服务列表页面时: - ✅ 可以正常浏览服务分类 - ✅ 可以查看服务列表 - ✅ 可以搜索服务 - ✅ 可以查看服务详情 - ❌ 提交订单时会提示"未登录"并跳转到登录页面 ## 问题分析 ### 当前问题 游客访问服务列表页面时,可能会出现: - "登录已过期"提示 - 接口请求失败 - 页面无法正常显示 ### 根本原因 服务相关的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 **功能状态**: 已完成,待测试