# TableTrack - 完整SaaS餐厅管理解决方案
## 项目概述
- **项目类型**:Web应用(Laravel SaaS多租户系统)
- **主要功能**:综合性餐厅管理系统,支持多餐厅、多POS、库存管理、员工管理、订阅计费
- **技术栈**:
- 后端框架:Laravel 12
- 前端:Livewire 3.5 + Tailwind CSS
- 数据库:MySQL/PostgreSQL
- 认证:Laravel Jetstream + Sanctum
- 支付:Stripe、PayPal、Mollie、Razorpay等
- 订阅:Laravel Cashier (Stripe/Paddle)
- 实时通信:Pusher
- 模块系统:nwidart/laravel-modules
## 模块结构
```
script/
├── app/
│ ├── Console/ # 命令行工具
│ ├── Events/ # 事件类
│ ├── Exceptions/ # 异常处理
│ ├── Helpers/ # 辅助函数
│ ├── Http/
│ │ ├── Controllers/ # 控制器
│ │ └── Middleware/ # 中间件
│ ├── Models/ # Eloquent模型
│ ├── Notifications/ # 通知类
│ ├── Optionbuilder/ # 选项构建器
│ ├── Providers/ # 服务提供者
│ ├── Rules/ # 验证规则
│ ├── Services/ # 业务服务
│ ├── Traits/ # 特性类
│ └── View/ # 视图组件
├── Modules/ # 模块化组件(可插拔)
│ ├── BackupModule/ # 备份模块
│ ├── CashRegisterModule/ # 收银模块
│ ├── InventoryModule/ # 库存模块
│ ├── KioskModule/ # 自助点餐模块
│ ├── KitchenModule/ # 厨房显示模块
│ ├── LanguagePackModule/ # 语言包模块
│ ├── MultiPOSModule/ # 多POS模块
│ ├── SMSModule/ # 短信模块
│ └── SubdomainModule/ # 子域名模块
├── bootstrap/
├── config/
├── database/
├── lang/ # 多语言文件
│ ├── ar/ # 阿拉伯语
│ ├── en/ # 英语
│ ├── es/ # 西班牙语
│ ├── fr/ # 法语
│ ├── pt/ # 葡萄牙语
│ └── ru/ # 俄语
├── resources/
│ ├── css/
│ ├── js/
│ └── views/
├── routes/
│ ├── admin.php # 后台路由
│ ├── api.php # API路由
│ ├── auth.php # 认证路由
│ ├── channels.php # 广播频道
│ ├── console.php # 命令路由
│ ├── optionbuilder.php # 选项构建器路由
│ ├── pagebuilder.php # 页面构建器路由
│ └── web.php # Web路由
└── storage/
```
## 核心业务逻辑
### 1. 多租户SaaS架构
- **租户隔离**:每个餐厅独立数据隔离
- **子域名支持**:restaurant.tabletrack.com 格式
- **订阅管理**:基于Laravel Cashier的订阅计费
- **计划限制**:不同订阅计划的功能限制
### 2. 餐厅管理
- **多餐厅支持**:一个账户管理多个餐厅分店
- **餐厅设置**:基本信息、营业时间、配送设置
- **餐桌管理**:餐桌布局、容量、状态管理
- **区域管理**:餐厅内不同区域划分
### 3. 菜单与订单管理
- **菜单管理**:分类、菜品、价格、图片
- **变体管理**:菜品规格、加料选项
- **订单流程**:点餐→厨房→出餐→结账
- **订单状态**:待处理、制作中、待出餐、已完成
### 4. 厨房显示系统(KDS)
- **实时订单流**:新订单实时推送到厨房
- **状态更新**:厨师更新订单制作状态
- **时间管理**:显示订单等待时间
- **优先级管理**:VIP订单优先显示
### 5. 库存管理
- **原料管理**:原材料入库、出库
- **库存预警**:低库存自动提醒
- **供应商管理**:供应商信息和采购订单
- **成本计算**:基于原料的成本分析
### 6. 员工管理
- **角色权限**:管理员、经理、服务员、厨师
- **排班系统**:员工排班和考勤
- **权限控制**:基于Spatie Permission的细粒度权限
- **绩效跟踪**:销售业绩和效率统计
### 7. 收银与支付
- **收银台**:完整的收银界面
- **多支付方式**:现金、信用卡、移动支付
- **分账管理**:支持分桌结账
- **小费管理**:服务员小费记录
### 8. 报表与分析
- **销售报表**:日/周/月销售统计
- **菜品分析**:热销菜品、滞销菜品
- **员工绩效**:服务员销售业绩
- **财务报表**:收入、支出、利润分析
### 9. 预订管理
- **在线预订**:顾客在线预订餐桌
- **预订确认**:邮件和短信确认
- **预订提醒**:自动发送提醒通知
- **排队系统**:等位排队管理
### 10. 自助点餐(Kiosk)
- **自助终端**:顾客自助点餐界面
- **支付集成**:自助支付结账
- **订单打印**:自动打印订单小票
## 核心代码分析
### 主要模型关系
#### Restaurant模型
```php
class Restaurant extends Model
{
// 关联关系
public function owner() // 餐厅所有者
public function tables() // 餐桌
public function menus() // 菜单
public function orders() // 订单
public function staff() // 员工
public function subscription() // 订阅信息
public function inventory() // 库存
}
```
#### Order模型
```php
class Order extends Model
{
// 关联关系
public function restaurant() // 所属餐厅
public function table() // 餐桌
public function items() // 订单项
public function payments() // 支付记录
public function kitchenLogs() // 厨房处理记录
}
```
### 支付系统集成
支持多种支付网关:
- **Stripe**:信用卡支付 + 订阅管理
- **PayPal**:PayPal账户支付
- **Paddle**:订阅计费
- **Mollie**:欧洲支付
- **Razorpay**:印度支付
- **Paystack**:非洲支付
- **Flutterwave**:非洲支付
- **PayFast**:南非支付
- **Xendit**:东南亚支付
### 模块系统
使用 `nwidart/laravel-modules` 实现模块化:
- 每个模块可独立启用/禁用
- 模块间通过Service Provider通信
- 支持模块间的依赖关系
### 多语言支持
- 使用 `spatie/laravel-translatable` 实现字段级翻译
- 支持6种语言:英语、阿拉伯语、西班牙语、法语、葡萄牙语、俄语
- 自动翻译集成
### 数据库核心表
```
tenants # 租户表(多租户核心)
restaurants # 餐厅表
restaurant_settings # 餐厅设置
tables # 餐桌表
menus # 菜单表
menu_categories # 菜单分类
menu_items # 菜单项
orders # 订单表
order_items # 订单项
kitchen_orders # 厨房订单
inventory_items # 库存项
... (content truncated)