功能向导
按真实业务流程走一遍:注册登录 → 逛商品 → 下单支付 → 秒杀 → 好友圈 → 聊天。
前置:已按快速开始启动依赖、后端与前端,打开 http://localhost:5173。
1. 注册与登录
/register注册账号(用户名 + 密码),成功即登录/login登录,可先用演示账号admin/admin123体验后台- 退出登录 / 会话过期(JWT 2h)后重新登录即可
2. 逛商品
- 首页
/:按类目浏览商品(SPU),分页加载 - 商品详情
/products/:id:SPU 标题/详情/类目 + SKU 规格组合/价格/库存 - 在详情页选择 SKU 规格,可加入购物车或立即购买(直购)
3. 下单与支付
- 购物车
/cart:调整数量 / 删除条目,选好后去结算 - 结算
/checkout:选择收货地址(个人中心维护地址簿)+ 可选一张优惠券(去/coupons领券中心领券,满减券需满足门槛)→ 提交订单 - 订单
/orders:待支付订单出现,进入订单详情/orders/:orderNo - 模拟支付:订单详情页点"模拟支付",选成功或失败:
- 成功 → 状态流转为已支付(金额核对 + 幂等,重复回调被拒)
- 失败 → 订单停留待支付,可用新流水号重试
- 等待发货:后台管理员对已支付订单发货(
/admin/orders,用 admin 账号) - 确认收货:已发货订单点"确认收货" → 已完成
优惠券
券与秒杀互斥:秒杀订单不能使用优惠券;订单取消后所用券自动回退。
4. 秒杀
- 秒杀页
/flash-sale:查看进行中/即将开始的活动(倒计时、库存余量、每人限购数) - 点抢购:预扣成功立即返回"排队中"(后端已完成 Redis 原子预扣并进入异步落单队列)
- 页面按预扣编号自动轮询恢复状态(1.5s × 30 次上限):
ordered→ 进入生成的秒杀订单;rolled_back→ 库存与购买机会已完整退回,可重新抢购 - 超时未支付(10min)订单被自动取消,库存与购买机会回补——可再次抢购
演示无活动时,用 admin 在 /admin/flashsales 创建活动并上架(时间窗口覆盖当前时间),库存预热进 Redis 后即可抢购。
5. 好友圈
- 添加好友:好友页
/friends搜索用户名(如bob)→ 发送申请;对方在"好友申请"中通过 - 分享动态:在好友圈页
/feed点击"分享一件已购的好物"(引用已购 SKU + 可选文案与图片,仅已支付/已发货/已完成的订单可分享) - 浏览时间线:好友圈
/feed仅好友可见,拉取式分页 - 删除动态:自己的动态可删除
6. 聊天
- 聊天页
/chat:会话列表(最近消息 + 未读数),与好友点开会话 - 发送文本消息:实时送达(WebSocket),离线消息上线后经 REST 拉取兜底
- 发送图片 / 文件:经后端代理上传 MinIO,消息引用其 URL
- 已读推进:新消息上线标记已读
7. 个人中心
- 个人中心页
/profile:个人资料 + 地址簿(导航"个人中心"或点右上角用户名进入) - 个人资料:修改昵称(≤32 字符,未设置时展示用户名);上传头像(png/jpeg/webp/gif ≤5MB,本地预览后随保存一并上传);顶部导航实时同步昵称/头像
- 地址簿:新增 / 编辑 / 删除 / 设为默认;首条地址自动设为默认,结算页直接选用
8. 后台管理(管理员)
用 admin/admin123 登录后进入 /admin:
- 商品:类目 / 商品 / SKU 与库存(上架/下架)
- 订单:全量订单列表、发货
- 秒杀活动:创建 / 上架 / 下架(含时间窗口与限购配置)
- 券模板:发布优惠券
完整流转
注册/登录 → 逛商品(详情选 SKU)
├─ 加购物车 → 结算(选地址 + 可选券)→ 下单 → 模拟支付 → 等发货 → 确认收货
├─ 直购 → 同上
└─ 秒杀页抢购 → 排队中 → 轮询出单 → 支付 → 发货 → 完成
分享动态到好友圈 → 好友时间线可见
加好友 → 聊天(文本/图片/文件,WS 实时 + 离线拉取)