-- =====================================================
-- 支付结算（商户结算配置 + 微信分账）数据库表
-- 模块：business-finance / settlement
-- 版本：1.0
-- 创建时间：2026-06-11
-- 说明：商户结算配置、分账单、分账接收方、分账日志；扩展支付单结算字段
-- 基础字段：id, create_by, create_date, update_by, update_date, del_flag, remarks, tenant_code, tenant_id
-- =====================================================

-- ----
-- 1. 商户结算配置
-- ----
CREATE TABLE IF NOT EXISTS `biz_merchant_settle_config` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',

    `merchant_tenant_id` VARCHAR(64) NOT NULL COMMENT '商户租户ID（与商城商品 tenant 一致）',
    `settle_mode` VARCHAR(32) NOT NULL DEFAULT 'PLATFORM_COLLECT' COMMENT '结算模式：PLATFORM_COLLECT-平台代收 WECHAT_PROFIT_SHARING-微信分账',
    `commission_rate` DECIMAL(5,4) NOT NULL DEFAULT 0.0000 COMMENT '平台佣金比例（0~1），未配为0',
    `sub_mch_id` VARCHAR(32) DEFAULT NULL COMMENT '微信特约子商户号（冗余，可运行时查进件）',
    `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-禁用 1-启用',

    `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    `create_date` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    `update_date` DATETIME DEFAULT NULL COMMENT '更新时间',
    `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标记：0-正常 1-删除',
    `remarks` VARCHAR(255) DEFAULT NULL COMMENT '备注信息',
    `tenant_code` VARCHAR(64) DEFAULT NULL COMMENT '租户编码',
    `tenant_id` VARCHAR(64) DEFAULT NULL COMMENT '租户ID',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_merchant_tenant_id` (`merchant_tenant_id`),
    KEY `idx_settle_mode` (`settle_mode`),
    KEY `idx_status` (`status`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_create_date` (`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='商户结算配置';

-- ----
-- 2. 分账单（按商城子单）
-- ----
CREATE TABLE IF NOT EXISTS `biz_profit_sharing_order` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',

    `sharing_no` VARCHAR(64) NOT NULL COMMENT '分账请求单号（商户侧唯一）',
    `finance_pay_order_id` VARCHAR(64) NOT NULL COMMENT '财务支付单ID',
    `pay_batch_id` VARCHAR(64) DEFAULT NULL COMMENT '商城合并支付批次ID',
    `mall_order_id` VARCHAR(64) NOT NULL COMMENT '商城子订单ID',
    `biz_scene` VARCHAR(32) NOT NULL COMMENT '业务场景：MALL_ORDER 等',
    `merchant_tenant_id` VARCHAR(64) NOT NULL COMMENT '子单所属商户租户ID',
    `sub_mch_id` VARCHAR(32) DEFAULT NULL COMMENT '分账接收方子商户号',
    `transaction_id` VARCHAR(128) DEFAULT NULL COMMENT '微信 transaction_id',
    `out_trade_no` VARCHAR(64) DEFAULT NULL COMMENT '微信 out_trade_no',
    `pay_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '锁定支付基数（元，含运费）',
    `commission_rate` DECIMAL(5,4) NOT NULL DEFAULT 0.0000 COMMENT '锁定佣金比例',
    `commission_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '平台佣金金额（元）',
    `merchant_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '商户分账金额（元）',
    `sharing_amount_fen` INT NOT NULL DEFAULT 0 COMMENT '实际请求分账金额（分）',
    `status` VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT '状态：PENDING-待分账 PROCESSING-处理中 SUCCESS-成功 FAIL-失败 FINISHED-已完结',
    `wx_order_id` VARCHAR(64) DEFAULT NULL COMMENT '微信分账单号',
    `retry_count` INT NOT NULL DEFAULT 0 COMMENT '重试次数',
    `next_retry_time` DATETIME DEFAULT NULL COMMENT '下次重试时间',
    `finish_status` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已调用完结分账：0-否 1-是',
    `sharing_time` DATETIME DEFAULT NULL COMMENT '分账成功时间',
    `error_code` VARCHAR(64) DEFAULT NULL COMMENT '渠道错误码',
    `error_msg` VARCHAR(500) DEFAULT NULL COMMENT '渠道错误说明',
    `organize_id` VARCHAR(64) DEFAULT NULL COMMENT '组织ID',

    `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    `create_date` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    `update_date` DATETIME DEFAULT NULL COMMENT '更新时间',
    `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标记：0-正常 1-删除',
    `remarks` VARCHAR(255) DEFAULT NULL COMMENT '备注信息',
    `tenant_code` VARCHAR(64) DEFAULT NULL COMMENT '租户编码',
    `tenant_id` VARCHAR(64) DEFAULT NULL COMMENT '租户ID',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_sharing_no` (`sharing_no`),
    KEY `idx_finance_pay_order_id` (`finance_pay_order_id`),
    KEY `idx_pay_batch_id` (`pay_batch_id`),
    KEY `idx_mall_order_id` (`mall_order_id`),
    KEY `idx_merchant_tenant_id` (`merchant_tenant_id`),
    KEY `idx_transaction_id` (`transaction_id`),
    KEY `idx_status` (`status`),
    KEY `idx_next_retry_time` (`next_retry_time`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_create_date` (`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='微信分账单';

-- ----
-- 3. 分账接收方明细
-- ----
CREATE TABLE IF NOT EXISTS `biz_profit_sharing_receiver` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',

    `profit_sharing_order_id` VARCHAR(64) NOT NULL COMMENT '分账单ID',
    `receiver_type` VARCHAR(32) NOT NULL COMMENT '接收方类型：MERCHANT_ID 等',
    `receiver_account` VARCHAR(64) NOT NULL COMMENT '接收方账号（如 sub_mch_id）',
    `amount_fen` INT NOT NULL DEFAULT 0 COMMENT '分账金额（分）',
    `description` VARCHAR(128) DEFAULT NULL COMMENT '分账描述',
    `result` VARCHAR(32) DEFAULT NULL COMMENT '结果：PENDING-待处理 SUCCESS-成功 FAIL-失败',
    `wx_detail_id` VARCHAR(64) DEFAULT NULL COMMENT '微信分账明细单号',
    `fail_reason` VARCHAR(500) DEFAULT NULL COMMENT '失败原因',

    `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    `create_date` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    `update_date` DATETIME DEFAULT NULL COMMENT '更新时间',
    `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标记：0-正常 1-删除',
    `remarks` VARCHAR(255) DEFAULT NULL COMMENT '备注信息',
    `tenant_code` VARCHAR(64) DEFAULT NULL COMMENT '租户编码',
    `tenant_id` VARCHAR(64) DEFAULT NULL COMMENT '租户ID',

    PRIMARY KEY (`id`),
    KEY `idx_profit_sharing_order_id` (`profit_sharing_order_id`),
    KEY `idx_receiver_account` (`receiver_account`),
    KEY `idx_result` (`result`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_create_date` (`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='分账接收方明细';

-- ----
-- 4. 分账操作日志
-- ----
CREATE TABLE IF NOT EXISTS `biz_profit_sharing_log` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',

    `profit_sharing_order_id` VARCHAR(64) NOT NULL COMMENT '分账单ID',
    `action` VARCHAR(32) NOT NULL COMMENT '动作：REQUEST-请求分账 QUERY-查询 RETRY-重试 FINISH-完结分账',
    `request_body` TEXT COMMENT '请求报文',
    `response_body` TEXT COMMENT '响应报文',
    `success_flag` TINYINT NOT NULL DEFAULT 0 COMMENT '是否成功：0-否 1-是',
    `error_msg` VARCHAR(500) DEFAULT NULL COMMENT '错误说明',

    `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    `create_date` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    `update_date` DATETIME DEFAULT NULL COMMENT '更新时间',
    `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标记：0-正常 1-删除',
    `remarks` VARCHAR(255) DEFAULT NULL COMMENT '备注信息',
    `tenant_code` VARCHAR(64) DEFAULT NULL COMMENT '租户编码',
    `tenant_id` VARCHAR(64) DEFAULT NULL COMMENT '租户ID',

    PRIMARY KEY (`id`),
    KEY `idx_profit_sharing_order_id` (`profit_sharing_order_id`),
    KEY `idx_action` (`action`),
    KEY `idx_success_flag` (`success_flag`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_create_date` (`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='分账操作日志';

-- ----
-- 5. 扩展财务支付单（结算追溯）
-- ----
ALTER TABLE `biz_finance_pay_order`
    ADD COLUMN `settle_mode` VARCHAR(32) DEFAULT NULL COMMENT '结算模式：PLATFORM_COLLECT、WECHAT_PROFIT_SHARING' AFTER `pay_type`,
    ADD COLUMN `need_profit_sharing` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '下单时是否标记微信分账：0-否 1-是' AFTER `settle_mode`;
