5.5 KiB
5.5 KiB
服务列表游客模式支持
需求描述
游客(未登录用户)访问服务列表页面时:
- ✅ 可以正常浏览服务分类
- ✅ 可以查看服务列表
- ✅ 可以搜索服务
- ✅ 可以查看服务详情
- ❌ 提交订单时会提示"未登录"并跳转到登录页面
问题分析
当前问题
游客访问服务列表页面时,可能会出现:
- "登录已过期"提示
- 接口请求失败
- 页面无法正常显示
根本原因
服务相关的API接口没有添加到游客白名单中:
/api/category/all- 获取服务分类 ❌/api/service/list- 获取服务列表 ✅ (已在白名单)/api/service/search- 搜索服务 ❌
解决方案
修改 request.js 游客白名单
在 peidu/uniapp/src/utils/request.js 中添加服务相关接口:
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
修改内容: 添加服务相关接口到游客白名单
// 添加以下两个接口
'/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: 浏览服务列表
- 清除小程序缓存和登录状态
- 以游客身份打开小程序
- 点击"服务"标签
- 预期结果:
- ✅ 正常显示服务分类
- ✅ 点击分类正常显示服务列表
- ✅ 不显示"登录已过期"提示
测试2: 搜索服务
- 以游客身份进入服务页面
- 在搜索框输入关键词
- 点击搜索
- 预期结果:
- ✅ 正常显示搜索结果
- ✅ 不显示登录提示
测试3: 查看服务详情
- 以游客身份浏览服务列表
- 点击任意服务卡片
- 预期结果:
- ✅ 正常显示服务详情
- ✅ 可以查看所有信息
测试4: 预约服务(登录拦截)
- 以游客身份进入服务详情
- 点击"立即预约"
- 进入预约页面,填写信息
- 点击"确认预约"
- 预期结果:
- 🔔 显示"请先登录"提示
- 🔄 跳转到登录页面
相关文件
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- 清除缓存脚本
执行步骤
- ✅ 修改
request.js添加游客白名单 - ✅ 创建清除缓存的批处理文件
- ⏳ 执行批处理文件清除缓存
- ⏳ 在微信开发者工具中重新编译
- ⏳ 测试游客浏览服务列表
- ⏳ 测试游客搜索服务
- ⏳ 测试预约登录拦截
优势
- 完整的游客体验: 游客可以浏览所有内容,了解服务详情
- 精准的登录拦截: 只在需要提交订单时才要求登录
- 统一的拦截逻辑: 所有需要登录的操作使用相同的拦截方式
- 良好的用户体验: 不会在浏览时频繁提示登录
注意事项
- 白名单维护: 新增需要游客访问的接口时,记得添加到白名单
- 登录检查: 所有涉及订单创建、支付的操作都要检查登录状态
- 一致性: 保持所有页面的登录拦截逻辑一致
- 测试覆盖: 每次修改后都要测试游客模式和登录模式
修复时间: 2026-02-01
修复人员: Kiro AI
功能状态: 已完成,待测试