-- =====================================================
-- 支付退款单（微信电商收付通退款）
-- 模块：business-finance / payrefund
-- 版本：1.0
-- 创建时间：2026-06-11
-- 说明：biz_pay_refund_order 记录每笔退款请求与渠道回执
-- 号段：主键 1926061420000000101 起（勿与其它 mock/seed 重叠）
-- =====================================================

CREATE TABLE IF NOT EXISTS `biz_pay_refund_order` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',

    `refund_no` VARCHAR(64) NOT NULL COMMENT '平台退款单号（业务侧唯一）',
    `out_refund_no` VARCHAR(64) NOT NULL COMMENT '商户退款单号（微信 out_refund_no）',
    `finance_pay_order_id` VARCHAR(64) NOT NULL COMMENT '财务支付单ID',
    `pay_batch_id` VARCHAR(64) DEFAULT NULL COMMENT '商城合并支付批次ID',
    `mall_order_id` VARCHAR(64) DEFAULT NULL COMMENT '商城子订单ID',
    `after_sale_id` VARCHAR(64) DEFAULT NULL COMMENT '关联售后单ID',
    `biz_scene` VARCHAR(32) NOT NULL COMMENT '业务场景：MALL_ORDER 等',
    `merchant_tenant_id` VARCHAR(64) DEFAULT NULL COMMENT '子单商户租户ID',
    `sub_mch_id` VARCHAR(32) DEFAULT NULL COMMENT '微信特约子商户号',
    `transaction_id` VARCHAR(64) DEFAULT NULL COMMENT '微信 transaction_id',
    `out_trade_no` VARCHAR(64) NOT NULL COMMENT '原支付商户单号 out_trade_no',
    `refund_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '本次退款金额（元）',
    `order_pay_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '原支付单总金额（元，微信 total）',
    `status` VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT '状态：PENDING-待发起 PROCESSING-处理中 SUCCESS-成功 FAIL-失败 CLOSED-关闭',
    `wx_refund_id` VARCHAR(64) DEFAULT NULL COMMENT '微信退款单号 refund_id',
    `reason` VARCHAR(255) DEFAULT NULL COMMENT '退款原因',
    `notify_url` VARCHAR(500) DEFAULT NULL COMMENT '退款结果回调地址',
    `refund_time` DATETIME DEFAULT NULL COMMENT '退款成功时间',
    `retry_count` INT NOT NULL DEFAULT 0 COMMENT '重试次数',
    `next_retry_time` DATETIME DEFAULT NULL COMMENT '下次重试时间',
    `error_code` VARCHAR(64) DEFAULT NULL COMMENT '渠道错误码',
    `error_msg` VARCHAR(500) DEFAULT NULL COMMENT '渠道错误说明',
    `raw_request` TEXT COMMENT '渠道请求原文',
    `raw_response` TEXT 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`),
    UNIQUE KEY `uk_refund_no` (`refund_no`),
    UNIQUE KEY `uk_out_refund_no` (`out_refund_no`),
    KEY `idx_finance_pay_order_id` (`finance_pay_order_id`),
    KEY `idx_mall_order_id` (`mall_order_id`),
    KEY `idx_after_sale_id` (`after_sale_id`),
    KEY `idx_status` (`status`),
    KEY `idx_create_date` (`create_date`),
    KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='支付退款单';
