跳到正文
Kale的数字花园
目录 文章
/11 分钟/9 阅读/0 评论

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 仓发货:

  1. 获取 FBA 仓库支持的物流渠道
  2. 为包裹指定 FBA 仓和物流渠道
  3. 调用 FBA 多渠道配送 API 提交订单
  4. 获取 tracking number
  5. 定时查询 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 缓存、分布式锁
相关阅读

11 分钟

Creeks 订单履行业务全景(业务视角)

各平台的订单通过定时任务自动拉到系统里,先进「**订单池**」。订单池是所有平台订单的汇总地,方便店管人员统一查看和核算。 系统会做筛选,只有需要我们发货的订单才会进入履行流程: 订单进来后状态是「**待审核**」。系统会自动做一系列检查:

面试#订单履行8 阅读 · 0 评论

31 分钟

订单履约业务与技术流程梳理

本文只沉淀前面讨论过的业务和技术内容,覆盖订单履约主链路、订单/履约单状态流转、配货与锁库存、派单流程、申请运单流程、Temu 平台履约流程,以及对应的一致性风险。 订单履约不是单纯的订单状态变化,而是一条跨履约、物流、库存、仓库、平台的长

面试#订单履行7 阅读 · 0 评论

评论需要登录。生产环境使用 GitHub 登录,本地可前往 登录页 使用开发登录。

还没有评论,来抢沙发。