You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
flowchart LR
A[注册 / 登录] --> B[浏览商品<br/>首页 / 分类 / ES 搜索]
B --> C[商品详情]
C --> D[加入购物车]
D --> E[确认订单<br/>填写地址 / 选择配送方式]
E --> F[提交订单]
F --> G[模拟支付]
G --> H[管理端发货]
H --> I[确认收货]
Loading
秒杀流程
flowchart TD
A[管理端创建秒杀场次] --> B[用户点击抢购]
B --> C[限流拦截器<br/>滑动窗口限流]
C --> D[Lua 脚本原子操作<br/>库存初始化 / 防重检查 / 扣 Redis 库存]
D -->|库存不足或重复抢购| F[返回失败]
D -->|扣减成功| E[发送秒杀消息至 RabbitMQ]
E --> G[消费者异步下单<br/>幂等检查 → DB 扣库存 → 创建订单]
G -->|失败且重试小于 3 次| H[进入重试延迟队列<br/>5 秒后重新消费]
G -->|失败且重试达 3 次| I[回滚 Redis 库存]
G -->|成功| J[结果写入 Redis<br/>前端轮询获取秒杀结果]
J --> K{10 分钟内是否支付}
K -->|未支付| L[延迟队列到期<br/>自动取消订单并恢复库存]
K -->|已支付| M[订单完成]
Loading
技术栈
后端(mall-server)
技术
版本
用途
Spring Boot
3.2.5
基础框架(Java 17)
MyBatis-Plus
3.5.5
ORM 数据访问
MySQL
8.0
关系数据库(Druid 连接池)
Redis
7
缓存 / 分布式锁 / 限流 / 秒杀库存
RabbitMQ
3
秒杀异步下单 / 订单超时取消
Elasticsearch
7.17
商品全文搜索
Sa-Token
1.39
双端认证 / 会话管理
Redisson
3.24
分布式锁
springdoc-openapi
2.3
API 文档(Swagger UI)
前端
技术
mall-admin
mall-portal
Vue
3.4
3.4
Element Plus
2.5
2.5
Pinia
✅
✅
Vue Router
✅
✅
ECharts
✅
—
UnoCSS
✅
—
Vite
5
5
系统架构图
flowchart LR
B[浏览器]
subgraph 前端
P[用户门户 mall-portal<br/>:3001]
A[管理后台 mall-admin<br/>:3002]
end
S[mall-server 后端<br/>:8800]
subgraph 中间件 Docker 容器
M[(MySQL 8<br/>:3306)]
R[(Redis 7<br/>:6379)]
Q[RabbitMQ 3<br/>:5672]
E[(Elasticsearch 7<br/>:19200)]
end
B --> P
B --> A
P -->|/dev 代理| S
A -->|/admin-api 代理| S
S --> M
S --> R
S --> Q
S --> E