---
url: /blog/5amqjxmj/index.md
---
## 1. 核心概念与聚合

| 聚合名称         | 聚合根        | 包含内容/值对象                                              | 核心职责                                                     |
| :--------------- | :------------ | :----------------------------------------------------------- | :----------------------------------------------------------- |
| **商品目录聚合** | `goods` (SPU) | 1. 基础信息（标题、详情图、参数）2. `Sku` 列表（价格、库存、规格组合） | 管理商品的上架、下架以及多规格的价格管理。**注意：库存变更通常属于库存聚合，但读取时需关联。** |
| **购物车聚合**   | `cart`        | 购物车条目                                                   | 临时存储用户意向，计算选中商品的总金额。                     |
| **订单聚合**     | `order`       | 1. 订单明细2. 收货地址3. 支付信息                    | **订单是历史的快照**。一旦创建，价格和地址不可变，记录交易契约。 |
| **库存聚合**     | `warehouse`   | 库存数量、锁定数量                                           | 管理商品的入库、出库和预占（防止超卖）。                     |

***

## 2. 业务规则

### 商品信息与库存

* **规则 1 (SKU强制)**：用户购买的不是“商品”，而是具体的“SKU”。下单时必须校验具体规格（颜色/尺码）的库存。
* **规则 2 (价格快照)**：订单生成时，必须抓取当前 SKU 的**快照价格**写入订单。后续商品改价不影响已生成的订单。
* **规则 3 (上架/下架)**：商品下架（SPU级）不影响已生成的订单，但会导致详情页不可访问，且无法新增购物车条目。

### 购物车与下单流程

* **规则 4 (购物车前置)**：加入购物车是**浏览行为**，不扣减库存。只有提交订单（结算）时才涉及库存校验。
* **规则 5 (地址完整性)**：生成订单的前提是必须拥有有效的收货地址。
* **规则 6 (库存预占)**：下单成功（订单创建）时，库存进入“预占”状态。若超时未支付，预占库存需释放回可售库存。

***

## 3. 业务流程可视化分析

### 3.1 商品上架流程（运营侧）

运营人员需要先定义商品的基本信息，再为每个尺码/颜色单独设置库存和价格。

```mermaid
flowchart LR
    A[开始: 填写SPU基础信息] --> B{保存商品草稿}
    B --> C[添加SKU规格]
    C --> D[录入SKU数据: 价格/库存/条码]
    D --> E{提交审核?}
    E -- 是 --> F[系统校验数据完整性]
    E -- 否 --> C
    F -- 成功 --> G[商品上架: 状态变为在售]
    F -- 失败 --> H[返回错误信息]
    G --> I[同步至搜索系统]
```

### 3.2 用户下单到结算流程（核心交互）

修正了你原有的流程，理顺了“加购 -> 结算 -> 选地址 -> 生成订单”的时序。

```mermaid
sequenceDiagram
    actor User as 用户
    participant Cart as 购物车聚合
    participant Inventory as 库存聚合
    participant Order as 订单聚合

    Note over User, Order: 阶段一: 加购
    User->>Cart: 1. 查看商品详情(SKU)
    User->>Cart: 2. 点击"加入购物车"
    Cart->>Cart: 3. 新增/更新CartItem<br/>(不扣减库存)

    Note over User, Order: 阶段二: 结算
    User->>Cart: 4. 点击"去结算"
    Cart->>Cart: 5. 计算选中商品总金额
    
    Note over User, Order: 阶段三: 创建订单
    User->>Order: 6. 填写/选择收货地址
    User->>Order: 7. 提交订单请求
    
    Order->>Inventory: 8. 锁定库存(预扣减)
    Inventory-->>Order: 9. 锁定成功
    
    Order->>Order: 10. 生成订单快照<br/>(保存当前价格、地址、SKU信息)
    Order-->>User: 11. 返回"下单成功",跳转支付
```

***

## 4. 订单状态流转

```mermaid
stateDiagram-v2
    [*] --> 待支付: 提交订单(锁定库存)
    
    待支付 --> 待发货: 用户支付成功
    note right of 待支付: 若超时(如30分)未支付<br>需取消订单并释放库存
    
    待发货 --> 已发货: 仓库拣货打包并发出
    note right of 待发货: 涉及物流单号绑定
    
    已发货 --> 已完成: 用户确认收货/系统自动确认
    note right of 已发货: 通常7-15天自动确认
    
    待支付 --> 已取消: 用户主动取消/超时系统取消
    待发货 --> 已取消: 用户申请取消
    
    已取消 --> [*]: 流程结束
    已完成 --> [*]: 流程结束
```

***
