订单中心

本模块为订单中心,主要负责订单的创建、支付、退款等核心业务流程管理。以下是订单中心的核心数据表结构说明。(源码未开放,请自行实现或联系作者获取)

ER图

ER图

核心数据表

oc_order_main - 订单主表

字段名类型是否为空默认值注释
idbigint(20)NONULL主键,唯一标识订单
user_idbigint(20)NONULL用户ID,关联用户信息
order_typevarchar(64)NONULL订单类型(子表名)
titlevarchar(100)NONULL订单标题
total_amountdecimal(18, 2)NONULL订单金额
order_statusint(11)YESNULL订单状态: 0-待支付, 10-支付中, 20-已支付, 30-处理中, 40-进行中, 50-已完成, 60-已关闭, 70-退款中, 75-部分退款, 80-已退款, 90-已归档
refunded_amountdecimal(18, 2)YESNULL累计已退款金额
last_refund_timedatetime(3)YESNULL最后退款时间
remarkvarchar(255)YESNULL备注信息
variabletextYESNULL扩展属性JSON
create_timedatetime(3)YESNULL创建时间
create_userbigint(20)YESNULL创建用户
update_timedatetime(3)YESNULL更新时间
update_userbigint(20)YESNULL更新用户
is_deletedtinyint(1)YES0是否删除标记

oc_order_payment - 订单支付

字段名类型是否为空默认值注释
idbigint(20)NONULL主键
user_idbigint(20)NONULL支付用户ID
third_accountvarchar(64)YESNULL如微从支付需要openid
order_idbigint(20)NONULL订单ID
titlevarchar(100)YESNULL订单标题
total_amountdecimal(18, 2)YESNULL订单金额
payment_typevarchar(32)YESNULL支付类型(如微信、支付宝等)
payment_novarchar(64)NONULL商家支付单号
transaction_idvarchar(64)YESNULL支付平台订单ID
payment_statusint(11)YES0支付状态(0:未支付;1:已支付)
remarkvarchar(255)YESNULL备注
variabletextYESNULL扩展属性JSON
prepay_infotextYESNULL统一下单预支付信息,一般有效期两小时
pay_resulttextYESNULL支付结果(回调或主动查询)
create_timedatetime(3)YESNULL创建时间
create_userbigint(20)YESNULL创建用户
update_timedatetime(3)YESNULL更新时间
update_userbigint(20)YESNULL更新用户
is_deletedtinyint(1)YES0是否删除标记

oc_refund_apply - 退款申请

字段名类型是否为空默认值注释
idbigint(20)NONULL主键
order_idbigint(20)NONULL订单ID
user_idbigint(20)YESNULL申请退款的用户
apply_refund_amountdecimal(18, 2)NONULL申请退款金额
actual_refund_amountdecimal(18, 2)YESNULL实际退款金额(可能小于申请金额)
refund_typeint(11)YESNULL退款类型: 1-用户申请, 2-系统自动, 3-平台代付, 4-售后换货
refund_reasontextYESNULL退款原因
apply_statusint(11)YESNULL退款状态(0:申请中;1:申请审核通过;2:退款中;3:退款成功;4:退款失败;99:退款取消)
imagesvarchar(500)YESNULL退款相关凭证截图
reject_reasontextYESNULL审核不通过原因
approve_user_idbigint(20)YESNULL处理审批的管理员ID
approve_remarkvarchar(255)YESNULL审批备注
approve_timedatetime(3)YESNULL审批时间
create_timedatetime(3)YESNULL创建时间
create_userbigint(20)YESNULL创建用户
update_timedatetime(3)YESNULL更新时间
update_userbigint(20)YESNULL更新用户
is_deletedtinyint(1)YES0是否删除标记

oc_refund_item - 退款明细

字段名类型是否为空默认值注释
idbigint(20)NONULL主键
refund_apply_idbigint(20)NONULL退款申请ID
item_idbigint(20)NONULL订单项ID
refund_amountdecimal(18, 2)NONULL退款金额
reasontextYESNULL退款原因
create_timedatetime(3)YESNULL创建时间
create_userbigint(20)YESNULL创建用户
is_deletedtinyint(1)YES0是否删除标记

oc_order_payment_refund - 订单支付退款

