-- 基础实体表结构 (BaseDO) 不单独建表,字段会被继承到其他表中 -- 交易订单表 (trade_order) CREATE TABLE `tz_trade_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单编号,主键自增', `order_num` varchar(64) NOT NULL COMMENT '订单流水号', `order_type` tinyint(4) NOT NULL COMMENT '订单类型 (枚举 TradeOrderTypeEnum)', `order_terminal` tinyint(4) NOT NULL COMMENT '订单来源 (枚举 TerminalEnum)', `order_status` tinyint(4) NOT NULL COMMENT '订单状态 (枚举 TradeOrderStatusEnum)', `user_id` bigint(20) NOT NULL COMMENT '用户编号', `user_ip` varchar(64) DEFAULT NULL COMMENT '用户IP', `user_remark` varchar(512) DEFAULT NULL COMMENT '用户备注', `finish_time` datetime DEFAULT NULL COMMENT '订单完成时间', `cancel_time` datetime DEFAULT NULL COMMENT '订单取消时间', `cancel_type` tinyint(4) DEFAULT NULL COMMENT '取消类型 (枚举 TradeOrderCancelTypeEnum)', `merchant_remark` varchar(512) DEFAULT NULL COMMENT '商家备注', `comment_status` tinyint(1) DEFAULT NULL COMMENT '是否评价 (true-已评价, false-未评价)', `total_price` int(11) NOT NULL COMMENT '商品原价,单位:分', `discount_price` int(11) NOT NULL COMMENT '优惠金额,单位:分', `delivery_price` int(11) NOT NULL COMMENT '运费金额,单位:分', `adjust_price` int(11) NOT NULL COMMENT '订单调价,单位:分', `pay_price` int(11) NOT NULL COMMENT '应付金额(总),单位:分', `pay_order_id` bigint(20) DEFAULT NULL COMMENT '支付订单编号', `pay_status` tinyint(1) NOT NULL COMMENT '是否已支付 (true-已支付, false-未支付)', `pay_time` datetime DEFAULT NULL COMMENT '付款时间', `pay_channel_code` varchar(64) DEFAULT NULL COMMENT '支付渠道', `delivery_type` tinyint(4) NOT NULL COMMENT '配送方式 (枚举 DeliveryTypeEnum)', `logistics_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '发货物流公司编号', `logistics_no` varchar(64) DEFAULT '' COMMENT '发货物流单号', `delivery_time` datetime DEFAULT NULL COMMENT '发货时间', `receive_time` datetime DEFAULT NULL COMMENT '收货时间', `receiver_name` varchar(64) NOT NULL COMMENT '收件人名称', `receiver_mobile` varchar(20) NOT NULL COMMENT '收件人手机', `receiver_area_id` int(11) NOT NULL COMMENT '收件人地区编号', `receiver_detail_address` varchar(512) NOT NULL COMMENT '收件人详细地址', `pick_up_store_id` bigint(20) DEFAULT NULL COMMENT '自提门店编号', `pick_up_verify_code` varchar(64) DEFAULT NULL COMMENT '自提核销码', `refund_status` tinyint(4) NOT NULL COMMENT '退款状态 (枚举 TradeOrderRefundStatusEnum)', `refund_price` int(11) NOT NULL COMMENT '退款金额,单位:分', `after_sale_id` bigint(20) DEFAULT NULL COMMENT '售后单编号', `after_sale_status` tinyint(4) NOT NULL COMMENT '售后状态 (枚举 TradeOrderItemAfterSaleStatusEnum)', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_num` (`order_num`), KEY `idx_user_id` (`user_id`), KEY `idx_status` (`order_status`), KEY `idx_pay_status` (`pay_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单表'; -- 交易订单项表 (trade_order_item) CREATE TABLE `tz_trade_order_item` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `user_id` bigint(20) NOT NULL COMMENT '用户编号', `order_id` bigint(20) NOT NULL COMMENT '订单编号', `cart_id` bigint(20) DEFAULT NULL COMMENT '购物车项编号', `prod_id` bigint(20) NOT NULL COMMENT '商品 SPU 编号', `prod_name` varchar(256) NOT NULL COMMENT '商品 SPU 名称', `sku_id` bigint(20) NOT NULL COMMENT '商品 SKU 编号', `properties` json DEFAULT NULL COMMENT '属性数组', `pic_url` varchar(512) NOT NULL COMMENT '商品图片', `count` int(11) NOT NULL COMMENT '购买数量', `price` int(11) NOT NULL COMMENT '商品原价(单),单位:分', `discount_price` int(11) NOT NULL COMMENT '优惠金额(总),单位:分', `delivery_price` int(11) NOT NULL COMMENT '运费金额(总),单位:分', `adjust_price` int(11) NOT NULL COMMENT '订单调价(总),单位:分', `pay_price` int(11) NOT NULL COMMENT '应付金额(总),单位:分', `serve_ext_info` json DEFAULT NULL COMMENT '扩展服务信息,存储额外的服务相关数据', `price_ext_info` json DEFAULT NULL COMMENT '附加费信息', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_sku_id` (`sku_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单项表'; -- 订单日志表 (trade_order_log) CREATE TABLE `tz_trade_order_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `user_id` bigint(20) NOT NULL COMMENT '用户编号', `user_type` tinyint(4) NOT NULL COMMENT '用户类型 (枚举 UserTypeEnum)', `order_id` bigint(20) NOT NULL COMMENT '订单号', `before_status` int(11) DEFAULT NULL COMMENT '操作前状态', `after_status` int(11) DEFAULT NULL COMMENT '操作后状态', `operate_type` tinyint(4) NOT NULL COMMENT '操作类型 (枚举 TradeOrderOperateTypeEnum)', `content` varchar(1024) NOT NULL COMMENT '订单日志信息', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单日志表'; -- 售后订单表 (tz_trade_after_sale) CREATE TABLE `tz_trade_after_sale` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '售后编号,主键自增', `no` varchar(64) NOT NULL COMMENT '售后单号', `status` tinyint(4) NOT NULL COMMENT '退款状态 (枚举 AfterSaleStatusEnum)', `way` tinyint(4) NOT NULL COMMENT '售后方式 (枚举 AfterSaleWayEnum)', `type` tinyint(4) NOT NULL COMMENT '售后类型 (枚举 AfterSaleTypeEnum)', `user_id` bigint(20) NOT NULL COMMENT '用户编号', `apply_reason` varchar(256) NOT NULL COMMENT '申请原因', `apply_description` varchar(512) DEFAULT NULL COMMENT '补充描述', `apply_pic_urls` json DEFAULT NULL COMMENT '补充凭证图片', `order_id` bigint(20) NOT NULL COMMENT '交易订单编号', `order_no` varchar(64) NOT NULL COMMENT '订单流水号', `order_item_id` bigint(20) NOT NULL COMMENT '交易订单项编号', `prod_id` bigint(20) NOT NULL COMMENT '商品 SPU 编号', `prod_name` varchar(256) NOT NULL COMMENT '商品 SPU 名称', `sku_id` bigint(20) NOT NULL COMMENT '商品 SKU 编号', `properties` json DEFAULT NULL COMMENT '属性数组', `pic_url` varchar(512) DEFAULT NULL COMMENT '商品图片', `count` int(11) NOT NULL COMMENT '退货商品数量', `audit_time` datetime DEFAULT NULL COMMENT '审批时间', `audit_user_id` bigint(20) DEFAULT NULL COMMENT '审批人', `audit_reason` varchar(512) DEFAULT NULL COMMENT '审批备注', `refund_price` int(11) NOT NULL COMMENT '退款金额,单位:分', `pay_refund_id` bigint(20) DEFAULT NULL COMMENT '支付退款编号', `refund_time` datetime DEFAULT NULL COMMENT '退款时间', `logistics_id` bigint(20) DEFAULT NULL COMMENT '退货物流公司编号', `logistics_no` varchar(64) DEFAULT NULL COMMENT '退货物流单号', `delivery_time` datetime DEFAULT NULL COMMENT '退货时间', `receive_time` datetime DEFAULT NULL COMMENT '收货时间', `receive_reason` varchar(512) DEFAULT NULL COMMENT '收货备注', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_no` (`no`), KEY `idx_user_id` (`user_id`), KEY `idx_order_id` (`order_id`), KEY `idx_order_item_id` (`order_item_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='售后订单表'; -- 交易售后日志表 (tz_trade_after_sale_log) CREATE TABLE `tz_trade_after_sale_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `user_id` bigint(20) NOT NULL COMMENT '用户编号', `user_type` tinyint(4) NOT NULL COMMENT '用户类型 (枚举 UserTypeEnum)', `after_sale_id` bigint(20) NOT NULL COMMENT '售后编号', `before_status` tinyint(4) DEFAULT NULL COMMENT '操作前状态', `after_status` tinyint(4) DEFAULT NULL COMMENT '操作后状态', `operate_type` tinyint(4) NOT NULL COMMENT '操作类型 (枚举 AfterSaleOperateTypeEnum)', `content` varchar(512) NOT NULL COMMENT '操作明细', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_after_sale_id` (`after_sale_id`), KEY `idx_user_id` (`user_id`), KEY `idx_operate_type` (`operate_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易售后日志表'; -- 快递公司表 (trade_delivery_express) CREATE TABLE `tz_trade_delivery_express` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增', `code` varchar(64) NOT NULL COMMENT '快递公司 code', `name` varchar(128) NOT NULL COMMENT '快递公司名称', `logo` varchar(512) DEFAULT NULL COMMENT '快递公司 logo', `sort` int(11) DEFAULT NULL COMMENT '排序', `status` tinyint(4) NOT NULL COMMENT '状态 (枚举 CommonStatusEnum)', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递公司表'; -- 快递运费模板表 (trade_delivery_express_template) CREATE TABLE `tz_trade_delivery_express_template` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增', `name` varchar(128) NOT NULL COMMENT '模板名称', `charge_mode` tinyint(4) NOT NULL COMMENT '配送计费方式 (枚举 DeliveryExpressChargeModeEnum)', `sort` int(11) DEFAULT NULL COMMENT '排序', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递运费模板表'; -- 快递运费模板计费配置表 (trade_delivery_express_template_charge) CREATE TABLE `tz_trade_delivery_express_template_charge` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增', `template_id` bigint(20) NOT NULL COMMENT '配送模板编号', `area_ids` varchar(512) NOT NULL COMMENT '配送区域编号列表', `charge_mode` tinyint(4) NOT NULL COMMENT '配送计费方式', `start_count` double NOT NULL COMMENT '首件数量(件数,重量,或体积)', `start_price` int(11) NOT NULL COMMENT '起步价,单位:分', `extra_count` double NOT NULL COMMENT '续件数量(件, 重量,或体积)', `extra_price` int(11) NOT NULL COMMENT '额外价,单位:分', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_template_id` (`template_id`), CONSTRAINT `fk_express_template_charge_template_id` FOREIGN KEY (`template_id`) REFERENCES `tz_trade_delivery_express_template` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递运费模板计费配置表'; -- 快递运费模板包邮配置表 (trade_delivery_express_template_free) CREATE TABLE `tz_trade_delivery_express_template_free` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `template_id` bigint(20) NOT NULL COMMENT '配送模板编号', `area_ids` varchar(512) NOT NULL COMMENT '配送区域编号列表', `free_price` int(11) DEFAULT NULL COMMENT '包邮金额,单位:分', `free_count` int(11) DEFAULT NULL COMMENT '包邮件数', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_template_id` (`template_id`), CONSTRAINT `fk_express_template_free_template_id` FOREIGN KEY (`template_id`) REFERENCES `tz_trade_delivery_express_template` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='快递运费模板包邮配置表'; -- 自提门店表 (trade_delivery_pick_up_store) CREATE TABLE `tz_trade_delivery_pick_up_store` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `name` varchar(128) NOT NULL COMMENT '门店名称', `introduction` varchar(512) DEFAULT NULL COMMENT '门店简介', `phone` varchar(20) NOT NULL COMMENT '门店手机', `area_id` int(11) NOT NULL COMMENT '区域编号', `detail_address` varchar(512) NOT NULL COMMENT '门店详细地址', `logo` varchar(512) DEFAULT NULL COMMENT '门店 logo', `opening_time` time NOT NULL COMMENT '营业开始时间', `closing_time` time NOT NULL COMMENT '营业结束时间', `latitude` double DEFAULT NULL COMMENT '纬度', `longitude` double DEFAULT NULL COMMENT '经度', `verify_user_ids` varchar(512) DEFAULT NULL COMMENT '核销员工用户编号数组', `status` tinyint(4) NOT NULL COMMENT '门店状态 (枚举 CommonStatusEnum)', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_area_id` (`area_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自提门店表';