Creeks 订单履行业务全景
Creeks 系统的订单履行(Order Fulfillment)模块是整个 ERP 的核心业务链路之一,负责从各销售平台抓取订单后,完成**订单审核、包裹生成、分仓分物流、创建出库单/运单、获取跟踪号与面单、标记发货**的端到端履约流程。
一、业务概述
Creeks 系统的订单履行(Order Fulfillment)模块是整个 ERP 的核心业务链路之一,负责从各销售平台抓取订单后,完成订单审核、包裹生成、分仓分物流、创建出库单/运单、获取跟踪号与面单、标记发货的端到端履约流程。
当前系统月均处理订单量级约 20~30 万单,覆盖 10+ 个销售平台,对接多个仓库(自营仓、万邑通仓、FBA 仓等)和物流服务商。
二、系统架构总览
graph TB
subgraph 平台层["销售平台"]
AMZ[Amazon]
AE[AliExpress/速卖通]
EB[eBay]
WI[Wish]
TE[TEMU]
TK[TiktokShop]
SM[Shopify]
WM[Walmart]
SH[Shein]
end
subgraph 同步层["订单同步服务 esync"]
EA[esync-amazon]
EAE[esync-aliexpress]
EE[esync-ebay]
EW[esync-wish / WishPost]
ET[esync-temu]
ETK[esync-tiktokshop]
end
subgraph 核心服务["Creeks 微服务集群"]
OC[order-center<br/>订单中心/订单池]
FF[fulfillment<br/>订单履行]
LG[logistics<br/>物流/运单管理]
IV[inventory<br/>库存/出库管理]
ML[mall<br/>商城/店铺管理]
WH[warehouse<br/>仓库管理]
end
subgraph 仓储物流["仓库与物流商"]
CO[codo 自营仓]
WN[万邑通 Winit]
FBA[Amazon FBA]
FP[递四方 4PX]
YW[燕文 YanWen]
OT[其他物流商...]
end
AMZ --> EA --> OC
AE --> EAE --> OC
EB --> EE --> OC
WI --> EW --> OC
TE --> ET --> OC
TK --> ETK --> OC
SM & WM & SH --> OC
OC -->|订单同步| FF
FF -->|创建运单| LG
FF -->|创建出库单| IV
ML -.->|店铺/账号配置| FF
ML -.->|物流商/渠道配置| LG
ML -.->|仓库配置| IV
IV -->|派单出库| CO
IV -->|派单出库| WN
IV -->|多渠道配送| FBA
LG -->|申请运单/跟踪号/面单| WN
LG -->|申请运单/跟踪号/面单| FP
LG -->|申请运单/跟踪号/面单| YW
LG -->|申请运单/跟踪号/面单| OT
三、核心业务流程
3.1 订单履行主流程
flowchart TD
A["平台订单同步到订单池"] --> B{"订单同步到订单履行"}
B -->|"自动或手动同步"| C["订单审核\n自动审核或人工审核"]
C -->|"审核通过"| D["生成履约单和包裹"]
D --> E["分仓分物流\n自动规则或手动指定"]
E --> F{"仓库类型"}
F -->|"自营仓codo"| G1["创建出库单 inventory出库"]
F -->|"万邑通仓Winit"| G2{"使用物流"}
F -->|"FBA仓"| G3["调用FBA多渠道配送API"]
G2 -->|"平台物流TEMU或TiktokShipping"| H2a["调用平台API创建运单"]
G2 -->|"万邑通渠道"| H2b["调用万邑通创建出库单自提出库"]
G2 -->|"其他第三方渠道"| H2c["创建物流运单"]
G1 --> I["仓库拣货打包贴单"]
H2a --> J["获取跟踪号和面单"]
H2b --> K["万邑通发货获取跟踪号"]
H2c --> J
J --> L["标记发货回传平台"]
K --> L
G3 --> M["查询FBA发货状态"]
I --> L
M --> L
L --> N["物流运输或妥投完成"]
N --> O["订单完成"]
3.2 订单状态流转
stateDiagram-v2
[*] --> 待审核: 平台订单同步
待审核 --> 待发货: 审核通过/生成包裹
待审核 --> 已取消: 买家取消/平台退款
待审核 --> 未知货主: 无法匹配货主
待审核 --> 不需要处理: 不需要履约
未知货主 --> 待审核: 匹配货主成功
不需要处理 --> 待审核: 恢复处理
待发货 --> 已发货: 包裹全部发货
待发货 --> 部分发货: 部分包裹发货
待发货 --> 已取消: 取消订单
部分发货 --> 已发货: 剩余包裹发货
部分发货 --> 已发货: 剩余包裹取消
已发货 --> [*]
note right of 待审核: 对应平台已付款/待发货状态
note right of 已取消: 平台取消或退款触发
3.3 包裹(履约单)状态流转
stateDiagram-v2
[*] --> 待配货: 订单审核通过生成包裹
待配货 --> 已配货: 分仓分物流成功
待配货 --> 已取消: 取消包裹
待配货 --> 配货中: 正在自动分仓分物流
配货中 --> 已配货: 配货成功
配货中 --> 配货失败: 配货失败
已配货 --> 待仓库确认: 出库单推送成功
已配货 --> 已取消: 取消包裹
待仓库确认 --> 仓库处理中: 仓库确认收货
待仓库确认 --> 已取消: 取消出库单
仓库处理中 --> 已发货: 仓库发货/获取跟踪号
已发货 --> [*]
已取消 --> [*]
四、多平台订单履行差异
4.1 覆盖平台及接入方式
| 平台 | 订单量级 | 订单获取方式 | 回传跟踪号 | 特殊物流 |
|---|---|---|---|---|
| Amazon | 3万~11万单/月 | SP-API 自动抓取 | API 自动回传 | FBA 多渠道配送 |
| AliExpress | ~5万单/月 | API 自动抓取 | API 回传 + 菜鸟物流 | 菜鸟物流需要 ProductId |
| eBay | 中等 | API 自动抓取 | API 回传 | 认证仓(万邑通)免时效考核 |
| Wish | 中等 | API 自动抓取 | API 回传 | Wish Post / A+ 物流,重新释放订单处理 |
| TEMU | 增长中 | API 自动抓取(订单列表+详情+地址+价格) | 标记发货 API | 必须使用 TEMU 物流渠道,万邑通自提出库 |
| TiktokShop | 增长中 | API 自动抓取(每 7 分钟) | API 回传 | TiktokShipping(平台物流)+ SellerShipping |
| Shopify | 较少 | API/Webhook | API 回传 | - |
| Walmart | 较少 | API 自动抓取 | API 回传 | - |
| Shein | 较少 | API 自动抓取 | API 回传 | - |
4.2 各平台订单状态映射
Amazon → Creeks
| Amazon 状态 | 含义 | Creeks 状态 | 是否同步到履行 |
|---|---|---|---|
| Pending | 买家已下单未付款 | 无 | No |
| Unshipped | 未发货 | 待审核 | Yes |
| PartiallyShipped | 部分发货 | 部分发货 | No |
| Shipped | 已发货 | 已发货 | No |
| Cancelled | 已取消 | 已取消 | No |
AliExpress → Creeks
| 速卖通状态 | 含义 | Creeks 状态 |
|---|---|---|
| WAIT_SELLER_SEND_GOODS | 等待发货 | 待审核 |
| Finished | 已完成 | 已完成 |
TiktokShop → Creeks
| Tiktok 状态 | 含义 | Creeks 订单池状态 |
|---|---|---|
| AWAITING_SHIPMENT | 待发货 | 待发货 → 同步到履行 |
| IN_TRANSIT | 运输中 | 已发货 |
| DELIVERED / COMPLETED | 已妥投/完成 | 已发货 |
| CANCELLED | 已取消 | 已取消 |
4.3 平台订单状态同步机制
系统每 30 分钟同步一次平台订单状态,当检测到平台侧订单被取消/退款时,自动取消 Creeks 侧对应订单和包裹:
| 平台 | 取消触发条件 |
|---|---|
| Wish | 订单状态变为 Refunded |
| 速卖通 | 状态为 Finished 且物流状态为 NO_LOGISTICS |
| Amazon | 状态变为 Canceled |
| eBay | amountPaid 金额等于 0 |
| Walmart | 状态为 cancel |
五、核心业务模块详解
5.1 分仓分物流(配货)
这是订单履行的核心引擎,负责为每个包裹确定发货仓库和物流渠道。
flowchart TD
A["订单处理员点击自动分仓分渠道"] --> B{"是否平台物流"}
B -->|"否-自选物流"| C["加载自动规则"]
B -->|"是-平台物流"| D{"平台类型"}
C --> E["逐条匹配分仓规则"]
E --> F["匹配分物流规则"]
F --> G["库存占用验证"]
G --> H["创建出库单与运单"]
D -->|"TiktokShipping"| T1["从源订单获取平台指定仓库ID"]
T1 --> T2["查询平台仓与Creeks仓映射关系"]
T2 --> T3{"US站点"}
T3 -->|"是"| T4["调用Tiktok API获取物流渠道"]
T3 -->|"否"| T5["从源订单获取物流渠道"]
T4 --> T6["映射到Creeks物流渠道"]
T5 --> T6
T6 --> G
D -->|"TEMU"| TE1["根据Creeks分仓结果确定仓库"]
TE1 --> TE2["检查是否使用TEMU物流渠道"]
TE2 --> TE3["通过映射关系获取万邑通自提渠道"]
TE3 --> G
分仓规则引擎
系统内置了一套灵活的规则引擎,支持 39 种规则类型,按优先级逐条匹配:
| 规则分类 | 规则类型 | 说明 |
|---|---|---|
| 基础属性 | 平台、目的国家、州/省、邮编、邮编前缀 | 按订单基础属性筛选 |
| 商品属性 | 平台 SKU、商家 SKU、SKU 包含、SKU 前缀 | 按商品特征筛选 |
| 价格/重量 | 总价区间、单价区间、总重量区间、单重区间、总运费区间 | 按金额/重量筛选 |
| 物流属性 | 物流渠道、物流等级、仓库 | 按物流条件筛选 |
| 平台专属 | Wish DDP、Wish Express、Wish FBW、Wish Premium | Wish 平台专用规则 |
分物流规则引擎
分仓确定后,再按规则匹配物流渠道,规则类型包括:企业分类、订单总价、平台 SKU 渠道类型、SKU 前缀、商品尺寸、商品数量区间、SKU 属性、仓库特定物流等。
5.2 仓库类型与管理
| 仓库类型 | 代码 | 说明 |
|---|---|---|
| 自营仓(codo) | SELFWAREHOUSE | 公司自有仓库,由 Inventory 模块直接管理出库 |
| 万邑通仓 | WINITWAREHOUSE | 第三方仓储万邑通,支持自提出库和常规出库 |
| FBA 仓 | FBAWAREHOUSE | Amazon FBA 仓库,通过多渠道配送 API 发货 |
| 百世云仓 | BAISHIWAREHOUSE | 百世云仓 |
5.3 物流服务商与渠道
erDiagram
物流服务商 ||--o{ 物流渠道 : "拥有"
物流渠道 ||--o{ 渠道报价 : "关联"
物流渠道 ||--o{ 分区 : "覆盖"
分区 ||--o{ 分区明细 : "包含"
物流服务商 ||--o{ 服务商仓库 : "关联"
承运商 ||--o{ 物流渠道 : "承运"
物流服务商 {
string 编码 PK
string 名称
}
物流渠道 {
string 渠道编码 PK
string 渠道名称
string 物流商编码 FK
string 承运商编码 FK
}
承运商 {
string 编码 PK
string 名称
}
渠道报价 {
string 报价名称
decimal 价格
string 目的国
string 渠道编码 FK
}
分区 {
string 分区编码 PK
string 渠道编码 FK
string 仓库编码 FK
}
已对接的物流服务商
| 物流商 | Strategy 实现 | 主要服务 |
|---|---|---|
| 万邑通 Winit | ProviderWinitStrategy | 海外仓储 + 尾程派送 |
| 递四方 4PX | Provider4PXStrategy | 跨境物流 |
| 速卖通物流 | ProviderAliExpressStrategy | 菜鸟/速卖通物流 |
| TEMU 物流 | ProviderTemuStrategy | TEMU 平台物流 |
| TiktokShop 物流 | ProviderTiktokShopStrategy | TiktokShipping |
| Wish Post | ProviderWishPostStrategy | Wish 平台物流 |
| 燕文 YanWen | ProviderYanWenStrategy | 跨境物流 |
| 云途 YunTu | ProviderYunTuStrategy | 跨境物流 |
| 飞特 FeiTe | ProviderFeiTeStrategy | 跨境物流 |
| 极速 JiSu | ProviderJiSuStrategy | 跨境物流 |
| Joom | ProviderJoomStrategy | Joom 物流 |
| Shein | ProviderSheinStrategy | Shein 物流 |
| 其他 | Speedpak / 三通 / 乔盛 / 微速递 / 华磊 / 智运 | 多种补充渠道 |
5.4 运单管理(物流订单)
运单管理模块负责与各物流服务商 API 对接,核心能力:
| 功能 | 说明 |
|---|---|
| 一键下单 | 向物流商申请运单号(waybill number) |
| 获取跟踪号 | 从物流商获取包裹跟踪号(tracking number) |
| 获取面单 | 从物流商获取面单 PDF,上传到七牛云存储 |
| 取消运单 | 取消已申请的运单 |
| 批量操作 | 支持批量下单、批量获取跟踪号 |
不同物流商的下单逻辑通过 ProviderCommonStrategy 策略模式实现,每种物流商一个 Strategy 实现。
5.5 标记发货(回传平台)
包裹获取到跟踪号后,需要将发货信息回传给各销售平台,核心接口为 OrderShipApiAdapter:
| 平台 | Adapter 实现 | 说明 |
|---|---|---|
| Amazon | AmazonOrderShipSpApiAdapter / Captain / CreeksHub / SellFox | 多种 API 通道 |
| AliExpress | AliExpressOrderShipApiAdapter | 速卖通发货接口 |
| eBay | EbayOrderShipApiAdapter | eBay CompleteSale 接口 |
| Wish | WishOrderShipApiAdapter | Wish 发货接口 |
| TEMU | TemuOrderShipApiAdapter | TEMU 标记发货(bg.logistics.shipment.v2.confirm) |
| TiktokShop | (平台面单自动同步) | TiktokShipping 通过平台直接获取 |
| Shopify | ShopifyOrderShipApiAdapter | Shopify Fulfillment API |
| Walmart | WalmartOrderShipApiAdapter | Walmart Ship API |
TEMU 标记发货特殊逻辑:
- 支持 单个运单发货(sendType=0)、拆分运单发货(sendType=1)、合并发货(sendType=2)
- 需要按订单 SKU 维度判断发货类型
六、特殊业务场景
6.1 TiktokShipping(平台物流)
sequenceDiagram
participant 买家
participant Tiktok
participant Creeks
participant Winit as 万邑通
买家->>Tiktok: 下单
Tiktok->>Tiktok: 自动分仓根据卖家仓库配置
Tiktok->>Creeks: 订单同步含平台指定仓库ID
Creeks->>Creeks: 识别isPlatformLogistics为是
Creeks->>Creeks: 分仓-平台仓映射到Creeks仓
Creeks->>Creeks: 分物流-US站调API获取渠道非US从源数据获取
Creeks->>Winit: 创建自提出库单
Creeks->>Tiktok: 调用createPackage/shipPackage获取packageId
Creeks->>Tiktok: 调用getPackageDetail获取跟踪号
Creeks->>Tiktok: 调用getPackageShippingDocument获取面单
Creeks->>Winit: 上传面单和跟踪号到出库单
Winit->>Winit: 仓库贴单发货
6.2 TEMU 卖家履约
sequenceDiagram
participant TEMU
participant Creeks
participant Winit as 万邑通
TEMU->>Creeks: 同步半托管订单-卖家履约部分
Creeks->>Creeks: 订单审核并生成包裹
Creeks->>Creeks: 分仓分物流-万邑通仓加TEMU物流渠道
Creeks->>Winit: 创建自提出库单consigneeType为OTHER
Creeks->>TEMU: 调用bg.logistics.shipment.create创建运单
TEMU-->>Creeks: 返回packageSn运单号
Creeks->>TEMU: 调用bg.logistics.shipment.result.get获取跟踪号
Creeks->>TEMU: 调用bg.logistics.shipment.document.get获取面单
Creeks->>Winit: 上传面单和跟踪号到出库单附件
Winit->>Winit: 第三方物流自提发货
Creeks->>TEMU: 非TEMU物流时调用发货通知标记已发货
6.3 Amazon FBA 多渠道配送
缺货时将自配送订单转为 FBA 仓发货:
- 获取 FBA 仓库支持的物流渠道
- 为包裹指定 FBA 仓和物流渠道
- 调用 FBA 多渠道配送 API 提交订单
- 获取 tracking number
- 定时查询 FBA 发货状态
6.4 eBay 派单至万邑通
eBay 对认证仓(如万邑通)发货的订单免除发货时效考核。需要将 seller id、平台订单号、transaction id、item id 推送给万邑通,由万邑通上报 eBay 认证。
支持 5 种场景:
- 一包一单:一个包裹对应一个 eBay 订单
- 合并包裹:一个包裹对应多个 eBay 订单(需逐单推送 transaction id/item id)
- 同货合并:多个订单产品对应同一个货物编码(需拆开推送,不能合并数量)
- 拆分包裹:一个订单拆成多个包裹
- 组合品:组合品配货需要拆解子件
6.5 Wish 重新履行
Wish Post 发货的包裹可能因地址变更、偏远地区、超重等原因被物流商取消退回:
- 25 天内:订单状态从 shipped 变回 approved,要求卖家重新履行
- 25 天后:平台自动退款
Creeks 通过 is_re_released 字段识别重新释放订单,更新订单信息和状态。
七、基础数据配置
7.1 店铺发货仓映射
erDiagram
平台仓库 ||--o| Creeks仓库 : "映射"
Creeks仓库 ||--o{ 仓库物流渠道 : "关联"
平台仓库 {
bigint account_id
string region_id
string warehouse_id
string warehouse_name
}
Creeks仓库 {
bigint id
string name
int type
}
仓库物流渠道 {
bigint warehouse_channel_id
bigint platform_channel_id
}
维护平台后台仓库(TiktokShop/TEMU)与 Creeks 实际仓库的映射关系,确保分仓分物流时能正确转换。
7.2 物流渠道三层映射
对于使用平台物流的订单(TEMU/TiktokShipping),需要维护三层映射关系:
| 层级 | 说明 |
|---|---|
| 平台物流渠道 | TEMU 的 shipCompanyId / TiktokShop 的 shippingProviderId |
| Creeks 物流渠道 | 系统内的物流渠道编码 |
| 仓库物流渠道 | 万邑通等仓库方的实际发货渠道(如 USPS-Ground-3PL-US) |
7.3 平台物流服务配置
店管人员为每个平台/站点配置物流服务及其时效要求(如 eBay Standard Shipping = 1-5 工作日),分仓分物流时根据时效匹配可用的物流渠道。
八、涉及微服务与职责
| 微服务 | 职责 | 关键表/模块 |
|---|---|---|
| esync-***** | 各平台订单/商品同步到 MongoDB | 各平台 API 对接 |
| order-center | 订单池管理、订单 ES 搜索 | platform_order_view |
| fulfillment | 订单履行核心(订单审核、包裹管理、分仓分物流、标记发货) | fulfillment_order, fulfillment_package, fulfillment_rule |
| logistics | 物流商/渠道管理、运单管理、跟踪号/面单 | lms_logistics_order, lms_logistics_channel, lms_warehouse_platform_channel_relation |
| inventory | 库存管理、出库单、仓库管理 | inv_outbound_order, inv_store_warehouse_relation |
| mall | 店铺/账号管理、平台仓库配置 | mall_store_shipping_warehouse |
| warehouse | 仓库基础数据 | 仓库信息 |
| allocation | 分配策略 | 分配规则 |
九、技术要点
9.1 关键设计模式
| 模式 | 应用场景 |
|---|---|
| 策略模式 | 物流商对接(ProviderCommonStrategy)、平台发货适配(OrderShipApiAdapter)、平台同步策略(SyncPlatformStrategy) |
| 规则引擎 | 分仓分物流规则匹配(WarehouseLogisticsHandle 系列实现) |
| 工厂模式 | 规则处理器工厂(WarehouseLogisticsFactory) |
| 观察者模式 | 包裹状态监听(PackageWatcher)、自动标记发货监听(AutoMarkShipListener) |
| Kafka 消费者 | 各平台订单同步消费者、CDC 变更消费者 |
9.2 分布式事务与并发控制
- 分仓分物流使用 Seata GlobalTransactional 保证事务一致性
- 使用 分布式锁(LockOrder)防止同一包裹并发配货
- 出库单推送使用 异步线程池(pushInventoryExecutor)
- 运单创建失败后支持手动重试
9.3 数据存储
| 存储类型 | 用途 |
|---|---|
| MySQL | 业务数据持久化(订单、包裹、规则等) |
| MongoDB | 平台原始订单数据存储 |
| Elasticsearch | 订单和包裹的搜索查询 |
| Kafka | 平台订单同步消息、跟踪号变更消息 |
| 七牛云 | 面单 PDF 存储 |
| Redis | 缓存、分布式锁 |