Files
wms-saas/docs/06-backend-laravel.md
2026-09-29 13:08:21 +08:00

110 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 06 Laravel 后端结构
## 分层
不要把所有业务代码写进 Controller。推荐:
```
Controller
↓
FormRequest
↓
Service / Action
↓
Domain Logic
↓
Model / Repository
↓
Database
```
Controller 只负责:
- 接收请求
- 参数验证(通过 FormRequest)
- 调用业务服务
- 返回 API Resource
复杂业务必须进入 Service / Action。
## Action 命名示例
- CreateInboundAction
- ReceiveInboundAction
- PutawayInboundAction
- AllocateOutboundAction
- CreateWaveAction
- PickOrderAction
- PackOrderAction
- ShipOrderAction
- AdjustInventoryAction
- StocktakeAction
## 目录结构
```
app/
├── Domain/ # WMS 核心业务规则(状态机、领域规则、值对象、枚举)
│ ├── Inventory/
│ ├── Order/
│ ├── Inbound/
│ ├── Outbound/
│ ├── Warehouse/
│ ├── Picking/
│ ├── Packing/
│ ├── Shipment/
│ ├── Return/
│ └── Logistics/
│
├── Application/ # 应用层用例
│ ├── Inventory/
│ │ ├── Actions/
│ │ ├── Services/
│ │ └── DTOs/
│ ├── Order/
│ ├── Inbound/
│ └── Outbound/
│
├── Http/
│ ├── Controllers/
│ ├── Requests/
│ └── Resources/
│
├── Models/ # Eloquent 模型(数据持久化)
│
├── Jobs/
├── Events/
├── Listeners/
├── Policies/
├── Console/
├── Support/ # 通用支持:TenantContext、ApiResponse 等
│
└── Infrastructure/ # 外部适配
├── Cache/
├── Queue/
├── Logistics/
└── Platforms/
├── Amazon/
├── TikTokShop/
├── Temu/
├── Shopee/
└── Mirakl/
```
## 职责划分
| 层 | 职责 |
| --- | --- |
| Laravel(Http / Application) | 应用层:请求、用例编排、事务边界 |
| Domain | WMS 核心业务规则 |
| Eloquent(Models) | 数据持久化 |
| Queue(Jobs) | 异步任务 |
| Adapter(Infrastructure) | 第三方平台、物流商 |
| TenantContext | 多租户隔离 |
## 依赖方向
- Http → Application → Domain;Infrastructure 实现 Domain / Application 定义的接口。
- Domain 不依赖 Http、不依赖具体第三方平台。
- 模块之间避免强耦合,跨模块协作优先通过 Application Service 或 Events。