Appearance
订单、订单明细与核销码模型
概述
该模型用于统一承载积分商品和周边商品的交易、履约与核销流程。
Order(订单)
订单主表描述支付、履约、退款等核心状态。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| orderId | string | 是 | - | 订单 ID |
| userId | string | 是 | - | 用户 ID |
| channel | enum | 是 | merch | 订单渠道 |
| deliveryMode | enum | 是 | pickup | 履约方式 |
| orderStatus | enum | 是 | pending_payment | 订单履约主状态 |
| refundStatus | enum | 否 | none | 退款过程状态 |
| refundRequestedAt | datetime | 否 | null | 退款受理时间 |
| refundFinishedAt | datetime | 否 | null | 退款完成时间 |
| payType | enum | 是 | 支付类型 | |
| itemCount | int | 是 | 1 | 商品件数,固定为 1 |
| pointsAmount | int | 否 | 0 | 消耗积分 |
| pointsFrozenAmount | int | 否 | 0 | 已冻结积分 |
| cashAmount | decimal | 否 | 0 | 支付现金 |
| freightAmount | decimal | 否 | 0 | 运费 |
| goodsAmount | decimal | 否 | 0 | 商品金额 |
| addressId | string | 否 | null | 收货地址 ID |
| storeId | string | 否 | null | 自提门店 ID |
| writeoffCodeId | string | 否 | null | 核销码 ID |
| cancelReason | string | 否 | null | 取消原因 |
| createdAt | datetime | 是 | 当前时间 | 创建时间 |
| paidAt | datetime | 否 | null | 支付时间 |
| finishedAt | datetime | 否 | null | 完成时间 |
订单主状态 orderStatus
pending_payment:待支付pending_writeoff:待核销pending_delivery:待发货shipped:已发货completed:已完成refunded:已退款cancelled:已取消
退款状态 refundStatus
none:无退款processing:退款中succeeded:退款成功rejected:退款被拒绝
支付类型 payType
wechat:微信支付points:纯积分支付mix:混合支付
OrderItem(订单明细)
保存商品快照,避免商品后续变更影响历史订单展示和核算。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| orderItemId | string | 是 | - | 订单明细 ID |
| orderId | string | 是 | - | 订单 ID |
| goodsId | string | 是 | - | 商品 ID |
| goodsChannel | enum | 是 | merch | 商品渠道 |
| goodsType | enum | 是 | physical | 商品类型 |
| quantity | int | 是 | 1 | 购买数量,固定为 1 |
| goodsTitleSnapshot | string | 是 | - | 商品标题快照 |
| goodsImageSnapshot | string | 是 | - | 商品主图快照 |
| highlightSnapshot | string | 否 | null | 商品卖点快照 |
| pointsPriceSnapshot | int | 否 | 0 | 下单时积分价快照 |
| cashPriceSnapshot | decimal | 否 | 0 | 下单时现金价快照 |
| freightSnapshot | decimal | 否 | 0 | 下单时运费快照 |
| deliveryModeSnapshot | enum | 是 | pickup | 下单时履约方式快照 |
| storeNameSnapshot | string | 否 | null | 自提门店快照 |
| createdAt | datetime | 是 | 当前时间 | 创建时间 |
WriteoffCode(核销码)
用于自提/核销类订单的唯一核销凭证。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| codeId | string | 是 | - | 核销码 ID |
| orderId | string | 是 | - | 关联订单 ID |
| codeNo | string | 是 | - | 编号 |
| qrToken | string | 是 | - | 动态二维码 token |
| expireAt | datetime | 否 | null | 当前 token 过期时间 |
| status | enum | 是 | unused | 核销状态 |
核销状态
unused:未使用used:已使用expired:已过期
设计要点
Order负责交易状态,OrderItem负责交易快照,WriteoffCode负责线下核销凭证。itemCount与quantity当前约束为固定1,说明模型按单品单单设计。- 自提订单通常依赖
storeId与writeoffCodeId;邮寄订单通常依赖addressId。 refundStatus与orderStatus分离,便于表达退款处理中但主单尚未最终关闭的状态。- 涉及积分支付时,建议与
PointsFlow联动记录冻结、扣减、退款与解冻。
