| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- -- 订单客户/商家结算模型升级
- -- 1) 订单增加客户/商家结算状态字段
- -- 2) 新增客户结算主表/明细表及历史表
- -- 3) 新增供应商结算主表/明细表及历史表
- START TRANSACTION;
- -- =========================
- -- 1. 订单表扩展
- -- =========================
- ALTER TABLE biz_order
- ADD COLUMN client_settlement_status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '客户结算状态: pending/settled' AFTER payment_method,
- ADD COLUMN supplier_settlement_status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '供应商结算状态: pending/settled' AFTER client_settlement_status,
- ADD COLUMN client_settlement_at DATETIME NULL COMMENT '客户结算时间' AFTER supplier_settlement_status,
- ADD COLUMN supplier_settlement_at DATETIME NULL COMMENT '供应商结算时间' AFTER client_settlement_at;
- ALTER TABLE biz_order_his
- ADD COLUMN client_settlement_status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '客户结算状态: pending/settled' AFTER payment_method,
- ADD COLUMN supplier_settlement_status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '供应商结算状态: pending/settled' AFTER client_settlement_status,
- ADD COLUMN client_settlement_at DATETIME NULL COMMENT '客户结算时间' AFTER supplier_settlement_status,
- ADD COLUMN supplier_settlement_at DATETIME NULL COMMENT '供应商结算时间' AFTER client_settlement_at;
- CREATE INDEX idx_biz_order_client_settlement ON biz_order (is_del, client_settlement_status, payment_method, create_at);
- CREATE INDEX idx_biz_order_supplier_settlement ON biz_order (is_del, supplier_settlement_status, create_at);
- -- 线上支付订单默认客户已结算
- UPDATE biz_order
- SET client_settlement_status = 'settled',
- client_settlement_at = IFNULL(payment_time, update_at),
- update_at = NOW()
- WHERE is_del = 0
- AND (payment_method = 'online' OR payment_method = 'wechat')
- AND client_settlement_status <> 'settled';
- -- =========================
- -- 2. 客户结算表
- -- =========================
- CREATE TABLE IF NOT EXISTS ord_client_settlement (
- id VARCHAR(32) PRIMARY KEY COMMENT '主键ID',
- settlement_no VARCHAR(50) NOT NULL UNIQUE COMMENT '结算单号',
- client_id VARCHAR(32) NOT NULL COMMENT '客户ID',
- client_name VARCHAR(100) NULL COMMENT '客户名称快照',
- order_count INT NOT NULL DEFAULT 0 COMMENT '订单数量',
- total_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '结算总金额',
- voucher_urls TEXT NULL COMMENT '结算凭证URL(JSON数组)',
- remark VARCHAR(500) NULL COMMENT '结算备注',
- settlement_at DATETIME NOT NULL COMMENT '结算时间',
- status VARCHAR(20) NOT NULL DEFAULT 'done' COMMENT '结算单状态',
- is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
- create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- KEY idx_ocs_client (client_id),
- KEY idx_ocs_settlement_at (settlement_at),
- KEY idx_ocs_create_at (create_at),
- KEY idx_ocs_is_del (is_del)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户结算主表';
- CREATE TABLE IF NOT EXISTS ord_client_settlement_item (
- id VARCHAR(32) PRIMARY KEY COMMENT '主键ID',
- settlement_id VARCHAR(32) NOT NULL COMMENT '结算主表ID',
- order_id VARCHAR(32) NOT NULL COMMENT '订单ID',
- order_no VARCHAR(50) NOT NULL COMMENT '订单号',
- client_id VARCHAR(32) NOT NULL COMMENT '客户ID',
- order_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '订单结算金额',
- is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
- create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- KEY idx_ocsi_settlement_id (settlement_id),
- KEY idx_ocsi_order_id (order_id),
- KEY idx_ocsi_client_id (client_id),
- KEY idx_ocsi_is_del (is_del)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户结算明细表';
- CREATE TABLE IF NOT EXISTS ord_client_settlement_his (
- id VARCHAR(32) NOT NULL COMMENT '主键ID',
- settlement_no VARCHAR(50) NOT NULL COMMENT '结算单号',
- client_id VARCHAR(32) NOT NULL COMMENT '客户ID',
- client_name VARCHAR(100) NULL COMMENT '客户名称快照',
- order_count INT NOT NULL DEFAULT 0 COMMENT '订单数量',
- total_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '结算总金额',
- voucher_urls TEXT NULL COMMENT '结算凭证URL(JSON数组)',
- remark VARCHAR(500) NULL COMMENT '结算备注',
- settlement_at DATETIME NOT NULL COMMENT '结算时间',
- status VARCHAR(20) NOT NULL DEFAULT 'done' COMMENT '结算单状态',
- create_at DATETIME NOT NULL COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NULL COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- his_create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户结算主表历史';
- CREATE TABLE IF NOT EXISTS ord_client_settlement_item_his (
- id VARCHAR(32) NOT NULL COMMENT '主键ID',
- settlement_id VARCHAR(32) NOT NULL COMMENT '结算主表ID',
- order_id VARCHAR(32) NOT NULL COMMENT '订单ID',
- order_no VARCHAR(50) NOT NULL COMMENT '订单号',
- client_id VARCHAR(32) NOT NULL COMMENT '客户ID',
- order_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '订单结算金额',
- create_at DATETIME NOT NULL COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NULL COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- his_create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户结算明细历史表';
- -- =========================
- -- 3. 供应商结算表
- -- =========================
- CREATE TABLE IF NOT EXISTS ord_supplier_settlement (
- id VARCHAR(32) PRIMARY KEY COMMENT '主键ID',
- settlement_no VARCHAR(50) NOT NULL UNIQUE COMMENT '结算单号',
- supplier_id VARCHAR(32) NOT NULL COMMENT '供应商ID',
- supplier_name VARCHAR(100) NULL COMMENT '供应商名称快照',
- order_count INT NOT NULL DEFAULT 0 COMMENT '订单数量',
- total_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '结算总金额',
- voucher_urls TEXT NULL COMMENT '结算凭证URL(JSON数组)',
- remark VARCHAR(500) NULL COMMENT '结算备注',
- settlement_at DATETIME NOT NULL COMMENT '结算时间',
- status VARCHAR(20) NOT NULL DEFAULT 'done' COMMENT '结算单状态',
- is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
- create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- KEY idx_oss_supplier (supplier_id),
- KEY idx_oss_settlement_at (settlement_at),
- KEY idx_oss_create_at (create_at),
- KEY idx_oss_is_del (is_del)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商结算主表';
- CREATE TABLE IF NOT EXISTS ord_supplier_settlement_item (
- id VARCHAR(32) PRIMARY KEY COMMENT '主键ID',
- settlement_id VARCHAR(32) NOT NULL COMMENT '结算主表ID',
- order_id VARCHAR(32) NOT NULL COMMENT '订单ID',
- order_no VARCHAR(50) NOT NULL COMMENT '订单号',
- supplier_id VARCHAR(32) NOT NULL COMMENT '供应商ID',
- order_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '订单结算金额',
- is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
- create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- KEY idx_ossi_settlement_id (settlement_id),
- KEY idx_ossi_order_id (order_id),
- KEY idx_ossi_supplier_id (supplier_id),
- KEY idx_ossi_is_del (is_del)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商结算明细表';
- CREATE TABLE IF NOT EXISTS ord_supplier_settlement_his (
- id VARCHAR(32) NOT NULL COMMENT '主键ID',
- settlement_no VARCHAR(50) NOT NULL COMMENT '结算单号',
- supplier_id VARCHAR(32) NOT NULL COMMENT '供应商ID',
- supplier_name VARCHAR(100) NULL COMMENT '供应商名称快照',
- order_count INT NOT NULL DEFAULT 0 COMMENT '订单数量',
- total_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '结算总金额',
- voucher_urls TEXT NULL COMMENT '结算凭证URL(JSON数组)',
- remark VARCHAR(500) NULL COMMENT '结算备注',
- settlement_at DATETIME NOT NULL COMMENT '结算时间',
- status VARCHAR(20) NOT NULL DEFAULT 'done' COMMENT '结算单状态',
- create_at DATETIME NOT NULL COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NULL COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- his_create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商结算主表历史';
- CREATE TABLE IF NOT EXISTS ord_supplier_settlement_item_his (
- id VARCHAR(32) NOT NULL COMMENT '主键ID',
- settlement_id VARCHAR(32) NOT NULL COMMENT '结算主表ID',
- order_id VARCHAR(32) NOT NULL COMMENT '订单ID',
- order_no VARCHAR(50) NOT NULL COMMENT '订单号',
- supplier_id VARCHAR(32) NOT NULL COMMENT '供应商ID',
- order_amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '订单结算金额',
- create_at DATETIME NOT NULL COMMENT '创建时间',
- create_by VARCHAR(32) NULL COMMENT '创建人ID',
- create_name VARCHAR(100) NULL COMMENT '创建人姓名',
- update_at DATETIME NULL COMMENT '修改时间',
- update_by VARCHAR(32) NULL COMMENT '修改人ID',
- his_create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商结算明细历史表';
- COMMIT;
|