# 本sql文件无法直接执行，文件内容较多，建议在IntelliJ IDEA开发工具打开，右键选择 Folding-->Collapse All 方便查看并且复制

# 更换采购订单语言表，订单项语言表主键
# 为方便查看，这里只采用mall4cloud_order_0库作为演示，实际需要更改mall4cloud_order_0-7的8个库的分库分表!!!!!
USE mall4cloud_order_0;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;
    SET i = 0;
    WHILE i<64 DO
        SET @delete_purchase_order_lang_lang_table = CONCAT(
                'delete from purchase_order_lang_', i, ' WHERE lang = 2'
            );
        PREPARE delete_purchase_order_lang_lang_table FROM @delete_purchase_order_lang_lang_table;
        EXECUTE delete_purchase_order_lang_lang_table;

        SET @delete_purchase_order_item_lang_lang_table = CONCAT(
                        'delete from purchase_order_item_lang_', i, ' WHERE lang = 2'
                    );
        PREPARE delete_purchase_order_item_lang_lang_table FROM @delete_purchase_order_item_lang_lang_table;
        EXECUTE delete_purchase_order_item_lang_lang_table;

        SET @change_purchase_item_key = CONCAT(
                'ALTER TABLE purchase_order_item_lang_', i,'  DROP PRIMARY KEY, ADD PRIMARY KEY (`purchase_item_id`)'
            );
        PREPARE change_purchase_item_key FROM @change_purchase_item_key;
        EXECUTE change_purchase_item_key;

        SET @change_purchase_order_key = CONCAT(
                'ALTER TABLE purchase_order_lang_', i,'  DROP PRIMARY KEY, ADD PRIMARY KEY (`purchase_order_id`)'
            );
        PREPARE change_purchase_order_key FROM @change_purchase_order_key;
        EXECUTE change_purchase_order_key;

        SET i = i+1;
    END WHILE;
END//
CALL createTable()//
DELIMITER ;

# 修改分库分表为单库50表

