Skip to content

概述

本文档详细说明 EBAOZU 系统中商贸及租赁订单的全生命周期流转流程,涵盖订单确认、金额计算、订单创建、支付回调、发货、确认收货、退款售后及核销自提等核心业务逻辑。


订单状态流转模型

           ┌──────────────┐
           │   用户下单   │
           └──────┬───────┘

           ┌──────▼───────┐
           │ 待支付 paid=0 │ ──── 超时未付 ──→ 自动取消/回退库存
           └──────┬───────┘
                  │ 支付成功
           ┌──────▼───────┐
           │ 待发货 stat=0 │ ──── 申请退款 ──→ 退款售后流程
           └──────┬───────┘
                  │ 商家发货
           ┌──────▼───────┐
           │ 待收货 stat=1 │ ──── 申请退款 ──→ 退款售后流程
           └──────┬───────┘
                  │ 确认收货 / 自动收货
           ┌──────▼───────┐
           │ 已收货 stat=2 │ ──→ 佣金结算 / 积分赠送
           └──────┬───────┘
                  │ 用户评价
           ┌──────▼───────┐
           │ 订单完成 stat=3│
           └──────────────┘

核心服务类结构

app/services/order/
├── StoreOrderServices.php          # 订单主服务(CRUD、状态查询、详情组装)
├── StoreOrderCreateServices.php    # 订单创建服务(下单主流程)
├── StoreOrderComputedServices.php  # 订单价格与优惠计算服务
├── StoreOrderDeliveryServices.php  # 订单发货服务(快递、自提、配送)
├── StoreOrderTakeServices.php      # 订单收货服务
├── StoreOrderRefundServices.php    # 订单退款与售后审核服务
├── StoreOrderWriteOffServices.php  # 自提核销服务
├── StoreCartServices.php           # 购物车服务
└── ...

关键流程实现详解

下单与创建订单 (StoreOrderCreateServices)

下单过程必须在数据库事务内严格执行:

  1. 校验缓存与参数:校验结算 Key、收货地址合法性、商品上架状态与限购策略;
  2. 校验并原子扣减库存:扣减商品 SKU 表与主表库存,防止超卖;
  3. 计算实际应付金额:计算商品总价、运费、优惠券抵扣、积分抵扣、会员折扣等;
  4. 生成订单主表与快照表:写入 eb_store_ordereb_store_order_cart_info
  5. 派发创建事件:触发 order.create 事件,异步清理购物车、推入延迟取消队列任务(UnpaidOrderCancelJob)。

支付成功后处理 (StoreOrderSuccessServices)

支付回调验签通过后,标记 paid = 1,记录支付时间并触发 order.pay 事件:

  • 异步计算分销佣金;
  • 处理会员经验升级与积分返还;
  • 发送支付成功短信/模板消息通知。

发货处理 (StoreOrderDeliveryServices)

支持多种发货方式:

  • 快递发货 (express):录入快递公司与快递单号,更新状态为待收货并开启自动收货倒计时任务;
  • 同城/自提配送 (send/city):指定配送员或核销码;
  • 虚拟发货 (fictitious):无需物流自动履约。

售后退款处理 (StoreOrderRefundServices)

  • 用户申请退款生成 eb_store_order_refund 记录;
  • 商家审核同意后调用支付渠道原路退款(wechatRefund / alipayRefund / yueRefund);
  • 退款成功后回退对应商品库存,并退还使用的优惠券和积分。

订单主要字段状态值

字段取值含义
paid0 / 1未支付 / 已支付
status0待发货(已支付待处理)
status1待收货(已发货在途中)
status2已收货(用户已确认或系统自动确认)
status3待评价 / 已完成
refund_status0未申请退款
refund_status1申请退款中
refund_status2部分退款
refund_status3全部退款

二开注意事项

  1. 事务保护:所有涉及订单创建、支付流转、发货与退款的操作必须使用 $this->transaction(function(){ ... })
  2. 幂等校验:订单支付回调与退款操作必须进行幂等性检查,防止重复扣款或重复回退库存。
  3. 分层规范:禁止在 Controller 中编写复杂的订单金额计算与状态变更逻辑,一律委托给对应的 StoreOrder*Services

承信租多门店租赁商城系统官方文档