跳到主要内容

功能向导

按真实业务流程走一遍:注册登录 → 逛商品 → 下单支付 → 秒杀 → 好友圈 → 聊天

前置:已按快速开始启动依赖、后端与前端,打开 http://localhost:5173

1. 注册与登录

  • /register 注册账号(用户名 + 密码),成功即登录
  • /login 登录,可先用演示账号 admin/admin123 体验后台
  • 退出登录 / 会话过期(JWT 2h)后重新登录即可

2. 逛商品

  • 首页 /:按类目浏览商品(SPU),分页加载
  • 商品详情 /products/:id:SPU 标题/详情/类目 + SKU 规格组合/价格/库存
  • 在详情页选择 SKU 规格,可加入购物车立即购买(直购)

3. 下单与支付

  1. 购物车 /cart:调整数量 / 删除条目,选好后去结算
  2. 结算 /checkout:选择收货地址(个人中心维护地址簿)+ 可选一张优惠券(去 /coupons 领券中心领券,满减券需满足门槛)→ 提交订单
  3. 订单 /orders:待支付订单出现,进入订单详情 /orders/:orderNo
  4. 模拟支付:订单详情页点"模拟支付",选成功或失败
    • 成功 → 状态流转为已支付(金额核对 + 幂等,重复回调被拒)
    • 失败 → 订单停留待支付,可用新流水号重试
  5. 等待发货:后台管理员对已支付订单发货(/admin/orders,用 admin 账号)
  6. 确认收货:已发货订单点"确认收货" → 已完成
优惠券

券与秒杀互斥:秒杀订单不能使用优惠券;订单取消后所用券自动回退。

4. 秒杀

  1. 秒杀页 /flash-sale:查看进行中/即将开始的活动(倒计时、库存余量、每人限购数)
  2. 抢购:预扣成功立即返回"排队中"(后端已完成 Redis 原子预扣并进入异步落单队列)
  3. 页面按预扣编号自动轮询恢复状态(1.5s × 30 次上限):ordered → 进入生成的秒杀订单;rolled_back → 库存与购买机会已完整退回,可重新抢购
  4. 超时未支付(10min)订单被自动取消,库存与购买机会回补——可再次抢购

演示无活动时,用 admin 在 /admin/flashsales 创建活动并上架(时间窗口覆盖当前时间),库存预热进 Redis 后即可抢购。

5. 好友圈

  1. 添加好友:好友页 /friends 搜索用户名(如 bob)→ 发送申请;对方在"好友申请"中通过
  2. 分享动态:在好友圈页 /feed 点击"分享一件已购的好物"(引用已购 SKU + 可选文案与图片,仅已支付/已发货/已完成的订单可分享)
  3. 浏览时间线:好友圈 /feed 仅好友可见,拉取式分页
  4. 删除动态:自己的动态可删除

6. 聊天

  1. 聊天页 /chat:会话列表(最近消息 + 未读数),与好友点开会话
  2. 发送文本消息:实时送达(WebSocket),离线消息上线后经 REST 拉取兜底
  3. 发送图片 / 文件:经后端代理上传 MinIO,消息引用其 URL
  4. 已读推进:新消息上线标记已读

7. 个人中心

  1. 个人中心页 /profile:个人资料 + 地址簿(导航"个人中心"或点右上角用户名进入)
  2. 个人资料:修改昵称(≤32 字符,未设置时展示用户名);上传头像(png/jpeg/webp/gif ≤5MB,本地预览后随保存一并上传);顶部导航实时同步昵称/头像
  3. 地址簿:新增 / 编辑 / 删除 / 设为默认;首条地址自动设为默认,结算页直接选用

8. 后台管理(管理员)

admin/admin123 登录后进入 /admin

  • 商品:类目 / 商品 / SKU 与库存(上架/下架)
  • 订单:全量订单列表、发货
  • 秒杀活动:创建 / 上架 / 下架(含时间窗口与限购配置)
  • 券模板:发布优惠券

完整流转

注册/登录 → 逛商品(详情选 SKU)
├─ 加购物车 → 结算(选地址 + 可选券)→ 下单 → 模拟支付 → 等发货 → 确认收货
├─ 直购 → 同上
└─ 秒杀页抢购 → 排队中 → 轮询出单 → 支付 → 发货 → 完成
分享动态到好友圈 → 好友时间线可见
加好友 → 聊天(文本/图片/文件,WS 实时 + 离线拉取)