字段名类型是否为空默认值注释
idbigint(20)NONULL主键
order_payment_idbigint(20)NONULL订单支付ID
order_idbigint(20)NONULL订单ID
refund_apply_idbigint(20)YESNULL关联的退款申请ID
refund_novarchar(64)NONULL商家退款单号
refund_idvarchar(64)YESNULL支付平台退款单号
refund_amountdecimal(18, 2)NONULL退款金额
refund_statusint(11)YES2退款状态(2:退款中;3:退款成功;4:退款失败)
remarkvarchar(255)YESNULL备注
variabletextYESNULL扩展属性JSON
create_timedatetime(3)YESNULL创建时间
create_userbigint(20)YESNULL创建用户
update_timedatetime(3)YESNULL更新时间
update_userbigint(20)YESNULL更新用户
is_deletedtinyint(1)YES0是否删除标记

oc_order_main_status_log - 订单主表状态变更日志

字段名类型是否为空默认值注释
idbigint(20)NONULL主键
order_idbigint(20)NONULL订单ID
from_statusint(11)NONULL改变前的状态
to_statusint(11)NONULL改变后的状态
reasontextYESNULL状态变更原因,如:用户取消、超时关闭、管理员审核通过等
create_timedatetime(3)YESNULL创建时间
create_userbigint(20)YESNULL创建用户

数据关系说明

  • oc_order_mainoc_order_payment 为一对一关系,一个订单对应一个支付记录。
  • oc_order_mainoc_refund_apply 为一对多关系,一个订单可以有多个退款申请。
  • oc_refund_applyoc_refund_item 为一对多关系,一个退款申请可以包含多个退款明细。
  • oc_order_paymentoc_order_payment_refund 为一对多关系,一个支付记录可以对应多个退款记录。
  • oc_order_mainoc_order_main_status_log 为一对多关系,记录订单状态变更历史。

使用场景

  1. 订单创建:创建订单时,先在 oc_order_main 表插入记录,状态为"待支付"。
  2. 支付处理:支付成功后,在 oc_order_payment 表插入支付记录,并更新 oc_order_main 的支付状态。
  3. 退款申请:用户发起退款时,在 oc_refund_apply 表插入申请记录,并生成对应的 oc_refund_item 明细。
  4. 退款处理:审批通过后,在 oc_order_payment_refund 表插入退款记录,并更新 oc_refund_apply 的状态。
  5. 状态变更:所有订单状态变更都会在 oc_order_main_status_log 表中记录变更日志。

特别说明oc_refund_applyoc_refund_item 表的设计仅作为业务定制开发的参考,不包含在基础框架的实现中。若需使用退款功能,建议基于此设计进行扩展开发,并结合支付平台的退款接口完成逻辑处理。

事件驱动机制

为了支持业务系统对订单状态变化的实时响应,订单中心提供了基于事件驱动的状态变更通知机制。开发者可通过实现 OrderStatusChangeListener 接口来监听订单主表状态变更,并执行自定义逻辑。

事件类:OrderStatusChangedEvent

  • 作用:封装订单状态变更的关键信息。
  • 字段说明
    • orderId: 订单ID
    • fromStatus: 变更前状态
    • toStatus: 变更后状态
    • reason: 变更原因(如:用户取消、超时关闭等)
    • changeTime: 变更时间

监听器接口:OrderStatusChangeListener

  • 作用:定义状态变更的处理逻辑。
  • 方法
    void onOrderStatusChanged(OrderStatusChangedEvent event);
    

默认实现:DefaultOrderStatusChangeListener

  • 提供基础日志记录功能,可用于调试或监控。
  • 开发者可继承或替换此实现,以接入消息队列、通知服务、库存同步等下游系统。

📌 提示:所有订单状态变更均会触发该事件,确保业务系统能及时感知并响应状态流转。

核心接口说明

OrderCenterApi

  • 提供订单创建、支付、退款、状态查询等核心业务能力。
  • 关键方法包括:
    • createOrder: 创建订单,支持自定义订单ID和扩展属性。
    • unifiedOrder: 统一下单,生成支付信息。
    • doRefund: 发起退款请求,支持关联退款申请。
    • processPaymentSuccess: 处理支付成功回调。
    • processRefundSuccess / processRefundFail: 处理退款结果回调。

ThirdPartyPaymentApi

  • 定义与第三方支付平台交互的标准接口。
  • 支持多种支付渠道(如微信、支付宝)的统一对接。
  • 关键方法包括:
    • unifiedOrder: 调用第三方平台创建订单。
    • doRefund: 发起退款请求。
    • queryOrderByPaymentNo: 查询支付订单状态。
    • parsePaymentCallbackData: 解析支付回调数据。

提示:上述接口为业务层抽象,已提供默认实现(如 OrderCenterProviderWxPaymentProvider),支持微信支付等常见场景。开发者可直接使用或基于现有实现进行扩展。