# catering-cloud **Repository Path**: niu6364/catering-cloud ## Basic Information - **Project Name**: catering-cloud - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-03 - **Last Updated**: 2026-05-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🍽️ 餐云 (Catering Cloud) 餐饮管理 SaaS 系统 — 面向连锁品牌的全流程餐饮管理平台。 ## 技术栈 ### 后端 - **Java 17** + **Spring Boot 3.2** + **Spring Cloud 2023** - **MyBatis-Plus** — ORM + 多租户 Schema 拦截器 - **PostgreSQL** — 数据库(Schema 隔离多租户) - **Redis** — 缓存 + 会话 - **RocketMQ** — 消息队列(订单推送、库存扣减、延迟取消) - **Nacos** — 注册中心 + 配置中心 - **Spring Cloud Gateway** — API 网关 + JWT 鉴权 - **WebSocket** — 厨房看板实时推送 ### 前端 - **React 18** + **TypeScript** - **Ant Design 5** + **Ant Design Pro Components** - **Vite** — 构建工具 - **Zustand** — 状态管理 - **React Router 6** — 路由 ## 项目结构 ``` catering-cloud/ ├── catering-common/ # 公共模块 │ ├── catering-common-core/ # 基础工具、常量、异常、响应体 │ ├── catering-common-mybatis/ # MyBatis-Plus + 多租户 Schema 拦截器 │ ├── catering-common-redis/ # Redis 配置 │ ├── catering-common-rocketmq/ # RocketMQ 消息基类 │ ├── catering-common-security/ # JWT + RBAC 权限框架 │ └── catering-common-web/ # Web 通用配置、全局异常处理 ├── catering-gateway/ # API 网关(8080) ├── catering-service/ │ ├── catering-tenant/ # 租户服务(8100) │ ├── catering-menu/ # 菜单服务(8200) │ ├── catering-order/ # 订单+厨房服务(8300) │ ├── catering-inventory/ # 库存服务(8400) │ └── catering-analytics/ # 分析服务(8500) ├── catering-web/ # 前端(3000) ├── doc/sql/ # 数据库脚本 └── docker-compose.yml # 基础设施 ``` ## 快速开始 ### 1. 启动基础设施 ```bash docker-compose up -d ``` 启动 PostgreSQL、Redis、Nacos、RocketMQ。 ### 2. 初始化数据库 数据库会通过 docker-compose 自动执行 `doc/sql/init-public.sql`。 ### 3. 启动后端服务 按顺序启动: ```bash # 1. 网关 cd catering-gateway && mvn spring-boot:run # 2. 租户服务 cd catering-service/catering-tenant && mvn spring-boot:run # 3. 菜单服务 cd catering-service/catering-menu && mvn spring-boot:run # 4. 订单服务 cd catering-service/catering-order && mvn spring-boot:run # 5. 库存服务 cd catering-service/catering-inventory && mvn spring-boot:run # 6. 分析服务 cd catering-service/catering-analytics && mvn spring-boot:run ``` ### 4. 启动前端 ```bash cd catering-web npm install npm run dev ``` 访问 http://localhost:3000 ## 核心功能 ### 多租户 Schema 隔离 - 每个租户独立 PostgreSQL Schema - 请求级别自动切换:Gateway 解析 JWT → 注入租户信息 → MyBatis 拦截器切换 Schema - 租户注册时自动创建 Schema 和业务表 ### 点餐 → 出餐全流程 1. 前端提交订单 → 创建订单(PENDING_PAY) 2. 支付 → 发送 RocketMQ 消息 3. 库存服务消费消息 → 按食谱 BOM 展开 → FIFO 扣减库存 4. 订单服务创建厨房任务 → WebSocket 推送厨房看板 5. 厨师操作:接单 → 制作 → 完成 → 出餐 6. 全部出餐 → 订单自动完成 ### 库存管理 - **FIFO 先进先出**:按过期日期排序扣减 - **健康度评分**:score = (剩余天数 / 保质期) × 100 - **临期预警**:score ≤ 30 触发红色警告 - **安全库存**:低于阈值自动发送 MQ 预警 - **定时任务**:每天凌晨刷新健康度,标记过期批次 ### RBAC 权限 - 品牌 → 门店 → 员工 → 角色 → 权限 - JWT Token 携带完整权限信息 - `@RequirePermission` 注解声明式鉴权 ## API 文档 启动服务后访问 Knife4j: - 租户服务:http://localhost:8100/doc.html - 菜单服务:http://localhost:8200/doc.html - 订单服务:http://localhost:8300/doc.html - 库存服务:http://localhost:8400/doc.html - 分析服务:http://localhost:8500/doc.html ## 端口规划 | 服务 | 端口 | |---|---| | Gateway | 8080 | | Tenant | 8100 | | Menu | 8200 | | Order | 8300 | | Inventory | 8400 | | Analytics | 8500 | | Frontend | 3000 | | Nacos | 8848 | | RocketMQ NameServer | 9876 | | RocketMQ Dashboard | 8180 | | PostgreSQL | 5432 | | Redis | 6379 |