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

核心数据表
oc_order_main - 订单主表
| 字段名 | 类型 | 是否为空 | 默认值 | 注释 |
|---|---|---|---|---|
| id | bigint(20) | NO | NULL | 主键,唯一标识订单 |
| user_id | bigint(20) | NO | NULL | 用户ID,关联用户信息 |
| order_type | varchar(64) | NO | NULL | 订单类型(子表名) |
| title | varchar(100) | NO | NULL | 订单标题 |
| total_amount | decimal(18, 2) | NO | NULL | 订单金额 |
| order_status | int(11) | YES | NULL | 订单状态: 0-待支付, 10-支付中, 20-已支付, 30-处理中, 40-进行中, 50-已完成, 60-已关闭, 70-退款中, 75-部分退款, 80-已退款, 90-已归档 |
| refunded_amount | decimal(18, 2) | YES | NULL | 累计已退款金额 |
| last_refund_time | datetime(3) | YES | NULL | 最后退款时间 |
| remark | varchar(255) | YES | NULL | 备注信息 |
| variable | text | YES | NULL | 扩展属性JSON |
| create_time | datetime(3) | YES | NULL | 创建时间 |
| create_user | bigint(20) | YES | NULL | 创建用户 |
| update_time | datetime(3) | YES | NULL | 更新时间 |
| update_user | bigint(20) | YES | NULL | 更新用户 |
| is_deleted | tinyint(1) | YES | 0 | 是否删除标记 |
oc_order_payment - 订单支付
| 字段名 | 类型 | 是否为空 | 默认值 | 注释 |
|---|---|---|---|---|
| id | bigint(20) | NO | NULL | 主键 |
| user_id | bigint(20) | NO | NULL | 支付用户ID |
| third_account | varchar(64) | YES | NULL | 如微从支付需要openid |
| order_id | bigint(20) | NO | NULL | 订单ID |
| title | varchar(100) | YES | NULL | 订单标题 |
| total_amount | decimal(18, 2) | YES | NULL | 订单金额 |
| payment_type | varchar(32) | YES | NULL | 支付类型(如微信、支付宝等) |
| payment_no | varchar(64) | NO | NULL | 商家支付单号 |
| transaction_id | varchar(64) | YES | NULL | 支付平台订单ID |
| payment_status | int(11) | YES | 0 | 支付状态(0:未支付;1:已支付) |
| remark | varchar(255) | YES | NULL | 备注 |
| variable | text | YES | NULL | 扩展属性JSON |
| prepay_info | text | YES | NULL | 统一下单预支付信息,一般有效期两小时 |
| pay_result | text | YES | NULL | 支付结果(回调或主动查询) |
| create_time | datetime(3) | YES | NULL | 创建时间 |
| create_user | bigint(20) | YES | NULL | 创建用户 |
| update_time | datetime(3) | YES | NULL | 更新时间 |
| update_user | bigint(20) | YES | NULL | 更新用户 |
| is_deleted | tinyint(1) | YES | 0 | 是否删除标记 |
oc_refund_apply - 退款申请
| 字段名 | 类型 | 是否为空 | 默认值 | 注释 |
|---|---|---|---|---|
| id | bigint(20) | NO | NULL | 主键 |
| order_id | bigint(20) | NO | NULL | 订单ID |
| user_id | bigint(20) | YES | NULL | 申请退款的用户 |
| apply_refund_amount | decimal(18, 2) | NO | NULL | 申请退款金额 |
| actual_refund_amount | decimal(18, 2) | YES | NULL | 实际退款金额(可能小于申请金额) |
| refund_type | int(11) | YES | NULL | 退款类型: 1-用户申请, 2-系统自动, 3-平台代付, 4-售后换货 |
| refund_reason | text | YES | NULL | 退款原因 |
| apply_status | int(11) | YES | NULL | 退款状态(0:申请中;1:申请审核通过;2:退款中;3:退款成功;4:退款失败;99:退款取消) |
| images | varchar(500) | YES | NULL | 退款相关凭证截图 |
| reject_reason | text | YES | NULL | 审核不通过原因 |
| approve_user_id | bigint(20) | YES | NULL | 处理审批的管理员ID |
| approve_remark | varchar(255) | YES | NULL | 审批备注 |
| approve_time | datetime(3) | YES | NULL | 审批时间 |
| create_time | datetime(3) | YES | NULL | 创建时间 |
| create_user | bigint(20) | YES | NULL | 创建用户 |
| update_time | datetime(3) | YES | NULL | 更新时间 |
| update_user | bigint(20) | YES | NULL | 更新用户 |
| is_deleted | tinyint(1) | YES | 0 | 是否删除标记 |
oc_refund_item - 退款明细
| 字段名 | 类型 | 是否为空 | 默认值 | 注释 |
|---|---|---|---|---|
| id | bigint(20) | NO | NULL | 主键 |
| refund_apply_id | bigint(20) | NO | NULL | 退款申请ID |
| item_id | bigint(20) | NO | NULL | 订单项ID |
| refund_amount | decimal(18, 2) | NO | NULL | 退款金额 |
| reason | text | YES | NULL | 退款原因 |
| create_time | datetime(3) | YES | NULL | 创建时间 |
| create_user | bigint(20) | YES | NULL | 创建用户 |
| is_deleted | tinyint(1) | YES | 0 | 是否删除标记 |
oc_order_payment_refund - 订单支付退款
| 字段名 | 类型 | 是否为空 | 默认值 | 注释 |
|---|---|---|---|---|
| id | bigint(20) | NO | NULL | 主键 |
| order_payment_id | bigint(20) | NO | NULL | 订单支付ID |
| order_id | bigint(20) | NO | NULL | 订单ID |
| refund_apply_id | bigint(20) | YES | NULL | 关联的退款申请ID |
| refund_no | varchar(64) | NO | NULL | 商家退款单号 |
| refund_id | varchar(64) | YES | NULL | 支付平台退款单号 |
| refund_amount | decimal(18, 2) | NO | NULL | 退款金额 |
| refund_status | int(11) | YES | 2 | 退款状态(2:退款中;3:退款成功;4:退款失败) |
| remark | varchar(255) | YES | NULL | 备注 |
| variable | text | YES | NULL | 扩展属性JSON |
| create_time | datetime(3) | YES | NULL | 创建时间 |
| create_user | bigint(20) | YES | NULL | 创建用户 |
| update_time | datetime(3) | YES | NULL | 更新时间 |
| update_user | bigint(20) | YES | NULL | 更新用户 |
| is_deleted | tinyint(1) | YES | 0 | 是否删除标记 |
oc_order_main_status_log - 订单主表状态变更日志
| 字段名 | 类型 | 是否为空 | 默认值 | 注释 |
|---|---|---|---|---|
| id | bigint(20) | NO | NULL | 主键 |
| order_id | bigint(20) | NO | NULL | 订单ID |
| from_status | int(11) | NO | NULL | 改变前的状态 |
| to_status | int(11) | NO | NULL | 改变后的状态 |
| reason | text | YES | NULL | 状态变更原因,如:用户取消、超时关闭、管理员审核通过等 |
| create_time | datetime(3) | YES | NULL | 创建时间 |
| create_user | bigint(20) | YES | NULL | 创建用户 |
数据关系说明
oc_order_main与oc_order_payment为一对一关系,一个订单对应一个支付记录。oc_order_main与oc_refund_apply为一对多关系,一个订单可以有多个退款申请。oc_refund_apply与oc_refund_item为一对多关系,一个退款申请可以包含多个退款明细。oc_order_payment与oc_order_payment_refund为一对多关系,一个支付记录可以对应多个退款记录。oc_order_main与oc_order_main_status_log为一对多关系,记录订单状态变更历史。
使用场景
- 订单创建:创建订单时,先在
oc_order_main表插入记录,状态为"待支付"。 - 支付处理:支付成功后,在
oc_order_payment表插入支付记录,并更新oc_order_main的支付状态。 - 退款申请:用户发起退款时,在
oc_refund_apply表插入申请记录,并生成对应的oc_refund_item明细。 - 退款处理:审批通过后,在
oc_order_payment_refund表插入退款记录,并更新oc_refund_apply的状态。 - 状态变更:所有订单状态变更都会在
oc_order_main_status_log表中记录变更日志。
特别说明:
oc_refund_apply和oc_refund_item表的设计仅作为业务定制开发的参考,不包含在基础框架的实现中。若需使用退款功能,建议基于此设计进行扩展开发,并结合支付平台的退款接口完成逻辑处理。
事件驱动机制
为了支持业务系统对订单状态变化的实时响应,订单中心提供了基于事件驱动的状态变更通知机制。开发者可通过实现 OrderStatusChangeListener 接口来监听订单主表状态变更,并执行自定义逻辑。
事件类:OrderStatusChangedEvent
- 作用:封装订单状态变更的关键信息。
- 字段说明:
orderId: 订单IDfromStatus: 变更前状态toStatus: 变更后状态reason: 变更原因(如:用户取消、超时关闭等)changeTime: 变更时间
监听器接口:OrderStatusChangeListener
- 作用:定义状态变更的处理逻辑。
- 方法:
void onOrderStatusChanged(OrderStatusChangedEvent event);
默认实现:DefaultOrderStatusChangeListener
- 提供基础日志记录功能,可用于调试或监控。
- 开发者可继承或替换此实现,以接入消息队列、通知服务、库存同步等下游系统。
📌 提示:所有订单状态变更均会触发该事件,确保业务系统能及时感知并响应状态流转。
核心接口说明
OrderCenterApi
- 提供订单创建、支付、退款、状态查询等核心业务能力。
- 关键方法包括:
createOrder: 创建订单,支持自定义订单ID和扩展属性。unifiedOrder: 统一下单,生成支付信息。doRefund: 发起退款请求,支持关联退款申请。processPaymentSuccess: 处理支付成功回调。processRefundSuccess/processRefundFail: 处理退款结果回调。
ThirdPartyPaymentApi
- 定义与第三方支付平台交互的标准接口。
- 支持多种支付渠道(如微信、支付宝)的统一对接。
- 关键方法包括:
unifiedOrder: 调用第三方平台创建订单。doRefund: 发起退款请求。queryOrderByPaymentNo: 查询支付订单状态。parsePaymentCallbackData: 解析支付回调数据。
提示:上述接口为业务层抽象,已提供默认实现(如
OrderCenterProvider和WxPaymentProvider),支持微信支付等常见场景。开发者可直接使用或基于现有实现进行扩展。
