-- ============================================================================= -- 订单模块 biz_order / biz_order_item / biz_order_logistics_trace -- 用途:C 端会员在店铺下单;平台 / 商家端共用同一套表履约 -- 关联文档:doc/平台后台/订单管理/订单管理技术方案.md -- doc/店铺后台/订单管理/全部订单/全部订单技术方案.md -- doc/消费者APP/确认订单页(多商品)/确认订单页(多商品)技术方案.md -- doc/消费者APP/确认订单页(单商品)(取消支付前)/确认订单页(单商品)技术方案.md -- 状态规则:order_status 0待支付 1待发货 2已发货 3已完成 4已关闭 5已删除 -- 逻辑删除用 order_status=5,del_flag 保持 0(审计可查) -- 存量库升级:若 biz_order_item 已建且无 checkout 字段,执行 sql/biz_order_item_checkout.sql -- 存量库升级:若 biz_order 无 idx_stats_finish,见本文件末尾 § 升级脚本 -- ============================================================================= -- ----------------------------------------------------------------------------- -- 订单主表 biz_order -- 说明:一单对应一次交易;商品明细见 biz_order_item;物流节点见 biz_order_logistics_trace -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_order` ( `order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单ID,主键', `order_no` varchar(32) NOT NULL COMMENT '订单编号,全平台唯一;格式 O+yyyyMMdd+6位序号', `member_id` bigint(20) NOT NULL COMMENT '买家会员ID(biz_member.member_id)', `shop_id` bigint(20) NOT NULL COMMENT '所属店铺ID(biz_shop.shop_id);商家端列表按此字段隔离', `merchant_id` bigint(20) NOT NULL COMMENT '所属商户ID(biz_merchant.merchant_id);冗余便于商户维度统计与删商户校验', `order_status` char(1) NOT NULL DEFAULT '0' COMMENT '订单状态:0待支付 1待发货 2已发货 3已完成 4已关闭 5已删除(逻辑删除)', `close_type` char(1) DEFAULT NULL COMMENT '关闭类型(order_status=4时填写):1未支付超时 2买家取消 3运营关闭 4支付失败/退款', `close_reason` varchar(500) DEFAULT NULL COMMENT '关闭说明;运营手工关闭或系统关闭时记录原因', `pay_type` char(1) DEFAULT NULL COMMENT '支付方式字典 biz_order_pay_type;C端支付成功后写入', `pay_status` char(1) NOT NULL DEFAULT '0' COMMENT '支付状态:0未支付 1已支付;与 order_status 配合判断待支付/待发货', `trade_no` varchar(64) DEFAULT NULL COMMENT '支付渠道交易流水号;用于检索与对账', `goods_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '商品金额合计(不含运费);下单时按明细行汇总', `freight_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '运费金额;默认0;列表可展示「含运费」', `pay_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '实付金额=goods_amount+freight_amount;会员累计消费O11统计字段', `consignee_name` varchar(64) NOT NULL COMMENT '收货人姓名(下单快照,后续不随会员地址变更)', `consignee_mobile` varchar(20) NOT NULL COMMENT '收货人手机号(下单快照;列表展示须脱敏)', `consignee_address` varchar(512) NOT NULL COMMENT '收货完整地址文本(下单快照)', `delivery_type` char(1) DEFAULT NULL COMMENT '配送方式(发货时写入):1物流配送 2商家配送;待发货前为空', `logistics_company` varchar(64) DEFAULT NULL COMMENT '物流公司名称;delivery_type=1时发货填写', `tracking_no` varchar(64) DEFAULT NULL COMMENT '快递单号;delivery_type=1时发货填写', `vehicle_no` varchar(32) DEFAULT NULL COMMENT '车辆号码;delivery_type=2时商家配送发货填写', `courier_name` varchar(64) DEFAULT NULL COMMENT '配送员姓名;delivery_type=2时商家配送发货填写', `courier_mobile` varchar(20) DEFAULT NULL COMMENT '配送员手机号;delivery_type=2时商家配送发货填写', `ship_remark` varchar(500) DEFAULT NULL COMMENT '发货备注;选填', `shipper_name` varchar(64) DEFAULT NULL COMMENT '发货人快照(发货时自配送设置写入)', `shipper_mobile` varchar(20) DEFAULT NULL COMMENT '发货人联系方式快照', `ship_region_code` varchar(64) DEFAULT NULL COMMENT '发货地区编码快照(区县级 biz_region.code)', `ship_region_name` varchar(128) DEFAULT NULL COMMENT '发货地区名称快照(省/市/区)', `ship_detail_address` varchar(256) DEFAULT NULL COMMENT '发货详细地址快照', `member_nick_name` varchar(64) DEFAULT NULL COMMENT '下单时会员昵称快照;列表/详情展示买家名称', `shop_name` varchar(128) DEFAULT NULL COMMENT '下单时店铺名称快照;平台列表展示用', `create_time` datetime NOT NULL COMMENT '下单时间;列表默认按此字段降序', `pay_time` datetime DEFAULT NULL COMMENT '支付成功时间;pay_status=1时有值', `ship_time` datetime DEFAULT NULL COMMENT '发货时间;order_status>=2时有值;与发货表单 shipTime 一致', `pay_expire_time` datetime NOT NULL COMMENT '支付截止时间;创建订单时=create_time+超时分钟;O8定时关单扫描', `finish_time` datetime DEFAULT NULL COMMENT '确认收货时间;order_status=3时有值;C端确认收货写入', `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '物理删除标志:0存在;已删除订单用 order_status=5,本字段仍保持0', `create_by` varchar(64) DEFAULT '' COMMENT '创建者;C端下单可为空或系统标识', `update_by` varchar(64) DEFAULT '' COMMENT '更新者;发货/关闭/删除等写操作记录操作人', `update_time` datetime DEFAULT NULL COMMENT '最后更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`order_id`), UNIQUE KEY `uk_order_no` (`order_no`), KEY `idx_member` (`member_id`,`create_time`), KEY `idx_shop_status` (`shop_id`,`order_status`), KEY `idx_create_time` (`create_time`), KEY `idx_pay_expire` (`order_status`,`pay_expire_time`), KEY `idx_stats_finish` (`order_status`,`finish_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单主表(平台+商家端同源)'; -- ----------------------------------------------------------------------------- -- 订单商品明细 biz_order_item -- 说明:下单时写入商品快照;整单发货不拆行;商品后续改价/改名不影响本表 -- buyer_remark/service_desc/cart_item_id/spec_key 供 C 端确认订单页使用 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_order_item` ( `item_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '明细行ID,主键', `order_id` bigint(20) NOT NULL COMMENT '订单ID(biz_order.order_id)', `goods_id` bigint(20) NOT NULL COMMENT '原商品ID(biz_goods.goods_id);用于库存扣减/回滚关联', `goods_name` varchar(128) NOT NULL COMMENT '商品名称快照', `goods_spec` varchar(64) DEFAULT '默认' COMMENT '商品规格文案快照;首期单规格可固定为「默认」', `goods_image` varchar(512) DEFAULT NULL COMMENT '商品主图URL快照', `unit_price` decimal(12,2) NOT NULL COMMENT '成交单价快照', `quantity` int(11) NOT NULL COMMENT '购买数量', `line_amount` decimal(12,2) NOT NULL COMMENT '行小计=unit_price*quantity', `buyer_remark` varchar(500) NOT NULL DEFAULT '' COMMENT '买家行备注', `service_desc` varchar(500) NOT NULL DEFAULT '' COMMENT '服务快照摘要', `cart_item_id` bigint(20) DEFAULT NULL COMMENT '来源购物车行ID;立即购买(BUY_NOW)为NULL', `spec_key` varchar(64) NOT NULL DEFAULT '' COMMENT '规格键;v1统一规格为空串', `sort_no` int(11) NOT NULL DEFAULT '0' COMMENT '行排序号;列表展示首行取 sort_no 最小', PRIMARY KEY (`item_id`), KEY `idx_order_id` (`order_id`), KEY `idx_cart_item_id` (`cart_item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单商品明细(下单快照)'; -- ----------------------------------------------------------------------------- -- 物流节点 biz_order_logistics_trace -- 说明:发货/运输更新/送达/确认收货均追加节点,不覆盖历史;详情时间轴倒序展示 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_order_logistics_trace` ( `trace_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '节点ID,主键', `order_id` bigint(20) NOT NULL COMMENT '订单ID(biz_order.order_id)', `trace_type` char(1) NOT NULL COMMENT '节点类型:1已发货 2运输更新 3已送达 4确认收货', `trace_time` datetime NOT NULL COMMENT '节点发生时间(业务时间,可早于 create_time)', `content` varchar(1000) NOT NULL DEFAULT '' COMMENT '节点描述/摘要;发货节点可含物流公司+单号摘要', `create_by` varchar(64) DEFAULT '' COMMENT '操作人;平台运营/商家账号/C端系统', `create_time` datetime DEFAULT NULL COMMENT '记录写入时间', PRIMARY KEY (`trace_id`), KEY `idx_order_id_time` (`order_id`,`trace_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单物流节点时间轴'; -- ----------------------------------------------------------------------------- -- 存量库升级:商城对外统计按 order_status + finish_time 扫描(《商城数据统计技术方案》) -- 说明:新建库已在 biz_order 建表语句含 idx_stats_finish;已上线库执行下方语句一次 -- ----------------------------------------------------------------------------- -- ALTER TABLE `biz_order` -- ADD INDEX `idx_stats_finish` (`order_status`, `finish_time`);