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

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: 浏览服务列表

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