# 整体流程：将原本分库分表改为单库50表，需要将原数据都统计到总表中，再建新分表，再通过sql分配到各个分表中，最后删除总表数据
# 按顺序执行！，执行时只按分块执行，例如第一步执行 1.在总表新建表，就只执行到 DROP TABLE IF EXISTS `purchase_order_lang`;，也即 2.统计表数据到总表，清除分库 之前，
# 确保执行成功后再执行下一步2，以此类推下述每一步
# ============================== 1.在总表新建表 ==============================
# 这里的表结构最好将自己数据库中的0库0表中的数据结构复制过来，这里使用安装doc文档中的字段创建表结构
# 如果修改过表结构或者sql执行时字段出现位置不一致，会产生不可预计的sql相关bug，所以建议用自己的表结构
# 特别注意order_invoice和order_refund这两个表结构
USE mall4cloud_order;
DROP TABLE IF EXISTS `allot_order`;
CREATE TABLE `allot_order` (
  `allot_order_id` bigint NOT NULL COMMENT '调拨订单id',
  `out_warehouse_id` bigint DEFAULT NULL COMMENT '调出点仓库id',
  `out_stock_point_type` int DEFAULT NULL COMMENT '调出点库存点类型(1:仓库, 2:门店)',
  `in_warehouse_id` bigint DEFAULT NULL COMMENT '调入点仓库id',
  `in_stock_point_type` int DEFAULT NULL COMMENT '调入点库存点类型(1:仓库, 2:门店)',
  `dvy_company_id` bigint DEFAULT NULL COMMENT '物流公司id',
  `dvy_type` int DEFAULT NULL COMMENT '物流方式(1:快递, 2:无需快递)',
  `dvy_order_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '物流单号',
  `status` int DEFAULT NULL COMMENT '状态(0:作废, 1:待入库, 2:部分入库, 3:已完成)',
  `total_allot_count` int DEFAULT NULL COMMENT '总调拨数量',
  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
  `sys_type` int DEFAULT NULL COMMENT '系统类型',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`allot_order_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

DROP TABLE IF EXISTS `allot_order_item`;
CREATE TABLE `allot_order_item` (
  `allot_order_item_id` bigint NOT NULL COMMENT '调拨订单商品id',
  `allot_order_id` bigint DEFAULT NULL COMMENT '调拨订单id',
  `spu_id` bigint DEFAULT NULL COMMENT '商品spuId',
  `sku_id` bigint DEFAULT NULL COMMENT '商品skuId',
  `allot_count` int DEFAULT NULL COMMENT '调拨数量',
  `allot_in_count` int DEFAULT NULL COMMENT '调拨入库数量',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`allot_order_item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

DROP TABLE IF EXISTS `delivery_order`;
CREATE TABLE `delivery_order` (
  `delivery_order_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '订单物流包裹id',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `order_id` bigint NOT NULL COMMENT '订单号',
  `user_id` bigint NOT NULL COMMENT '用户id',
  `delivery_company_id` bigint DEFAULT NULL COMMENT '快递公司id',
  `delivery_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '快递单号',
  `consignee_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人姓名',
  `consignee_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人电话（顺丰快递需要）',
  `status` tinyint DEFAULT NULL COMMENT '物流状态 1正常 -1删除',
  `all_count` int DEFAULT NULL COMMENT '包裹商品总数',
  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
  `delivery_type` int DEFAULT NULL COMMENT '发货方式(1.快递 3.无需物流)',
  PRIMARY KEY (`delivery_order_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_delivery_company_id` (`delivery_company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单快递信息';

DROP TABLE IF EXISTS `delivery_order_item`;
CREATE TABLE `delivery_order_item` (
  `delivery_order_item_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delivery_order_id` bigint DEFAULT NULL COMMENT '订单物流包裹id',
  `img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品图片',
  `spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
  `count` int DEFAULT '0' COMMENT '商品数量',
  `supplier_img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '供应商商品图片',
  `supplier_spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '供应商商品名称',
  PRIMARY KEY (`delivery_order_item_id`),
  KEY `idx_order_delivery_id` (`delivery_order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='物流订单项信息';

DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
  `order_id` bigint unsigned NOT NULL COMMENT '订单ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `order_addr_id` bigint DEFAULT NULL COMMENT '用户订单地址Id',
  `delivery_type` tinyint DEFAULT NULL COMMENT '配送类型 1:快递 2:自提 3：无需快递 4同城配送',
  `pay_sys_type` tinyint NOT NULL DEFAULT '0' COMMENT '支付系统类型 0默认1通联支付',
  `shop_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '店铺名称',
  `total` bigint NOT NULL COMMENT '总值',
  `actual_total` bigint DEFAULT NULL COMMENT '实际总值',
  `freight_amount` bigint DEFAULT NULL COMMENT '订单运费',
  `order_score` bigint DEFAULT NULL COMMENT '订单使用积分',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态 1:待付款 2:待发货(待自提) 3:待收货(已发货) 5:成功 6:失败 7:待成团 9.待付尾款',
  `pay_type` tinyint unsigned DEFAULT NULL COMMENT '支付方式 请参考枚举PayType',
  `order_type` tinyint DEFAULT NULL COMMENT '订单类型 1团购订单 2秒杀订单 3积分订单',
  `all_count` int DEFAULT NULL COMMENT '订单商品总数',
  `reduce_amount` bigint NOT NULL DEFAULT '0' COMMENT '优惠总额',
  `score_amount` bigint NOT NULL DEFAULT '0' COMMENT '积分抵扣金额',
  `member_amount` bigint NOT NULL DEFAULT '0' COMMENT '会员折扣金额',
  `platform_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠券优惠金额',
  `shop_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家优惠券优惠金额',
  `discount_amount` bigint NOT NULL DEFAULT '0' COMMENT '满减优惠金额',
  `shop_combo_amount` bigint NOT NULL DEFAULT '0' COMMENT '套餐优惠金额',
  `platform_free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台运费减免金额',
  `free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家运费减免金额',
  `shop_change_free_amount` bigint NOT NULL DEFAULT '0' COMMENT '店铺改价优惠金额',
  `distribution_amount` bigint NOT NULL DEFAULT '0' COMMENT '分销佣金',
  `platform_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠金额',
  `platform_commission` bigint NOT NULL DEFAULT '0' COMMENT '平台佣金',
  `pay_time` datetime DEFAULT NULL COMMENT '付款时间',
  `delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
  `finally_time` datetime DEFAULT NULL COMMENT '完成时间',
  `settled_time` datetime DEFAULT NULL COMMENT '结算时间',
  `cancel_time` datetime DEFAULT NULL COMMENT '取消时间',
  `book_time` datetime DEFAULT NULL COMMENT '预售发货时间',
  `is_payed` tinyint(1) DEFAULT NULL COMMENT '是否已支付，1.已支付0.未支付',
  `close_type` tinyint DEFAULT NULL COMMENT '订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易',
  `refund_status` tinyint DEFAULT NULL COMMENT '订单退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）',
  `shop_remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '卖家备注',
  `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家备注',
  `delete_status` tinyint DEFAULT '0' COMMENT '用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除',
  `version` int DEFAULT NULL COMMENT '订单版本号，每处理一次订单，版本号+1',
  `is_settled` tinyint DEFAULT NULL COMMENT '是否已经进行结算',
  `supplier_id` bigint NOT NULL DEFAULT '0' COMMENT '供应商id',
  `wait_purchase` tinyint NOT NULL DEFAULT '0' COMMENT '是否待采购 1.是 0.否 2.已处理',
  `supplier_delivery_type` tinyint NOT NULL DEFAULT '0' COMMENT '供应商商品发货方式 1.供应商发货 2.仓库发货',
  `purchase_spread_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家采购价差（需要商家从结算金额补上采购价的金额）',
  `pre_sale_type` tinyint DEFAULT '-1' COMMENT '预售类型 0.全款预售类型 1.定金预售',
  `order_mold` tinyint DEFAULT '0' COMMENT '是否为虚拟商品订单 1.是 0.否',
  `write_off_status` tinyint(1) DEFAULT NULL COMMENT '订单核销状态 0.待核销 1.核销完成',
  `write_off_num` int DEFAULT NULL COMMENT '核销次数 -1.多次核销 0.无需核销 1.单次核销',
  `write_off_multiple_count` int DEFAULT NULL COMMENT '核销次数 -1.无限次',
  `write_off_start` datetime DEFAULT NULL COMMENT '核销开始时间',
  `write_off_end` datetime DEFAULT NULL COMMENT '核销结束时间',
  `write_off_count` int(0) NULL DEFAULT NULL COMMENT '订单被核销次数',
  `main_order_id` bigint NOT NULL DEFAULT '0' COMMENT '主单号,在组合/套餐商品拆单时会存在',
  PRIMARY KEY (`order_id`),
  KEY `idx_shop_id` (`shop_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_addr_order_id` (`order_addr_id`),
  KEY `idx_finally_time` (`finally_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单信息';

DROP TABLE IF EXISTS `order_addr`;
CREATE TABLE `order_addr` (
  `order_addr_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `user_id` bigint DEFAULT NULL COMMENT '用户ID',
  `consignee` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货人',
  `province_id` bigint DEFAULT NULL COMMENT '省ID',
  `province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '省',
  `city_id` bigint DEFAULT NULL COMMENT '城市ID',
  `city` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '城市',
  `area_id` bigint DEFAULT NULL COMMENT '区域ID',
  `area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '区',
  `addr` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',
  `post_code` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '邮编',
  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机',
  `lng` decimal(12,6) DEFAULT NULL COMMENT '经度',
  `lat` decimal(12,6) DEFAULT NULL COMMENT '纬度',
  PRIMARY KEY (`order_addr_id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户订单配送地址';

DROP TABLE IF EXISTS `order_invoice`;
CREATE TABLE `order_invoice` (
  `order_invoice_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '订单发票ID',
  `order_id` bigint NOT NULL COMMENT '订单id',
  `shop_id` bigint NOT NULL COMMENT '店铺id',
  `supplier_id` bigint DEFAULT NULL COMMENT '供应商id',
  `invoice_type` tinyint NOT NULL DEFAULT '1' COMMENT '发票类型 1.电子普通发票',
  `header_type` tinyint NOT NULL COMMENT '抬头类型 1.单位 2.个人',
  `header_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '抬头名称',
  `invoice_tax_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发票税号',
  `invoice_context` tinyint NOT NULL DEFAULT '1' COMMENT '发票内容 1.商品明细',
  `invoice_state` tinyint NOT NULL COMMENT '发票状态 1.申请中 2.已开票',
  `file_id` bigint DEFAULT NULL COMMENT '文件id',
  `application_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
  `upload_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
  PRIMARY KEY (`order_invoice_id`),
  KEY `shop_idx` (`shop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

DROP TABLE IF EXISTS `order_item`;
CREATE TABLE `order_item` (
  `order_item_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '订单项ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `shop_id` bigint NOT NULL COMMENT '店铺id',
  `order_id` bigint NOT NULL COMMENT '订单id',
  `category_id` bigint DEFAULT NULL COMMENT '分类id',
  `spu_id` bigint unsigned NOT NULL COMMENT '产品ID',
  `sku_id` bigint unsigned NOT NULL COMMENT '产品SkuID',
  `user_id` bigint NOT NULL COMMENT '用户Id',
  `final_refund_id` bigint DEFAULT NULL COMMENT '最终的退款id',
  `distribution_user_id` bigint DEFAULT NULL COMMENT '推广员id',
  `count` int DEFAULT '0' COMMENT '购物车产品个数',
  `spu_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '产品名称',
  `sku_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku名称',
  `spu_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品编码',
  `party_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku编码',
  `pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '产品主图片路径',
  `is_comm` tinyint NOT NULL DEFAULT '0' COMMENT '是否以评价(0.未评价1.已评价)',
  `comm_time` datetime DEFAULT NULL COMMENT '评论时间',
  `refund_status` tinyint DEFAULT NULL COMMENT '订单项退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）',
  `be_delivered_num` int DEFAULT NULL COMMENT '0全部发货 其他数量为剩余待发货数量',
  `delivery_type` tinyint DEFAULT NULL COMMENT '单个orderItem的配送类型 1:快递 2:自提 3：无需快递 4:同城配送',
  `shop_cart_time` datetime DEFAULT NULL COMMENT '加入购物车时间',
  `price` bigint NOT NULL COMMENT '产品价格',
  `spu_total_amount` bigint NOT NULL COMMENT '商品总金额',
  `actual_total` bigint NOT NULL DEFAULT '0' COMMENT '商品实际金额 = 商品总金额 - 分摊的优惠金额',
  `share_reduce` bigint NOT NULL DEFAULT '0' COMMENT '分摊的优惠金额(商家分摊 + 平台补贴)',
  `platform_share_reduce` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠金额',
  `distribution_amount` bigint NOT NULL DEFAULT '0' COMMENT '推广员佣金',
  `distribution_parent_amount` bigint NOT NULL DEFAULT '0' COMMENT '上级推广员佣金',
  `use_score` bigint NOT NULL DEFAULT '0' COMMENT '使用积分',
  `gain_score` bigint NOT NULL DEFAULT '0' COMMENT '获得积分',
  `rate` decimal(15,6) NOT NULL DEFAULT '0.000000' COMMENT '分账比例',
  `platform_commission` bigint NOT NULL DEFAULT '0' COMMENT '平台佣金(商品实际金额 * 分账比例)',
  `score_amount` bigint NOT NULL DEFAULT '0' COMMENT '积分抵扣金额',
  `member_amount` bigint NOT NULL DEFAULT '0' COMMENT '会员折扣金额',
  `platform_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠券优惠金额',
  `shop_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家优惠券优惠金额',
  `discount_amount` bigint NOT NULL DEFAULT '0' COMMENT '满减优惠金额',
  `platform_free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台运费减免金额',
  `free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家运费减免金额',
  `shop_change_free_amount` bigint NOT NULL DEFAULT '0' COMMENT '店铺改价优惠金额',
  `score_fee` bigint DEFAULT NULL COMMENT '积分价格（单价）',
  `item_purchase_amount` bigint NOT NULL DEFAULT '0' COMMENT '采购价',
  `purchase_platform_commission` bigint NOT NULL DEFAULT '0' COMMENT '供应商佣金',
  `supplier_rate` decimal(15,6) NOT NULL DEFAULT '0.000000' COMMENT '供应商佣金比例',
  `supplier_spu_id` bigint DEFAULT NULL COMMENT '供应商商品id',
  `supplier_sku_id` bigint DEFAULT NULL COMMENT '供应商规格id',
  `giveaway_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '赠品金额',
  `main_giveaway` tinyint DEFAULT NULL COMMENT '主赠品',
  `spu_mold` tinyint DEFAULT '0' COMMENT '商品类别 0.实物商品 1. 虚拟商品',
  `is_refund` tinyint DEFAULT NULL COMMENT '是否可以退款 1.可以 0不可以',
  `virtual_remark` json DEFAULT NULL COMMENT '虚拟商品的留言备注',
  `combo_amount` bigint DEFAULT '0' COMMENT '套餐优惠金额',
  `activity_id` bigint DEFAULT NULL COMMENT '活动id',
  `activity_type` tinyint DEFAULT '0' COMMENT '活动类型 具体类型参考枚举类:OrderActivityType',
  `supplier_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '产品供应商主图片路径',
  `write_off_num` int DEFAULT NULL COMMENT '核销次数 -1.多次核销 0.无需核销 1.单次核销',
  `write_off_multiple_count` int DEFAULT NULL COMMENT '核销次数 -1.无限次',
  `write_off_start` datetime DEFAULT NULL COMMENT '核销开始时间',
  `write_off_end` datetime DEFAULT NULL COMMENT '核销结束时间',
  `stock_point_id` bigint DEFAULT NULL COMMENT '库存点id',
  PRIMARY KEY (`order_item_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_shop_id` (`shop_id`),
  KEY `idx_spu_id` (`spu_id`),
  KEY `idx_sku_id` (`sku_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_final_refund_id` (`final_refund_id`),
  KEY `idx_distribution_user_id` (`distribution_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单项';

DROP TABLE IF EXISTS `order_item_lang`;
CREATE TABLE `order_item_lang` (
  `order_item_id` bigint NOT NULL COMMENT '订单项ID',
  `lang` tinyint NOT NULL COMMENT '语言 1.中文 2.英文',
  `spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
  `sku_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku名称',
  `supplier_spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '供应商商品名称',
  `supplier_sku_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '供应商sku名称',
  PRIMARY KEY (`order_item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单项-国际化';

DROP TABLE IF EXISTS `order_pre_sale_info`;
CREATE TABLE `order_pre_sale_info` (
  `order_pre_sale_info_id` bigint NOT NULL AUTO_INCREMENT,
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `order_id` bigint DEFAULT NULL COMMENT '订单编号',
  `deposit_amount` bigint DEFAULT '0' COMMENT '定金金额',
  `deposit_reduce_amount` bigint DEFAULT '0' COMMENT '定金优惠金额',
  `deposit_expansion_amount` bigint DEFAULT '0' COMMENT '定金膨胀金额',
  `balance_amount` bigint DEFAULT '0' COMMENT '尾款金额',
  `pre_sale_type` tinyint DEFAULT '0' COMMENT '预售类型 0.全款预售类型 1.定金预售',
  `pay_status` tinyint DEFAULT '0' COMMENT '定金预售支付状态 1.已支付定金 2.已支付尾款',
  `balance_start_time` datetime DEFAULT NULL COMMENT '尾款支付开始时间',
  `balance_end_time` datetime DEFAULT NULL COMMENT '尾款支付结束时间',
  `balance_pay_time` datetime DEFAULT NULL COMMENT '尾款支付时间',
  `pre_sale_delivery_type` tinyint DEFAULT NULL COMMENT '预售发货类型 -1.固定时间 x.（尾款）支付后x天发货',
  `pre_sale_delivery_time` datetime DEFAULT NULL COMMENT '预售发货时间',
  PRIMARY KEY (`order_pre_sale_info_id`),
  KEY `idx_order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单预售信息';

DROP TABLE IF EXISTS `order_refund`;
CREATE TABLE `order_refund` (
  `refund_id` bigint NOT NULL COMMENT '记录ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `shop_id` bigint NOT NULL COMMENT '店铺ID',
  `user_id` bigint NOT NULL COMMENT '买家ID',
  `order_id` bigint NOT NULL COMMENT '订单号',
  `order_item_id` bigint NOT NULL DEFAULT '0' COMMENT '订单项ID(0:为全部订单项)',
  `refund_count` int DEFAULT '0' COMMENT '退货数量(0:为全部订单项)',
  `refund_score` bigint DEFAULT NULL COMMENT '退还积分',
  `refund_amount` bigint DEFAULT NULL COMMENT '退款金额',
  `platform_refund_commission` bigint DEFAULT NULL COMMENT '平台佣金退款金额',
  `platform_refund_amount` bigint DEFAULT NULL COMMENT '平台退款金额（退款时将这部分钱退回给平台，所以商家要扣除从平台这里获取的金额）',
  `distribution_total_amount` bigint DEFAULT NULL COMMENT '退款单总分销金额',
  `refund_type` tinyint NOT NULL DEFAULT '0' COMMENT '退款单类型（1:整单退款,2:单个物品退款）',
  `apply_type` tinyint NOT NULL COMMENT '申请类型:1,仅退款,2退款退货',
  `pay_sys_type` tinyint NOT NULL DEFAULT '0' COMMENT '支付系统类型 0默认1通联支付',
  `is_received` tinyint DEFAULT NULL COMMENT '是否接收到商品(1:已收到,0:未收到)',
  `close_type` tinyint DEFAULT NULL COMMENT '退款关闭原因(1.买家撤销退款 2.卖家拒绝退款 3.退款申请超时被系统关闭)',
  `return_money_sts` tinyint NOT NULL DEFAULT '0' COMMENT '处理退款状态:(1.买家申请 2.卖家接受 3.买家发货 4.卖家收货 5.退款成功  -1.退款关闭)详情见ReturnMoneyStsType',
  `buyer_reason` tinyint DEFAULT NULL COMMENT '申请原因(具体见BuyerReasonType)',
  `buyer_desc` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '申请说明',
  `buyer_mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系方式（退款时留下的手机号码）',
  `img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件凭证(逗号隔开)',
  `over_time` datetime DEFAULT NULL COMMENT '超时时间（超过该时间不处理，系统将自动处理）（保留字段）',
  `reject_message` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拒绝原因',
  `seller_msg` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '卖家备注',
  `shop_seller_msg` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商家备注(移交供应商处理时保存)',
  `handel_time` datetime DEFAULT NULL COMMENT '受理时间',
  `supplier_time` datetime DEFAULT NULL COMMENT '移交供应商时间',
  `delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
  `receive_time` datetime DEFAULT NULL COMMENT '收货时间',
  `close_time` datetime DEFAULT NULL COMMENT '关闭时间',
  `decision_time` datetime DEFAULT NULL COMMENT '确定时间(确定退款时间)',
  `refund_time` datetime DEFAULT NULL COMMENT '退款时间',
  `supplier_id` bigint NOT NULL DEFAULT '0' COMMENT '供应商id',
  `supplier_handle_status` tinyint DEFAULT '-1' COMMENT '供应商处理状态， -1.商家自行处理 0.待供应商处理 1.供应商已同意 2.供应商已拒绝',
  `purchase_refund_amount` bigint DEFAULT '0' COMMENT '采购退款金额',
  `pur_platform_refund_commission` bigint DEFAULT '0' COMMENT '采购的平台佣金退款金额',
  `return_giveaway_ids` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款退回的赠品订单项ids',
  `refund_actual_total` decimal(15,2) DEFAULT NULL COMMENT '当前退款的实付金额（实付金额减去不退回赠品的金额）',
  `shop_img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商家/供应商文件凭证(逗号隔开)',
  `platform_intervention_status` tinyint NOT NULL DEFAULT '-1' COMMENT '平台介入状态 -1.没有介入 1.用户申请介入 2.平台同意介入 3.平台拒绝介入 5.平台同意退款成功',
  `apply_intervention_reason` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户申请介入理由',
  `apply_intervention_img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '申请介入的文件凭证(逗号隔开)',
  `intervention_refund_type` tinyint DEFAULT NULL COMMENT '平台介入退款方式 1.商家承担 2.商家供应商承担（供应商发货订单） 3.不同意退款',
  `after_intervention_refund_amount` bigint DEFAULT NULL COMMENT '平台介入前的退款金额',
  `platform_message` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台留言',
  `apply_intervention_time` datetime DEFAULT NULL COMMENT '申请介入时间',
  `intervention_finish_time` datetime DEFAULT NULL COMMENT '介入完成时间',
  PRIMARY KEY (`refund_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_order_item_id` (`order_item_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_shop_id` (`shop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单退款记录信息';

DROP TABLE IF EXISTS `order_refund_addr`;
CREATE TABLE `order_refund_addr` (
  `refund_addr_id` bigint NOT NULL AUTO_INCREMENT COMMENT '物流ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `shop_id` bigint DEFAULT NULL COMMENT '店铺ID',
  `refund_id` bigint NOT NULL COMMENT '退款号',
  `user_id` bigint NOT NULL COMMENT '买家ID',
  `delivery_company_id` bigint DEFAULT NULL COMMENT '物流公司ID',
  `delivery_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '物流公司名称',
  `delivery_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '物流单号',
  `consignee_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人姓名',
  `consignee_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人电话（顺丰快递需要）',
  `consignee_telephone` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人座机',
  `consignee_post_code` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人邮政编码',
  `consignee_addr` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人地址',
  `sender_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发送人手机号码',
  `sender_remarks` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家备注',
  `imgs` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片凭证',
  PRIMARY KEY (`refund_addr_id`),
  KEY `idx_shop_id` (`shop_id`),
  KEY `idx_refund_id` (`refund_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_delivery_company_id` (`delivery_company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户退货物流地址';

DROP TABLE IF EXISTS `order_refund_intervention`;
CREATE TABLE `order_refund_intervention` (
  `refund_intervertion_id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  `refund_id` bigint NOT NULL COMMENT '退款id',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `biz_id` bigint DEFAULT '0' COMMENT '商家/供应商/用户id',
  `sys_type` tinyint DEFAULT NULL COMMENT '系统类型，0.普通用户 1.商家端 2.平台端 3.供应商端',
  `voucher_desc` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '凭证说明',
  `img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件凭证(逗号隔开)',
  PRIMARY KEY (`refund_intervertion_id`),
  KEY `idx_refund_id` (`refund_id`),
  KEY `idx_biz_id` (`biz_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单退款介入记录';

DROP TABLE IF EXISTS `order_refund_settlement`;
CREATE TABLE `order_refund_settlement` (
  `settlement_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '退款结算单据id',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `pay_id` bigint DEFAULT NULL COMMENT '订单支付单号',
  `order_id` bigint DEFAULT NULL COMMENT '订单编号',
  `refund_id` bigint DEFAULT NULL COMMENT '退款单编号（本系统退款单号）',
  `user_id` bigint DEFAULT NULL COMMENT '用户ID',
  `biz_refund_no` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信/支付宝退款单号（支付平台退款单号）',
  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式(1:微信支付 2支付宝支付)',
  `refund_status` tinyint DEFAULT NULL COMMENT '退款状态(1:申请中 2：已完成 -1失败)',
  `refund_amount` bigint DEFAULT NULL COMMENT '退款金额',
  `order_total_amount` bigint DEFAULT NULL COMMENT '订单总额',
  `version` int DEFAULT '0' COMMENT '版本号',
  PRIMARY KEY (`settlement_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_pay_id` (`pay_id`),
  KEY `idx_biz_refund_no` (`biz_refund_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='退款支付结算单据';

DROP TABLE IF EXISTS `order_self_station`;
CREATE TABLE `order_self_station` (
  `order_self_station_id` bigint NOT NULL,
  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
  `user_id` bigint NOT NULL COMMENT '用户id',
  `order_id` bigint DEFAULT NULL COMMENT '订单编号',
  `station_id` bigint DEFAULT NULL COMMENT '自提点id',
  `station_user_mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提人的手机',
  `station_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提人的名字',
  `station_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提时间(用户下单时选择)',
  `station_code` varchar(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提提货码',
  `station_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上门自提点的地址',
  `station_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上门自提点的联系电话',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`order_self_station_id`),
  KEY `STATION` (`station_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单自提信息';

DROP TABLE IF EXISTS `order_settlement`;
CREATE TABLE `order_settlement` (
  `settlement_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '支付结算单据ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `order_id` bigint DEFAULT NULL COMMENT '订单id',
  `pay_id` bigint DEFAULT NULL COMMENT '支付单号',
  `pay_ids` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付单号集合，目前只有预售订单存在多条',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式',
  `is_clearing` tinyint DEFAULT NULL COMMENT '是否清算 0:否 1:是',
  `pay_score` bigint DEFAULT NULL COMMENT '支付积分',
  `pay_amount` bigint DEFAULT NULL COMMENT '支付金额',
  `clearing_time` datetime DEFAULT NULL COMMENT '清算时间',
  `version` int DEFAULT NULL COMMENT '版本号',
  `is_payed` tinyint DEFAULT NULL COMMENT '是否已支付，1.已支付0.未支付',
  PRIMARY KEY (`settlement_id`),
  KEY `idx_pay_id` (`pay_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单结算表';

DROP TABLE IF EXISTS `order_virtual_info`;
CREATE TABLE `order_virtual_info` (
  `order_virtual_info_id` bigint NOT NULL,
  `order_id` bigint unsigned NOT NULL COMMENT '订单ID',
  `order_item_id` bigint NOT NULL DEFAULT '0' COMMENT '订单项id',
  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
  `station_id` bigint DEFAULT NULL COMMENT '核销门店id',
  `write_off_code` varchar(13) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '核销码',
  `is_write_off` tinyint DEFAULT NULL COMMENT '是否核销 1.已核销 0.未核销',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `write_off_time` datetime DEFAULT NULL COMMENT '核销时间',
  `write_off_multiple_count` int DEFAULT NULL COMMENT '剩余核销次数 -1.无限次',
  PRIMARY KEY (`order_virtual_info_id`),
  KEY `order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单虚拟商品信息';

DROP TABLE IF EXISTS `purchase_order`;
CREATE TABLE `purchase_order` (
  `purchase_order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '采购id',
  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `deliver_time` datetime DEFAULT NULL COMMENT '送达时间',
  `delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
  `supplier_id` bigint NOT NULL COMMENT '供应商id',
  `total_amount` bigint NOT NULL COMMENT '总采购金额',
  `total_stock` int NOT NULL COMMENT '总采购库存数量',
  `actual_total_stock` int DEFAULT NULL COMMENT '实际总库存数量',
  `status` tinyint DEFAULT NULL COMMENT '状态 0:已作废 1:待入库 2:已发货 3.部分入库 5:已完成',
  `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  `employee_id` bigint DEFAULT NULL COMMENT '操作员工id',
  `delivery_type` tinyint DEFAULT NULL COMMENT '配送类型 1:快递 2:自提 3：无需快递 4同城配送',
  `purchase_order_addr_id` bigint DEFAULT NULL COMMENT '采购订单地址Id',
  `voucher_img_urls` varchar(1000) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '付款凭证图片 多个图片逗号分隔',
  `warehouse_id` bigint DEFAULT NULL COMMENT '仓库id',
  `supplier_warehouse_id` bigint DEFAULT NULL COMMENT '供应商仓库id',
  `stock_point_type` int DEFAULT NULL COMMENT '库存点类型(1:仓库, 2:门店)',
  PRIMARY KEY (`purchase_order_id`),
  KEY `idx_supplier_id` (`supplier_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单';

DROP TABLE IF EXISTS `purchase_order_addr`;
CREATE TABLE `purchase_order_addr` (
  `purchase_order_addr_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `shop_id` bigint DEFAULT NULL COMMENT '店铺ID',
  `consignee` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货人',
  `province_id` bigint DEFAULT NULL COMMENT '省ID',
  `province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '省',
  `city_id` bigint DEFAULT NULL COMMENT '城市ID',
  `city` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '城市',
  `area_id` bigint DEFAULT NULL COMMENT '区域ID',
  `area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '区',
  `addr` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',
  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机',
  PRIMARY KEY (`purchase_order_addr_id`),
  KEY `idx_shop_id` (`shop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单配送地址';

DROP TABLE IF EXISTS `purchase_order_item`;
CREATE TABLE `purchase_order_item` (
  `purchase_item_id` bigint NOT NULL COMMENT 'id',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `purchase_order_id` bigint DEFAULT NULL COMMENT '采购订单id',
  `spu_id` bigint DEFAULT NULL COMMENT '商品id',
  `sku_id` bigint DEFAULT NULL COMMENT 'sku id',
  `spu_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品编码',
  `party_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku编码',
  `pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品图片',
  `purchase_amount` bigint DEFAULT NULL COMMENT '采购金额',
  `purchase_price` bigint DEFAULT NULL COMMENT '采购价',
  `purchase_stock` int DEFAULT NULL COMMENT '采购库存数量',
  `actual_stock` int DEFAULT NULL COMMENT '实际库存数量',
  `delivery_type` tinyint DEFAULT NULL COMMENT '订单项退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）',
  `status` tinyint DEFAULT NULL COMMENT '状态 0:已作废 1:待入库 2:已发货 3.部分入库 5:已完成',
  `be_delivered_num` int DEFAULT NULL COMMENT '0全部发货 其他数量为剩余待发货数量',
  PRIMARY KEY (`purchase_item_id`),
  KEY `idx_purchase_order_id` (`purchase_order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单项';

DROP TABLE IF EXISTS `purchase_order_item_lang`;
CREATE TABLE `purchase_order_item_lang` (
  `purchase_item_id` bigint NOT NULL COMMENT '订单项ID',
  `lang` tinyint NOT NULL COMMENT '语言 1.中文 2.英文',
  `spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
  `sku_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku名称',
  PRIMARY KEY (`purchase_item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单项-国际化';

DROP TABLE IF EXISTS `purchase_order_lang`;
CREATE TABLE `purchase_order_lang` (
  `purchase_order_id` bigint NOT NULL,
  `lang` tinyint NOT NULL,
  `spu_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`purchase_order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单-国际化';

USE mall4cloud_payment;
DROP TABLE IF EXISTS `pay_info`;
CREATE TABLE `pay_info` (
  `pay_id` bigint unsigned NOT NULL COMMENT '支付单号',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `user_id` bigint DEFAULT NULL COMMENT '用户id',
  `order_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '本次支付关联的多个订单号',
  `biz_pay_no` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外部订单流水号',
  `sys_type` tinyint DEFAULT NULL COMMENT '系统类型 见SysTypeEnum',
  `pay_entry` tinyint DEFAULT NULL COMMENT '支付入口 0下单 1余额充值',
  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式 1 微信支付 2 支付宝',
  `pay_status` tinyint DEFAULT NULL COMMENT '支付状态',
  `pay_score` bigint DEFAULT NULL COMMENT '支付积分',
  `pay_amount` bigint DEFAULT NULL COMMENT '支付金额',
  `version` int DEFAULT NULL COMMENT '版本号',
  `callback_content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '回调内容',
  `callback_time` datetime DEFAULT NULL COMMENT '回调时间',
  `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
  `refund_id` bigint DEFAULT NULL COMMENT '本次支付关联的退款号',
  `pay_sys_type` int DEFAULT NULL COMMENT '系统支付类型 0.默认支付系统 1.通联支付',
  `to_user_id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付给商城的用户id，通联支付独有',
  `system_model` tinyint DEFAULT NULL COMMENT '支付的系统类型 1:pc  2:h5  3:小程序 4:安卓  5:ios',
  `biz_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '第三方系统userid',
  PRIMARY KEY (`pay_id`),
  KEY `idx_biz_pay_no` (`biz_pay_no`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_order_ids` (`order_ids`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单支付记录';

DROP TABLE IF EXISTS `refund_info`;
CREATE TABLE `refund_info` (
  `refund_id` bigint unsigned NOT NULL COMMENT '退款单号',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `order_id` bigint DEFAULT NULL COMMENT '关联的支付订单id',
  `pay_id` bigint NOT NULL DEFAULT '0' COMMENT '关联的支付单id',
  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式',
  `user_id` bigint DEFAULT NULL COMMENT '用户id',
  `refund_status` tinyint DEFAULT NULL COMMENT '退款状态',
  `refund_amount` bigint DEFAULT NULL COMMENT '退款金额',
  `callback_content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '回调内容',
  `callback_time` datetime DEFAULT NULL COMMENT '回调时间',
  PRIMARY KEY (`refund_id`,`pay_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_pay_id` (`pay_id`),
  KEY `idx_userid` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='退款信息';

# ============================== 2.统计表数据到总表==============================
# 为方便查看，2中都只采用mall4cloud_order_0库作为演示，实际需要更改mall4cloud_order_0-7的8个库的分库分表!!!!!
# mall4cloud_payment_0库作为演示，实际需要更改mall4cloud_payment_0-7的8个库的分库分表!!!!!
USE mall4cloud_order_0;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;
    SET i = 0;
    WHILE i<64 DO
        # 汇总到总表
        SET @create_allot_order_table = CONCAT(
                'INSERT INTO mall4cloud_order.`allot_order`
                    (SELECT * FROM allot_order_', i, ')'
            );
        PREPARE create_allot_order_table FROM @create_allot_order_table;
        EXECUTE create_allot_order_table;

        SET @create_allot_order_item_table = CONCAT(
                'INSERT INTO mall4cloud_order.`allot_order_item`
                    (SELECT * FROM allot_order_item_', i, ')'
            );
        PREPARE create_allot_order_item_table FROM @create_allot_order_item_table;
        EXECUTE create_allot_order_item_table;

        SET @create_delivery_order_table = CONCAT(
                'INSERT INTO mall4cloud_order.`delivery_order` (`create_time`,`update_time`,`order_id`,`user_id`,`delivery_company_id`,`delivery_no`,`consignee_name`,`consignee_mobile`,`status`,`all_count`,`delete_time`,`delivery_type`)
                    (SELECT `create_time`,`update_time`,`order_id`,`user_id`,`delivery_company_id`,`delivery_no`,`consignee_name`,`consignee_mobile`,`status`,`all_count`,`delete_time`,`delivery_type` FROM delivery_order_', i, ')'
            );
        PREPARE create_delivery_order_table FROM @create_delivery_order_table;
        EXECUTE create_delivery_order_table;

        SET @create_delivery_order_item_table = CONCAT(
                'INSERT INTO mall4cloud_order.`delivery_order_item` (`create_time`,`update_time`,`delivery_order_id`,`img_url`,`spu_name`,`count`,`supplier_img_url`,`supplier_spu_name`)
                    (SELECT `create_time`,`update_time`,`delivery_order_id`,`img_url`,`spu_name`,`count`,`supplier_img_url`,`supplier_spu_name` FROM delivery_order_item_', i, ')'
            );
        PREPARE create_delivery_order_item_table FROM @create_delivery_order_item_table;
        EXECUTE create_delivery_order_item_table;

        SET @create_order_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order`
                    (SELECT * FROM order_', i, ')'
            );
        PREPARE create_order_table FROM @create_order_table;
        EXECUTE create_order_table;

        SET @create_order_addr_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_addr`
                    (SELECT * FROM order_addr_', i, ')'
            );
        PREPARE create_order_addr_table FROM @create_order_addr_table;
        EXECUTE create_order_addr_table;

        SET @create_order_invoice_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_invoice`
                    (SELECT * FROM order_invoice_', i, ')'
            );
        PREPARE create_order_invoice_table FROM @create_order_invoice_table;
        EXECUTE create_order_invoice_table;

        SET @create_order_item_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_item`
                    (SELECT * FROM order_item_', i, ')'
            );
        PREPARE create_order_item_table FROM @create_order_item_table;
        EXECUTE create_order_item_table;

        SET @create_order_item_lang_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_item_lang`
                    (SELECT * FROM order_item_lang_', i, ')'
            );
        PREPARE create_order_item_lang_table FROM @create_order_item_lang_table;
        EXECUTE create_order_item_lang_table;

        SET @create_order_pre_sale_info_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_pre_sale_info`
                    (SELECT * FROM order_pre_sale_info_', i, ')'
            );
        PREPARE create_order_pre_sale_info_table FROM @create_order_pre_sale_info_table;
        EXECUTE create_order_pre_sale_info_table;

        SET @create_order_refund_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_refund`
                    (SELECT * FROM order_refund_', i, ')'
            );
        PREPARE create_order_refund_table FROM @create_order_refund_table;
        EXECUTE create_order_refund_table;

        SET @create_order_refund_addr_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_refund_addr` (`create_time`,`update_time`,`shop_id`,`refund_id`,`user_id`,`delivery_company_id`,`delivery_name`,`delivery_no`,`consignee_name`,`consignee_mobile`,`consignee_telephone`,`consignee_post_code`,`consignee_addr`,`sender_mobile`,`sender_remarks`,`imgs`)
                    (SELECT `create_time`,`update_time`,`shop_id`,`refund_id`,`user_id`,`delivery_company_id`,`delivery_name`,`delivery_no`,`consignee_name`,`consignee_mobile`,`consignee_telephone`,`consignee_post_code`,`consignee_addr`,`sender_mobile`,`sender_remarks`,`imgs` FROM order_refund_addr_', i, ')'
            );
        PREPARE create_order_refund_addr_table FROM @create_order_refund_addr_table;
        EXECUTE create_order_refund_addr_table;

        SET @create_order_refund_intervention_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_refund_intervention` (`refund_id`,`create_time`,`update_time`,`biz_id`,`sys_type`,`voucher_desc`,`img_urls`)
                    (SELECT `refund_id`,`create_time`,`update_time`,`biz_id`,`sys_type`,`voucher_desc`,`img_urls` FROM order_refund_intervention_', i, ')'
            );
        PREPARE create_order_refund_intervention_table FROM @create_order_refund_intervention_table;
        EXECUTE create_order_refund_intervention_table;

        SET @create_order_refund_settlement_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_refund_settlement` (`create_time`,`update_time`,`pay_id`,`order_id`,`refund_id`,`user_id`,`biz_refund_no`,`pay_type`,`refund_status`,`refund_amount`,`order_total_amount`,`version`)
                    (SELECT `create_time`,`update_time`,`pay_id`,`order_id`,`refund_id`,`user_id`,`biz_refund_no`,`pay_type`,`refund_status`,`refund_amount`,`order_total_amount`,`version` FROM order_refund_settlement_', i, ')'
            );
        PREPARE create_order_refund_settlement_table FROM @create_order_refund_settlement_table;
        EXECUTE create_order_refund_settlement_table;

        SET @create_order_self_station_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_self_station`
                    (SELECT * FROM order_self_station_', i, ')'
            );
        PREPARE create_order_self_station_table FROM @create_order_self_station_table;
        EXECUTE create_order_self_station_table;

        SET @create_order_settlement_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_settlement`
                    (SELECT * FROM order_settlement_', i, ')'
            );
        PREPARE create_order_settlement_table FROM @create_order_settlement_table;
        EXECUTE create_order_settlement_table;

        SET @create_order_virtual_info_table = CONCAT(
                'INSERT INTO mall4cloud_order.`order_virtual_info`
                    (SELECT * FROM order_virtual_info_', i, ')'
            );
        PREPARE create_order_virtual_info_table FROM @create_order_virtual_info_table;
        EXECUTE create_order_virtual_info_table;

        SET @create_purchase_order_table = CONCAT(
                'INSERT INTO mall4cloud_order.`purchase_order`
                    (SELECT * FROM purchase_order_', i, ')'
            );
        PREPARE create_purchase_order_table FROM @create_purchase_order_table;
        EXECUTE create_purchase_order_table;

        SET @create_purchase_order_lang_table = CONCAT(
                'INSERT INTO mall4cloud_order.`purchase_order_lang`
                    (SELECT * FROM purchase_order_lang_', i, ')'
            );
        PREPARE create_purchase_order_lang_table FROM @create_purchase_order_lang_table;
        EXECUTE create_purchase_order_lang_table;

        SET @create_purchase_order_item_table = CONCAT(
                'INSERT INTO mall4cloud_order.`purchase_order_item`
                    (SELECT * FROM purchase_order_item_', i, ')'
            );
        PREPARE create_purchase_order_item_table FROM @create_purchase_order_item_table;
        EXECUTE create_purchase_order_item_table;

        SET @create_purchase_order_item_lang_table = CONCAT(
                'INSERT INTO mall4cloud_order.`purchase_order_item_lang`
                    (SELECT * FROM purchase_order_item_lang_', i, ')'
            );
        PREPARE create_purchase_order_item_lang_table FROM @create_purchase_order_item_lang_table;
        EXECUTE create_purchase_order_item_lang_table;

        SET @create_purchase_order_addr_table = CONCAT(
                'INSERT INTO mall4cloud_order.`purchase_order_addr`
                    (SELECT * FROM purchase_order_addr_', i, ')'
            );
        PREPARE create_purchase_order_addr_table FROM @create_purchase_order_addr_table;
        EXECUTE create_purchase_order_addr_table;

        SET i = i+1;
    END WHILE;
END//
CALL createTable()//
DELIMITER ;

USE mall4cloud_payment_0;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;
    SET i = 0;
    WHILE i<64 DO
        # 汇总到总表
        SET @create_pay_info_table = CONCAT(
                'INSERT INTO mall4cloud_payment.`pay_info`
                    (SELECT * FROM pay_info_', i, ')'
            );
        PREPARE create_pay_info_table FROM @create_pay_info_table;
        EXECUTE create_pay_info_table;

        SET @create_refund_info_table = CONCAT(
                'INSERT INTO mall4cloud_payment.`refund_info`
                    (SELECT * FROM refund_info_', i, ')'
            );
        PREPARE create_refund_info_table FROM @create_refund_info_table;
        EXECUTE create_refund_info_table;

        SET i = i+1;
    END WHILE;
END//
CALL createTable()//
DELIMITER ;

# ============================== 3.删除多余分库分表 ==============================
# 请确保1-2成功执行，并且所有分表数据成功到总表中再执行
DROP DATABASE `mall4cloud_order_0`;
DROP DATABASE `mall4cloud_order_1`;
DROP DATABASE `mall4cloud_order_2`;
DROP DATABASE `mall4cloud_order_3`;
DROP DATABASE `mall4cloud_order_4`;
DROP DATABASE `mall4cloud_order_5`;
DROP DATABASE `mall4cloud_order_6`;
DROP DATABASE `mall4cloud_order_7`;

DROP DATABASE `mall4cloud_payment_0`;
DROP DATABASE `mall4cloud_payment_1`;
DROP DATABASE `mall4cloud_payment_2`;
DROP DATABASE `mall4cloud_payment_3`;
DROP DATABASE `mall4cloud_payment_4`;
DROP DATABASE `mall4cloud_payment_5`;
DROP DATABASE `mall4cloud_payment_6`;
DROP DATABASE `mall4cloud_payment_7`;

# ============================== 4.创建分表 ==============================
USE mall4cloud_order;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;


    # ============================== 订单   ==============================


    SET i = 0;
    WHILE i<50 DO

        SET @create_order_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_', i,
                "
                (
                `order_id` bigint unsigned NOT NULL COMMENT '订单ID',
                `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
                `user_id` bigint NOT NULL COMMENT '用户ID',
                `order_addr_id` bigint DEFAULT NULL COMMENT '用户订单地址Id',
                `delivery_type` tinyint DEFAULT NULL COMMENT '配送类型 1:快递 2:自提 3：无需快递 4同城配送',
                `pay_sys_type` tinyint NOT NULL DEFAULT '0' COMMENT '支付系统类型 0默认1通联支付',
                `shop_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '店铺名称',
                `total` bigint NOT NULL COMMENT '总值',
                `actual_total` bigint DEFAULT NULL COMMENT '实际总值',
                `freight_amount` bigint DEFAULT NULL COMMENT '订单运费',
                `order_score` bigint DEFAULT NULL COMMENT '订单使用积分',
                `status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态 1:待付款 2:待发货(待自提) 3:待收货(已发货) 5:成功 6:失败 7:待成团 9.待付尾款',
                `pay_type` tinyint unsigned DEFAULT NULL COMMENT '支付方式 请参考枚举PayType',
                `order_type` tinyint DEFAULT NULL COMMENT '订单类型 1团购订单 2秒杀订单 3积分订单',
                `all_count` int DEFAULT NULL COMMENT '订单商品总数',
                `reduce_amount` bigint NOT NULL DEFAULT '0' COMMENT '优惠总额',
                `score_amount` bigint NOT NULL DEFAULT '0' COMMENT '积分抵扣金额',
                `member_amount` bigint NOT NULL DEFAULT '0' COMMENT '会员折扣金额',
                `platform_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠券优惠金额',
                `shop_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家优惠券优惠金额',
                `discount_amount` bigint NOT NULL DEFAULT '0' COMMENT '满减优惠金额',
                `shop_combo_amount` bigint NOT NULL DEFAULT '0' COMMENT '套餐优惠金额',
                `platform_free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台运费减免金额',
                `free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家运费减免金额',
                `shop_change_free_amount` bigint NOT NULL DEFAULT '0' COMMENT '店铺改价优惠金额',
                `distribution_amount` bigint NOT NULL DEFAULT '0' COMMENT '分销佣金',
                `platform_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠金额',
                `platform_commission` bigint NOT NULL DEFAULT '0' COMMENT '平台佣金',
                `pay_time` datetime DEFAULT NULL COMMENT '付款时间',
                `delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
                `finally_time` datetime DEFAULT NULL COMMENT '完成时间',
                `settled_time` datetime DEFAULT NULL COMMENT '结算时间',
                `cancel_time` datetime DEFAULT NULL COMMENT '取消时间',
                `book_time` datetime DEFAULT NULL COMMENT '预售发货时间',
                `is_payed` tinyint(1) DEFAULT NULL COMMENT '是否已支付，1.已支付0.未支付',
                `close_type` tinyint DEFAULT NULL COMMENT '订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易',
                `refund_status` tinyint DEFAULT NULL COMMENT '订单退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）',
                `shop_remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '卖家备注',
                `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家备注',
                `delete_status` tinyint DEFAULT '0' COMMENT '用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除',
                `version` int DEFAULT NULL COMMENT '订单版本号，每处理一次订单，版本号+1',
                `is_settled` tinyint DEFAULT NULL COMMENT '是否已经进行结算',
                `supplier_id` bigint NOT NULL DEFAULT '0' COMMENT '供应商id',
                `wait_purchase` tinyint NOT NULL DEFAULT '0' COMMENT '是否待采购 1.是 0.否 2.已处理',
                `supplier_delivery_type` tinyint NOT NULL DEFAULT '0' COMMENT '供应商商品发货方式 1.供应商发货 2.仓库发货',
                `purchase_spread_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家采购价差（需要商家从结算金额补上采购价的金额）',
                `pre_sale_type` tinyint DEFAULT '-1' COMMENT '预售类型 0.全款预售类型 1.定金预售',
                `order_mold` tinyint DEFAULT '0' COMMENT '是否为虚拟商品订单 1.是 0.否',
                `write_off_status` tinyint(1) DEFAULT NULL COMMENT '订单核销状态 0.待核销 1.核销完成',
                `write_off_num` int DEFAULT NULL COMMENT '核销次数 -1.多次核销 0.无需核销 1.单次核销',
                `write_off_multiple_count` int DEFAULT NULL COMMENT '核销次数 -1.无限次',
                `write_off_start` datetime DEFAULT NULL COMMENT '核销开始时间',
                `write_off_end` datetime DEFAULT NULL COMMENT '核销结束时间',
                `write_off_count` int(0) NULL DEFAULT NULL COMMENT '订单被核销次数',
                     main_order_id BIGINT NOT NULL DEFAULT '0' COMMENT '主单号,在组合/套餐商品拆单时会存在',
                PRIMARY KEY (`order_id`),
                KEY `idx_shop_id` (`shop_id`),
                KEY `idx_user_id` (`user_id`),
                KEY `idx_addr_order_id` (`order_addr_id`),
                KEY `idx_finally_time` (`finally_time`)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单信息'
              "
            );
        PREPARE sql_create_table FROM @create_order_table;
        EXECUTE sql_create_table;

        SET @create_order_addr_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_addr_', i,
                "
                (
                  `order_addr_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `user_id` bigint DEFAULT NULL COMMENT '用户ID',
                  `consignee` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货人',
                  `province_id` bigint DEFAULT NULL COMMENT '省ID',
                  `province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '省',
                  `city_id` bigint DEFAULT NULL COMMENT '城市ID',
                  `city` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '城市',
                  `area_id` bigint DEFAULT NULL COMMENT '区域ID',
                  `area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '区',
                  `addr` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',
                  `post_code` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '邮编',
                  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机',
                  `lng` decimal(12,6) DEFAULT NULL COMMENT '经度',
                  `lat` decimal(12,6) DEFAULT NULL COMMENT '纬度',
                  PRIMARY KEY (`order_addr_id`),
                  KEY `idx_user_id` (`user_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户订单配送地址'
                "
            );
        PREPARE create_order_addr_table FROM @create_order_addr_table;
        EXECUTE create_order_addr_table;

        SET @create_order_item_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_item_', i,
                "
                (
                  `order_item_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '订单项ID',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `shop_id` bigint NOT NULL COMMENT '店铺id',
                  `order_id` bigint NOT NULL COMMENT '订单id',
                  `category_id` bigint DEFAULT NULL COMMENT '分类id',
                  `spu_id` bigint unsigned NOT NULL COMMENT '产品ID',
                  `sku_id` bigint unsigned NOT NULL COMMENT '产品SkuID',
                  `user_id` bigint NOT NULL COMMENT '用户Id',
                  `final_refund_id` bigint DEFAULT NULL COMMENT '最终的退款id',
                  `distribution_user_id` bigint DEFAULT NULL COMMENT '推广员id',
                  `count` int DEFAULT '0' COMMENT '购物车产品个数',
                  `spu_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '产品名称',
                  `sku_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku名称',
                  `spu_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品编码',
                  `party_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku编码',
                  `pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '产品主图片路径',
                  `is_comm` tinyint NOT NULL DEFAULT '0' COMMENT '是否以评价(0.未评价1.已评价)',
                  `comm_time` datetime DEFAULT NULL COMMENT '评论时间',
                  `refund_status` tinyint DEFAULT NULL COMMENT '订单项退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）',
                  `be_delivered_num` int DEFAULT NULL COMMENT '0全部发货 其他数量为剩余待发货数量',
                  `delivery_type` tinyint DEFAULT NULL COMMENT '单个orderItem的配送类型 1:快递 2:自提 3：无需快递 4:同城配送',
                  `shop_cart_time` datetime DEFAULT NULL COMMENT '加入购物车时间',
                  `price` bigint NOT NULL COMMENT '产品价格',
                  `spu_total_amount` bigint NOT NULL COMMENT '商品总金额',
                  `actual_total` bigint NOT NULL DEFAULT '0' COMMENT '商品实际金额 = 商品总金额 - 分摊的优惠金额',
                  `share_reduce` bigint NOT NULL DEFAULT '0' COMMENT '分摊的优惠金额(商家分摊 + 平台补贴)',
                  `platform_share_reduce` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠金额',
                  `distribution_amount` bigint NOT NULL DEFAULT '0' COMMENT '推广员佣金',
                  `distribution_parent_amount` bigint NOT NULL DEFAULT '0' COMMENT '上级推广员佣金',
                  `use_score` bigint NOT NULL DEFAULT '0' COMMENT '使用积分',
                  `gain_score` bigint NOT NULL DEFAULT '0' COMMENT '获得积分',
                  `rate` decimal(15,6) NOT NULL DEFAULT '0.000000' COMMENT '分账比例',
                  `platform_commission` bigint NOT NULL DEFAULT '0' COMMENT '平台佣金(商品实际金额 * 分账比例)',
                  `score_amount` bigint NOT NULL DEFAULT '0' COMMENT '积分抵扣金额',
                  `member_amount` bigint NOT NULL DEFAULT '0' COMMENT '会员折扣金额',
                  `platform_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台优惠券优惠金额',
                  `shop_coupon_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家优惠券优惠金额',
                  `discount_amount` bigint NOT NULL DEFAULT '0' COMMENT '满减优惠金额',
                  `platform_free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '平台运费减免金额',
                  `free_freight_amount` bigint NOT NULL DEFAULT '0' COMMENT '商家运费减免金额',
                  `shop_change_free_amount` bigint NOT NULL DEFAULT '0' COMMENT '店铺改价优惠金额',
                  `score_fee` bigint DEFAULT NULL COMMENT '积分价格（单价）',
                  `item_purchase_amount` bigint NOT NULL DEFAULT '0' COMMENT '采购价',
                  `purchase_platform_commission` bigint NOT NULL DEFAULT '0' COMMENT '供应商佣金',
                  `supplier_rate` decimal(15,6) NOT NULL DEFAULT '0.000000' COMMENT '供应商佣金比例',
                  `supplier_spu_id` bigint DEFAULT NULL COMMENT '供应商商品id',
                  `supplier_sku_id` bigint DEFAULT NULL COMMENT '供应商规格id',
                  `giveaway_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '赠品金额',
                  `main_giveaway` tinyint DEFAULT NULL COMMENT '主赠品',
                  `spu_mold` tinyint DEFAULT '0' COMMENT '商品类别 0.实物商品 1. 虚拟商品',
                  `is_refund` tinyint DEFAULT NULL COMMENT '是否可以退款 1.可以 0不可以',
                  `virtual_remark` json DEFAULT NULL COMMENT '虚拟商品的留言备注',
                  `combo_amount` bigint DEFAULT '0' COMMENT '套餐优惠金额',
                  `activity_id` bigint DEFAULT NULL COMMENT '活动id',
                  `activity_type` tinyint DEFAULT '0' COMMENT '活动类型 具体类型参考枚举类:OrderActivityType',
                  `supplier_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品供应商主图片路径',
                     `write_off_num` INT DEFAULT NULL COMMENT '核销次数 -1.多次核销 0.无需核销 1.单次核销',
                     `write_off_multiple_count` INT DEFAULT NULL COMMENT '核销次数 -1.无限次',
                     `write_off_start` DATETIME DEFAULT NULL COMMENT '核销开始时间',
                     `write_off_end` DATETIME DEFAULT NULL COMMENT '核销结束时间',
                    `stock_point_id` bigint DEFAULT NULL COMMENT '库存点id',
                  PRIMARY KEY (`order_item_id`),
                  KEY `idx_order_id` (`order_id`),
                  KEY `idx_shop_id` (`shop_id`),
                  KEY `idx_spu_id` (`spu_id`),
                  KEY `idx_sku_id` (`sku_id`),
                  KEY `idx_user_id` (`user_id`),
                  KEY `idx_final_refund_id` (`final_refund_id`),
                  KEY `idx_distribution_user_id` (`distribution_user_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单项'
            "
            );
        PREPARE create_order_item_table FROM @create_order_item_table;
        EXECUTE create_order_item_table;

        SET @create_order_item_lang_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_item_lang_', i,
                "
                (
                  `order_item_id` bigint NOT NULL COMMENT '订单项ID',
                  `lang` tinyint NOT NULL COMMENT '语言 1.中文 2.英文',
                  `spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
                  `sku_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku名称',
                  `supplier_spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '供应商商品名称',
                  `supplier_sku_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '供应商sku名称',
                  PRIMARY KEY (`order_item_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单项-国际化'
                "
            );
        PREPARE create_order_item_lang_table FROM @create_order_item_lang_table;
        EXECUTE create_order_item_lang_table;

        SET @create_order_settlement_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_settlement_', i,
                "
                (
                  `settlement_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '支付结算单据ID',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `order_id` bigint DEFAULT NULL COMMENT '订单id',
                  `pay_id` bigint DEFAULT NULL COMMENT '支付单号',
                  `pay_ids` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付单号集合，目前只有预售订单存在多条',
                  `user_id` bigint NOT NULL COMMENT '用户ID',
                  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式',
                  `is_clearing` tinyint DEFAULT NULL COMMENT '是否清算 0:否 1:是',
                  `pay_score` bigint DEFAULT NULL COMMENT '支付积分',
                  `pay_amount` bigint DEFAULT NULL COMMENT '支付金额',
                  `clearing_time` datetime DEFAULT NULL COMMENT '清算时间',
                  `version` int DEFAULT NULL COMMENT '版本号',
                  `is_payed` tinyint DEFAULT NULL COMMENT '是否已支付，1.已支付0.未支付',
                  PRIMARY KEY (`settlement_id`),
                  KEY `idx_pay_id` (`pay_id`),
                  KEY `idx_order_id` (`order_id`),
                  KEY `idx_user_id` (`user_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单结算表'
                "
            );
        PREPARE create_order_settlement_table FROM @create_order_settlement_table;
        EXECUTE create_order_settlement_table;

        SET @create_order_pre_sale_info_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_pre_sale_info_', i,
                "
                (
                  `order_pre_sale_info_id` bigint NOT NULL AUTO_INCREMENT,
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
                  `order_id` bigint DEFAULT NULL COMMENT '订单编号',
                  `deposit_amount` bigint DEFAULT '0' COMMENT '定金金额',
                  `deposit_reduce_amount` bigint DEFAULT '0' COMMENT '定金优惠金额',
                  `deposit_expansion_amount` bigint DEFAULT '0' COMMENT '定金膨胀金额',
                  `balance_amount` bigint DEFAULT '0' COMMENT '尾款金额',
                  `pre_sale_type` tinyint DEFAULT '0' COMMENT '预售类型 0.全款预售类型 1.定金预售',
                  `pay_status` tinyint DEFAULT '0' COMMENT '定金预售支付状态 1.已支付定金 2.已支付尾款',
                  `balance_start_time` datetime DEFAULT NULL COMMENT '尾款支付开始时间',
                  `balance_end_time` datetime DEFAULT NULL COMMENT '尾款支付结束时间',
                  `balance_pay_time` datetime DEFAULT NULL COMMENT '尾款支付时间',
                  `pre_sale_delivery_type` tinyint DEFAULT NULL COMMENT '预售发货类型 -1.固定时间 x.（尾款）支付后x天发货',
                  `pre_sale_delivery_time` datetime DEFAULT NULL COMMENT '预售发货时间',
                  PRIMARY KEY (`order_pre_sale_info_id`),
                  KEY `idx_order_id` (`order_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单预售信息'
                "
            );
        PREPARE create_order_pre_sale_info_table FROM @create_order_pre_sale_info_table;
        EXECUTE create_order_pre_sale_info_table;

        SET @create_order_invoice_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_invoice_', i,
                "
                (
                  `order_invoice_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '订单发票ID',
                  `order_id` bigint NOT NULL COMMENT '订单id',
                  `shop_id` bigint NOT NULL COMMENT '店铺id',
                  `supplier_id` bigint NULL COMMENT '供应商id',
                  `invoice_type` tinyint NOT NULL DEFAULT '1' COMMENT '发票类型 1.电子普通发票',
                  `header_type` tinyint NOT NULL COMMENT '抬头类型 1.单位 2.个人',
                  `header_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '抬头名称',
                  `invoice_tax_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发票税号',
                  `invoice_context` tinyint NOT NULL DEFAULT '1' COMMENT '发票内容 1.商品明细',
                  `invoice_state` tinyint NOT NULL COMMENT '发票状态 1.申请中 2.已开票',
                  `file_id` bigint DEFAULT NULL COMMENT '文件id',
                  `application_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
                  `upload_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
                  PRIMARY KEY (`order_invoice_id`),
                  KEY `shop_idx`(`shop_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
                "
            );
        PREPARE create_order_invoice_table FROM @create_order_invoice_table;
        EXECUTE create_order_invoice_table;

        SET @create_order_self_station_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_self_station_', i,
                "
                (
                  `order_self_station_id` bigint NOT NULL,
                  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
                  `user_id` bigint NOT NULL COMMENT '用户id',
                  `order_id` bigint DEFAULT NULL COMMENT '订单编号',
                  `station_id` bigint DEFAULT NULL COMMENT '自提点id',
                  `station_user_mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提人的手机',
                  `station_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提人的名字',
                  `station_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提时间(用户下单时选择)',
                  `station_code` varchar(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '自提提货码',
                  `station_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上门自提点的地址',
                  `station_phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上门自提点的联系电话',
                  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
                  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                  PRIMARY KEY (`order_self_station_id`),
                  KEY `STATION` (`station_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单自提信息'
                ");
        PREPARE create_order_self_station_table FROM @create_order_self_station_table;
        EXECUTE create_order_self_station_table;

        SET @create_order_virtual_info_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS order_virtual_info_', i,
                "
                (
                  `order_virtual_info_id` bigint NOT NULL ,
                  `order_id` bigint unsigned NOT NULL COMMENT '订单ID',
                   `order_item_id` bigint NOT NULL DEFAULT '0' COMMENT '订单项id',
                  `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
                  `station_id` bigint DEFAULT NULL COMMENT '核销门店id',
                  `write_off_code` varchar(13) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '核销码',
                  `is_write_off` tinyint DEFAULT NULL COMMENT '是否核销 1.已核销 0.未核销',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `write_off_time` datetime DEFAULT NULL COMMENT '核销时间',
                  `write_off_multiple_count` int DEFAULT NULL COMMENT '剩余核销次数 -1.无限次',
                  PRIMARY KEY (`order_virtual_info_id`),
                  KEY `order_id` (`order_id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单虚拟商品信息'
                ");
        PREPARE create_order_virtual_info_table FROM @create_order_virtual_info_table;
        EXECUTE create_order_virtual_info_table;

        SET @create_delivery_order_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS delivery_order_', i,
                "
                (
                  `delivery_order_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '订单物流包裹id',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `order_id` bigint NOT NULL COMMENT '订单号',
                  `user_id` bigint NOT NULL COMMENT '用户id',
                  `delivery_company_id` bigint DEFAULT NULL COMMENT '快递公司id',
                  `delivery_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '快递单号',
                  `consignee_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人姓名',
                  `consignee_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人电话（顺丰快递需要）',
                  `status` tinyint DEFAULT NULL COMMENT '物流状态 1正常 -1删除',
                  `all_count` int DEFAULT NULL COMMENT '包裹商品总数',
                  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
                  `delivery_type` int DEFAULT NULL COMMENT '发货方式(1.快递 3.无需物流)',
                  PRIMARY KEY (`delivery_order_id`),
                  KEY `idx_order_id` (`order_id`),
                  KEY `idx_user_id` (`user_id`),
                  KEY `idx_delivery_company_id` (`delivery_company_id`)
                  ) ENGINE=InnoDB AUTO_INCREMENT=96 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单快递信息'
                "
            );
        PREPARE create_delivery_order_table FROM @create_delivery_order_table;
        EXECUTE create_delivery_order_table;

        SET @create_delivery_order_item_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS delivery_order_item_', i,
                "
                (
                  `delivery_order_item_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `delivery_order_id` bigint DEFAULT NULL COMMENT '订单物流包裹id',
                  `img_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品图片',
                  `spu_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
                  `count` int DEFAULT '0' COMMENT '商品数量',
                  `supplier_img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '供应商商品图片',
                  `supplier_spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '供应商商品名称',
                  PRIMARY KEY (`delivery_order_item_id`),
                  KEY `idx_order_delivery_id` (`delivery_order_id`)
                  ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='物流订单项信息'
                "
            );
        PREPARE create_delivery_order_item_table FROM @create_delivery_order_item_table;
        EXECUTE create_delivery_order_item_table;


        SET @create_order_refund_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS order_refund_', i,
          "
          (
            `refund_id` bigint NOT NULL COMMENT '记录ID',
            `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
            `shop_id` bigint NOT NULL COMMENT '店铺ID',
            `user_id` bigint NOT NULL COMMENT '买家ID',
            `order_id` bigint NOT NULL COMMENT '订单号',
            `order_item_id` bigint NOT NULL DEFAULT '0' COMMENT '订单项ID(0:为全部订单项)',
            `refund_count` int DEFAULT '0' COMMENT '退货数量(0:为全部订单项)',
            `refund_score` bigint DEFAULT NULL COMMENT '退还积分',
            `refund_amount` bigint DEFAULT NULL COMMENT '退款金额',
            `platform_refund_commission` bigint DEFAULT NULL COMMENT '平台佣金退款金额',
            `platform_refund_amount` bigint DEFAULT NULL COMMENT '平台退款金额（退款时将这部分钱退回给平台，所以商家要扣除从平台这里获取的金额）',
            `distribution_total_amount` bigint DEFAULT NULL COMMENT '退款单总分销金额',
            `refund_type` tinyint NOT NULL DEFAULT '0' COMMENT '退款单类型（1:整单退款,2:单个物品退款）',
            `apply_type` tinyint NOT NULL COMMENT '申请类型:1,仅退款,2退款退货',
            `pay_sys_type` tinyint NOT NULL DEFAULT '0' COMMENT '支付系统类型 0默认1通联支付',
            `is_received` tinyint DEFAULT NULL COMMENT '是否接收到商品(1:已收到,0:未收到)',
            `close_type` tinyint DEFAULT NULL COMMENT '退款关闭原因(1.买家撤销退款 2.卖家拒绝退款 3.退款申请超时被系统关闭)',
            `return_money_sts` tinyint NOT NULL DEFAULT '0' COMMENT '处理退款状态:(1.买家申请 2.卖家接受 3.买家发货 4.卖家收货 5.退款成功  -1.退款关闭)详情见ReturnMoneyStsType',
            `buyer_reason` tinyint DEFAULT NULL COMMENT '申请原因(具体见BuyerReasonType)',
            `buyer_desc` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '申请说明',
            `buyer_mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系方式（退款时留下的手机号码）',
            `img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件凭证(逗号隔开)',
            `over_time` datetime DEFAULT NULL COMMENT '超时时间（超过该时间不处理，系统将自动处理）（保留字段）',
            `reject_message` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拒绝原因',
            `seller_msg` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '卖家备注',
            `shop_seller_msg` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商家备注(移交供应商处理时保存)',
            `handel_time` datetime DEFAULT NULL COMMENT '受理时间',
            `supplier_time` datetime DEFAULT NULL COMMENT '移交供应商时间',
            `delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
            `receive_time` datetime DEFAULT NULL COMMENT '收货时间',
            `close_time` datetime DEFAULT NULL COMMENT '关闭时间',
            `decision_time` datetime DEFAULT NULL COMMENT '确定时间(确定退款时间)',
            `refund_time` datetime DEFAULT NULL COMMENT '退款时间',
            `supplier_id` bigint NOT NULL DEFAULT '0' COMMENT '供应商id',
            `supplier_handle_status` tinyint DEFAULT '-1' COMMENT '供应商处理状态， -1.商家自行处理 0.待供应商处理 1.供应商已同意 2.供应商已拒绝',
            `purchase_refund_amount` bigint DEFAULT '0' COMMENT '采购退款金额',
            `pur_platform_refund_commission` bigint DEFAULT '0' COMMENT '采购的平台佣金退款金额',
            `return_giveaway_ids` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款退回的赠品订单项ids',
            `refund_actual_total` decimal(15,2) DEFAULT NULL COMMENT '当前退款的实付金额（实付金额减去不退回赠品的金额）',
            `shop_img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商家/供应商文件凭证(逗号隔开)',
            `platform_intervention_status` tinyint NOT NULL DEFAULT '-1' COMMENT '平台介入状态 -1.没有介入 1.用户申请介入 2.平台同意介入 3.平台拒绝介入 5.平台同意退款成功',
            `apply_intervention_reason` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户申请介入理由',
            `apply_intervention_img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '申请介入的文件凭证(逗号隔开)',
            `intervention_refund_type` tinyint DEFAULT NULL COMMENT '平台介入退款方式 1.商家承担 2.商家供应商承担（供应商发货订单） 3.不同意退款',
            `after_intervention_refund_amount` bigint DEFAULT NULL COMMENT '平台介入前的退款金额',
            `platform_message` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台留言',
            `apply_intervention_time` datetime DEFAULT NULL COMMENT '申请介入时间',
            `intervention_finish_time` datetime DEFAULT NULL COMMENT '介入完成时间',
            PRIMARY KEY (`refund_id`),
            KEY `idx_order_id` (`order_id`),
            KEY `idx_order_item_id` (`order_item_id`),
            KEY `idx_user_id` (`user_id`),
            KEY `idx_shop_id` (`shop_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单退款记录信息'
          "
        );
        PREPARE create_order_refund_table FROM @create_order_refund_table;
        EXECUTE create_order_refund_table;

        SET @create_order_refund_intervention_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS order_refund_intervention_', i,
          "
          (
            `refund_intervertion_id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
            `refund_id` bigint NOT NULL COMMENT '退款id',
            `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
            `biz_id` bigint DEFAULT '0' COMMENT '商家/供应商/用户id',
            `sys_type` tinyint DEFAULT NULL COMMENT '系统类型，0.普通用户 1.商家端 2.平台端 3.供应商端',
            `voucher_desc` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '凭证说明',
            `img_urls` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件凭证(逗号隔开)',
            PRIMARY KEY (`refund_intervertion_id`),
            KEY `idx_refund_id` (`refund_id`),
            KEY `idx_biz_id` (`biz_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单退款介入记录'
          "
          );
        PREPARE create_order_refund_intervention_table FROM @create_order_refund_intervention_table;
        EXECUTE create_order_refund_intervention_table;

        SET @create_order_refund_addr_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS order_refund_addr_', i,
          "
          (
            `refund_addr_id` bigint NOT NULL AUTO_INCREMENT COMMENT '物流ID',
            `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
            `shop_id` bigint DEFAULT NULL COMMENT '店铺ID',
            `refund_id` bigint NOT NULL COMMENT '退款号',
            `user_id` bigint NOT NULL COMMENT '买家ID',
            `delivery_company_id` bigint DEFAULT NULL COMMENT '物流公司ID',
            `delivery_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '物流公司名称',
            `delivery_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '物流单号',
            `consignee_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人姓名',
            `consignee_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人电话（顺丰快递需要）',
            `consignee_telephone` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人座机',
            `consignee_post_code` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人邮政编码',
            `consignee_addr` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收件人地址',
            `sender_mobile` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发送人手机号码',
            `sender_remarks` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家备注',
            `imgs` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片凭证',
            PRIMARY KEY (`refund_addr_id`),
            KEY `idx_shop_id` (`shop_id`),
            KEY `idx_refund_id` (`refund_id`),
            KEY `idx_user_id` (`user_id`),
            KEY `idx_delivery_company_id` (`delivery_company_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户退货物流地址'
          "
        );
        PREPARE create_order_refund_addr_table FROM @create_order_refund_addr_table;
        EXECUTE create_order_refund_addr_table;

        SET @create_order_refund_settlement_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS order_refund_settlement_', i,
          "
          (
            `settlement_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '退款结算单据id',
            `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
            `pay_id` bigint DEFAULT NULL COMMENT '订单支付单号',
            `order_id` bigint DEFAULT NULL COMMENT '订单编号',
            `refund_id` bigint DEFAULT NULL COMMENT '退款单编号（本系统退款单号）',
            `user_id` bigint DEFAULT NULL COMMENT '用户ID',
            `biz_refund_no` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信/支付宝退款单号（支付平台退款单号）',
            `pay_type` tinyint DEFAULT NULL COMMENT '支付方式(1:微信支付 2支付宝支付)',
            `refund_status` tinyint DEFAULT NULL COMMENT '退款状态(1:申请中 2：已完成 -1失败)',
            `refund_amount` bigint DEFAULT NULL COMMENT '退款金额',
            `order_total_amount` bigint DEFAULT NULL COMMENT '订单总额',
            `version` int DEFAULT '0' COMMENT '版本号',
            PRIMARY KEY (`settlement_id`),
            UNIQUE KEY `uni_refund_id` (`refund_id`),
            KEY `idx_order_id` (`order_id`),
            KEY `idx_user_id` (`user_id`),
            KEY `idx_pay_id` (`pay_id`),
            KEY `idx_biz_refund_no` (`biz_refund_no`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='退款支付结算单据'
          "
        );
        PREPARE create_order_refund_settlement_table FROM @create_order_refund_settlement_table;
        EXECUTE create_order_refund_settlement_table;

        SET @create_purchase_order_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS purchase_order_', i,
          "
          (
            `purchase_order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '采购id',
            `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
            `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
            `deliver_time` datetime DEFAULT NULL COMMENT '送达时间',
            `delivery_time` datetime DEFAULT NULL COMMENT '发货时间',
            `supplier_id` bigint NOT NULL COMMENT '供应商id',
            `total_amount` bigint NOT NULL COMMENT '总采购金额',
            `total_stock` int NOT NULL COMMENT '总采购库存数量',
            `actual_total_stock` int DEFAULT NULL COMMENT '实际总库存数量',
            `status` tinyint DEFAULT NULL COMMENT '状态 0:已作废 1:待入库 2:已发货 3.部分入库 5:已完成',
            `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
            `employee_id` bigint DEFAULT NULL COMMENT '操作员工id',
            `delivery_type` tinyint DEFAULT NULL COMMENT '配送类型 1:快递 2:自提 3：无需快递 4同城配送',
            `purchase_order_addr_id` bigint DEFAULT NULL COMMENT '采购订单地址Id',
            `voucher_img_urls` VARCHAR(1000) DEFAULT NULL COMMENT '付款凭证图片 多个图片逗号分隔',
               `warehouse_id` bigint(0) NULL COMMENT '仓库id',
               `supplier_warehouse_id` bigint(0) NULL COMMENT '供应商仓库id',
               `stock_point_type` int(1) NULL COMMENT '库存点类型(1:仓库, 2:门店)',
            PRIMARY KEY (`purchase_order_id`),
            KEY `idx_supplier_id` (`supplier_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单'
          "
        );
        PREPARE create_purchase_order_table FROM @create_purchase_order_table;
        EXECUTE create_purchase_order_table;

        SET @create_purchase_order_lang_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS purchase_order_lang_', i,
          "
            (
            `purchase_order_id` bigint NOT NULL,
            `lang` tinyint NOT NULL,
            `spu_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
            PRIMARY KEY (`purchase_order_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单-国际化'
          "
        );
        PREPARE create_purchase_order_lang_table FROM @create_purchase_order_lang_table;
        EXECUTE create_purchase_order_lang_table;

        SET @create_purchase_order_item_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS purchase_order_item_', i,
          "
          (
            `purchase_item_id` bigint NOT NULL COMMENT 'id',
            `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
            `purchase_order_id` bigint DEFAULT NULL COMMENT '采购订单id',
            `spu_id` bigint DEFAULT NULL COMMENT '商品id',
            `sku_id` bigint DEFAULT NULL COMMENT 'sku id',
            `spu_code` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品编码',
            `party_code` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku编码',
            `pic` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品图片',
            `purchase_amount` bigint DEFAULT NULL COMMENT '采购金额',
            `purchase_price` bigint DEFAULT NULL COMMENT '采购价',
            `purchase_stock` int DEFAULT NULL COMMENT '采购库存数量',
            `actual_stock` int DEFAULT NULL COMMENT '实际库存数量',
            `delivery_type` tinyint DEFAULT NULL COMMENT '订单项退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）',
            `status` tinyint DEFAULT NULL COMMENT '状态 0:已作废 1:待入库 2:已发货 3.部分入库 5:已完成',
            `be_delivered_num` int DEFAULT NULL COMMENT '0全部发货 其他数量为剩余待发货数量',
            PRIMARY KEY (`purchase_item_id`),
            KEY `idx_purchase_order_id` (`purchase_order_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单项'
          "
        );
        PREPARE create_purchase_order_item_table FROM @create_purchase_order_item_table;
        EXECUTE create_purchase_order_item_table;

        SET @create_purchase_order_item_lang_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS purchase_order_item_lang_', i,
          "
          (
            `purchase_item_id` bigint NOT NULL COMMENT '订单项ID',
            `lang` tinyint NOT NULL COMMENT '语言 1.中文 2.英文',
            `spu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
            `sku_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'sku名称',
            PRIMARY KEY (`purchase_item_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单项-国际化'
          "
        );
        PREPARE create_purchase_order_item_lang_table FROM @create_purchase_order_item_lang_table;
        EXECUTE create_purchase_order_item_lang_table;

        SET @create_purchase_order_addr_table = CONCAT(
          'CREATE TABLE IF NOT EXISTS purchase_order_addr_', i,
          "
          (
            `purchase_order_addr_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
            `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
            `shop_id` bigint DEFAULT NULL COMMENT '店铺ID',
            `consignee` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '收货人',
            `province_id` bigint DEFAULT NULL COMMENT '省ID',
            `province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '省',
            `city_id` bigint DEFAULT NULL COMMENT '城市ID',
            `city` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '城市',
            `area_id` bigint DEFAULT NULL COMMENT '区域ID',
            `area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '区',
            `addr` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',
            `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机',
            PRIMARY KEY (`purchase_order_addr_id`),
            KEY `idx_shop_id` (`shop_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单配送地址'
          "
        );
        PREPARE create_purchase_order_addr_table FROM @create_purchase_order_addr_table;
        EXECUTE create_purchase_order_addr_table;

            SET @add_allot_order = CONCAT(
                            'CREATE TABLE IF NOT EXISTS `allot_order_', i, "`
                            (
                                  `allot_order_id` bigint(0) NOT NULL COMMENT '调拨订单id',
                                  `out_warehouse_id` bigint(0) NULL DEFAULT NULL COMMENT '调出点仓库id',
                                  `out_stock_point_type` int(0) NULL DEFAULT NULL COMMENT '调出点库存点类型(1:仓库, 2:门店)',
                                  `in_warehouse_id` bigint(0) NULL DEFAULT NULL COMMENT '调入点仓库id',
                                  `in_stock_point_type` int(0) NULL DEFAULT NULL COMMENT '调入点库存点类型(1:仓库, 2:门店)',
                                  `dvy_company_id` bigint(0) NULL DEFAULT NULL COMMENT '物流公司id',
                                  `dvy_type` int(0) NULL DEFAULT NULL COMMENT '物流方式(1:快递, 2:无需快递)',
                                  `dvy_order_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '物流单号',
                                  `status` int(0) NULL DEFAULT NULL COMMENT '状态(0:作废, 1:待入库, 2:部分入库, 3:已完成)',
                                  `total_allot_count` int(0) NULL DEFAULT NULL COMMENT '总调拨数量',
                                  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
                                  `shop_id` bigint(0) NULL COMMENT '店铺id',
                                  `sys_type` int(1) NULL COMMENT '系统类型',
                                  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
                                  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
                                  PRIMARY KEY (`allot_order_id`) USING BTREE
                                )
                            " );

            PREPARE add_allot_order FROM @add_allot_order;
            EXECUTE add_allot_order;

            SET @add_allot_order_item = CONCAT(
                            'CREATE TABLE `allot_order_item_', i,
                            "` (
                                      `allot_order_item_id` bigint NOT NULL COMMENT '调拨订单商品id',
                                      `allot_order_id` bigint NULL COMMENT '调拨订单id',
                                      `spu_id` bigint NULL COMMENT '商品spuId',
                                      `sku_id` bigint NULL COMMENT '商品skuId',
                                      `allot_count` int(255) NULL COMMENT '调拨数量',
                                      `allot_in_count` int(255) NULL COMMENT '调拨入库数量',
                                      `create_time` datetime NULL COMMENT '创建时间',
                                      `update_time` datetime NULL COMMENT '创建时间',
                                      PRIMARY KEY (`allot_order_item_id`)
                                    )
                            " );
            PREPARE add_allot_order_item FROM @add_allot_order_item;
            EXECUTE add_allot_order_item;

        SET i = i+1;
    END WHILE;


END//
CALL createTable()//
DELIMITER ;

USE mall4cloud_payment;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;
    SET i = 0;
    WHILE i<50 DO
        SET @create_pay_info_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS pay_info_', i,
                "
                (
                  `pay_id` bigint unsigned NOT NULL COMMENT '支付单号',
                  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
                  `user_id` bigint DEFAULT NULL COMMENT '用户id',
                  `order_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '本次支付关联的多个订单号',
                  `biz_pay_no` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外部订单流水号',
                  `sys_type` tinyint DEFAULT NULL COMMENT '系统类型 见SysTypeEnum',
                  `pay_entry` tinyint DEFAULT NULL COMMENT '支付入口 0下单 1余额充值',
                  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式 1 微信支付 2 支付宝',
                  `pay_status` tinyint DEFAULT NULL COMMENT '支付状态',
                  `pay_score` bigint DEFAULT NULL COMMENT '支付积分',
                  `pay_amount` bigint DEFAULT NULL COMMENT '支付金额',
                  `version` int DEFAULT NULL COMMENT '版本号',
                  `callback_content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '回调内容',
                  `callback_time` datetime DEFAULT NULL COMMENT '回调时间',
                  `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
                  `refund_id` bigint DEFAULT NULL COMMENT '本次支付关联的退款号',
                  `pay_sys_type` int DEFAULT NULL COMMENT '系统支付类型 0.默认支付系统 1.通联支付',
                  `to_user_id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付给商城的用户id，通联支付独有',
                  `system_model` tinyint DEFAULT NULL COMMENT '支付的系统类型 1:pc  2:h5  3:小程序 4:安卓  5:ios',
                  `biz_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '第三方系统userid',
                  PRIMARY KEY (`pay_id`),
                  KEY `idx_biz_pay_no` (`biz_pay_no`),
                  KEY `idx_user_id` (`user_id`),
                  KEY `idx_order_ids` (`order_ids`)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单支付记录'
                "
            );
        PREPARE create_pay_info_table FROM @create_pay_info_table;
        EXECUTE create_pay_info_table;




        SET @create_refund_info_table = CONCAT(
                'CREATE TABLE IF NOT EXISTS refund_info_', i,
                "
                (
                  `refund_id` bigint unsigned NOT NULL COMMENT '退款单号',
                  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                  `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
                  `order_id` bigint DEFAULT NULL COMMENT '关联的支付订单id',
                  `pay_id` bigint NOT NULL DEFAULT '0' COMMENT '关联的支付单id',
                  `pay_type` tinyint DEFAULT NULL COMMENT '支付方式',
                  `user_id` bigint DEFAULT NULL COMMENT '用户id',
                  `refund_status` tinyint DEFAULT NULL COMMENT '退款状态',
                  `refund_amount` bigint DEFAULT NULL COMMENT '退款金额',
                  `callback_content` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '回调内容',
                  `callback_time` datetime DEFAULT NULL COMMENT '回调时间',
                  PRIMARY KEY (`refund_id`,`pay_id`),
                  KEY `idx_order_id` (`order_id`),
                  KEY `idx_pay_id` (`pay_id`),
                  KEY `idx_userid` (`user_id`)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='退款信息'
                "
            );
        PREPARE create_refund_info_table FROM @create_refund_info_table;
        EXECUTE create_refund_info_table;

        SET i = i+1;
    END WHILE;


END//
CALL createTable()//
DELIMITER ;


# ============================== 5.统计数据到各个分表 ==============================
USE mall4cloud_order;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;
    SET i = 0;
    WHILE i<50 DO
        SET @create_allot_order_table = CONCAT(
                'INSERT INTO allot_order_', i, '
            (SELECT * FROM mall4cloud_order.`allot_order` WHERE (SUBSTRING(allot_order_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_allot_order_table FROM @create_allot_order_table;
        EXECUTE create_allot_order_table;

        SET @create_allot_order_item_table = CONCAT(
                'INSERT INTO allot_order_item_', i, '
            (SELECT * FROM mall4cloud_order.`allot_order_item` WHERE (SUBSTRING(allot_order_item_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_allot_order_item_table FROM @create_allot_order_item_table;
        EXECUTE create_allot_order_item_table;

        SET @create_delivery_order_table = CONCAT(
                'INSERT INTO delivery_order_', i, '
            (SELECT * FROM mall4cloud_order.`delivery_order` WHERE (SUBSTRING(delivery_order_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_delivery_order_table FROM @create_delivery_order_table;
        EXECUTE create_delivery_order_table;

        SET @create_delivery_order_item_table = CONCAT(
                'INSERT INTO delivery_order_item_', i, '
            (SELECT * FROM mall4cloud_order.`delivery_order_item` WHERE (SUBSTRING(delivery_order_item_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_delivery_order_item_table FROM @create_delivery_order_item_table;
        EXECUTE create_delivery_order_item_table;

        SET @create_order_table = CONCAT(
                'INSERT INTO order_', i, '
            (SELECT * FROM mall4cloud_order.`order` WHERE (SUBSTRING(order_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_table FROM @create_order_table;
        EXECUTE create_order_table;

        SET @create_order_addr_table = CONCAT(
                'INSERT INTO order_addr_', i, '
            (SELECT * FROM mall4cloud_order.`order_addr` WHERE (SUBSTRING(order_addr_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_addr_table FROM @create_order_addr_table;
        EXECUTE create_order_addr_table;

        SET @create_order_invoice_table = CONCAT(
                'INSERT INTO order_invoice_', i, '
            (SELECT * FROM mall4cloud_order.`order_invoice` WHERE (SUBSTRING(order_invoice_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_invoice_table FROM @create_order_invoice_table;
        EXECUTE create_order_invoice_table;

        SET @create_order_item_table = CONCAT(
                'INSERT INTO order_item_', i, '
            (SELECT * FROM mall4cloud_order.`order_item` WHERE (SUBSTRING(order_item_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_item_table FROM @create_order_item_table;
        EXECUTE create_order_item_table;

        SET @create_order_item_lang_table = CONCAT(
                'INSERT INTO order_item_lang_', i, '
            (SELECT * FROM mall4cloud_order.`order_item_lang` WHERE (SUBSTRING(order_item_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_item_lang_table FROM @create_order_item_lang_table;
        EXECUTE create_order_item_lang_table;

        SET @create_order_pre_sale_info_table = CONCAT(
                'INSERT INTO order_pre_sale_info_', i, '
            (SELECT * FROM mall4cloud_order.`order_pre_sale_info` WHERE (SUBSTRING(order_pre_sale_info_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_pre_sale_info_table FROM @create_order_pre_sale_info_table;
        EXECUTE create_order_pre_sale_info_table;

        SET @create_refund_info_table = CONCAT(
                'INSERT INTO order_refund_', i, '
            (SELECT * FROM mall4cloud_order.`order_refund` WHERE (SUBSTRING(user_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_refund_info_table FROM @create_refund_info_table;
        EXECUTE create_refund_info_table;

        SET @create_order_refund_addr_table = CONCAT(
                'INSERT INTO order_refund_addr_', i, '
            (SELECT * FROM mall4cloud_order.`order_refund_addr` WHERE (SUBSTRING(user_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_refund_addr_table FROM @create_order_refund_addr_table;
        EXECUTE create_order_refund_addr_table;

        SET @create_order_refund_intervention_table = CONCAT(
                'INSERT INTO order_refund_intervention_', i, '
            (SELECT * FROM mall4cloud_order.`order_refund_intervention` WHERE (SUBSTRING(refund_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_refund_intervention_table FROM @create_order_refund_intervention_table;
        EXECUTE create_order_refund_intervention_table;

        SET @create_order_refund_settlement_table = CONCAT(
                'INSERT INTO order_refund_settlement_', i, '
            (SELECT * FROM mall4cloud_order.`order_refund_settlement` WHERE (SUBSTRING(user_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_refund_settlement_table FROM @create_order_refund_settlement_table;
        EXECUTE create_order_refund_settlement_table;

        SET @create_order_self_station_table = CONCAT(
                'INSERT INTO order_self_station_', i, '
            (SELECT * FROM mall4cloud_order.`order_self_station` WHERE (SUBSTRING(order_self_station_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_self_station_table FROM @create_order_self_station_table;
        EXECUTE create_order_self_station_table;

        SET @create_order_settlement_table = CONCAT(
                'INSERT INTO order_settlement_', i, '
            (SELECT * FROM mall4cloud_order.`order_settlement` WHERE (SUBSTRING(settlement_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_settlement_table FROM @create_order_settlement_table;
        EXECUTE create_order_settlement_table;

        SET @create_order_virtual_info_table = CONCAT(
                'INSERT INTO order_virtual_info_', i, '
            (SELECT * FROM mall4cloud_order.`order_virtual_info` WHERE (SUBSTRING(order_virtual_info_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_order_virtual_info_table FROM @create_order_virtual_info_table;
        EXECUTE create_order_virtual_info_table;

        SET @create_purchase_order_table = CONCAT(
                'INSERT INTO purchase_order_', i, '
            (SELECT * FROM mall4cloud_order.`purchase_order` WHERE (SUBSTRING(purchase_order_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_purchase_order_table FROM @create_purchase_order_table;
        EXECUTE create_purchase_order_table;

        SET @create_purchase_order_addr_table = CONCAT(
                'INSERT INTO purchase_order_addr_', i, '
            (SELECT * FROM mall4cloud_order.`purchase_order_addr` WHERE (SUBSTRING(purchase_order_addr_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_purchase_order_addr_table FROM @create_purchase_order_addr_table;
        EXECUTE create_purchase_order_addr_table;

        SET @create_purchase_order_item_table = CONCAT(
                'INSERT INTO purchase_order_item_', i, '
            (SELECT * FROM mall4cloud_order.`purchase_order_item` WHERE (SUBSTRING(purchase_order_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_purchase_order_item_table FROM @create_purchase_order_item_table;
        EXECUTE create_purchase_order_item_table;

        SET @create_purchase_order_item_lang_table = CONCAT(
                'INSERT INTO purchase_order_item_lang_', i, '
            (SELECT * FROM mall4cloud_order.`purchase_order_item_lang` WHERE (SUBSTRING(purchase_item_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_purchase_order_item_lang_table FROM @create_purchase_order_item_lang_table;
        EXECUTE create_purchase_order_item_lang_table;

        SET @create_purchase_order_lang_table = CONCAT(
                'INSERT INTO purchase_order_lang_', i, '
            (SELECT * FROM mall4cloud_order.`purchase_order_lang` WHERE (SUBSTRING(purchase_order_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_purchase_order_lang_table FROM @create_purchase_order_lang_table;
        EXECUTE create_purchase_order_lang_table;

        SET i = i+1;
    END WHILE;
END//
CALL createTable()//
DELIMITER ;

USE mall4cloud_payment;
DELIMITER //
DROP PROCEDURE IF EXISTS createTable//
CREATE PROCEDURE createTable()
BEGIN
    DECLARE i INT;
    SET i = 0;
    WHILE i<25 DO
        SET @create_pay_info_table = CONCAT(
                'INSERT INTO pay_info_', i, '
            (SELECT * FROM mall4cloud_payment.`pay_info` WHERE (SUBSTRING(pay_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_pay_info_table FROM @create_pay_info_table;
        EXECUTE create_pay_info_table;

        SET @create_refund_info_table = CONCAT(
                'INSERT INTO refund_info_', i, '
            (SELECT * FROM mall4cloud_payment.`refund_info` WHERE (SUBSTRING(refund_id, -3) + 0) % 50 = ', i, ' )'
            );
        PREPARE create_refund_info_table FROM @create_refund_info_table;
        EXECUTE create_refund_info_table;

        SET i = i+1;
    END WHILE;
END//
CALL createTable()//
DELIMITER ;

# ============================== 6.修改shardingsphere、canal配置 ==============================
# 1.修改shardingsphere配置，具体参考mall4cloud-doc文档/开发环境搭建/中间件docker-compse一键安装/shardingsphere/conf

# 2.修改canal配置
# 修改canal下/conf/example/instance.properties文件中的canal.instance.filter.regex，替换成下述内容
# canal.instance.filter.regex=mall4cloud_product.spu:*,mall4cloud_product.category:*,mall4cloud_product.brand:*,mall4cloud_product.spu_tag_reference:*,mall4cloud_admin.shop_detail:*,mall4cloud_product.spu_extension:*,mall4cloud_product.sku:*,mall4cloud_product.sku_stock:*,mall4cloud_marketing.distribution_spu:*,mall4cloud_order+.order_[0-9]+:*,mall4cloud_order+.order_refund_[0-9]+:*,mall4cloud_order+.purchase_order_[0-9]+:*,mall4cloud_order+.order_invoice_[0-9]+:*,mall4cloud_order+.allot_order_[0-9]+:*,\
# 修改后重启canal

# ============================== 7.删除总表中数据 ==============================
# 确保6.7.执行 成功 执行一次后，检查是否数据已经同步到各个分表中去，再执行下面的sql
USE mall4cloud_order;
DROP TABLE IF EXISTS `allot_order`;
DROP TABLE IF EXISTS `allot_order_item`;
DROP TABLE IF EXISTS `delivery_order`;
DROP TABLE IF EXISTS `delivery_order_item`;
DROP TABLE IF EXISTS `order`;
DROP TABLE IF EXISTS `order_addr`;
DROP TABLE IF EXISTS `order_invoice`;
DROP TABLE IF EXISTS `order_item`;
DROP TABLE IF EXISTS `order_item_lang`;
DROP TABLE IF EXISTS `order_pre_sale_info`;
DROP TABLE IF EXISTS `order_refund`;
DROP TABLE IF EXISTS `order_refund_addr`;
DROP TABLE IF EXISTS `order_refund_intervention`;
DROP TABLE IF EXISTS `order_refund_settlement`;
DROP TABLE IF EXISTS `order_self_station`;
DROP TABLE IF EXISTS `order_settlement`;
DROP TABLE IF EXISTS `order_virtual_info`;
DROP TABLE IF EXISTS `purchase_order`;
DROP TABLE IF EXISTS `purchase_order_addr`;
DROP TABLE IF EXISTS `purchase_order_item`;
DROP TABLE IF EXISTS `purchase_order_item_lang`;
DROP TABLE IF EXISTS `purchase_order_lang`;

USE mall4cloud_payment;
DROP TABLE IF EXISTS `pay_info`;
DROP TABLE IF EXISTS `refund_info`;