巴青农资商城

biz_order.sql 9.7KB

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