-- 批量付款账号级改造（2026-08-26）
-- 手工执行: psycopg2 连接 payment_platform_java 库
-- 幂等: 已存在列/索引则跳过

-- 1. 授权主体字段
ALTER TABLE pay_batch_authorize
    ADD COLUMN IF NOT EXISTS participant_name varchar(128),
    ADD COLUMN IF NOT EXISTS service_provider_id bigint;

-- 1b. 去企业化: 实体已无 enterprise_id 字段，INSERT 不含该列；原 NOT NULL 无默认值
--     会导致授权申请/批次创建落库失败（null value in column "enterprise_id"）→ 改为可空
ALTER TABLE pay_batch_authorize ALTER COLUMN enterprise_id DROP NOT NULL;
ALTER TABLE pay_batch_order     ALTER COLUMN enterprise_id DROP NOT NULL;

-- 2. 唯一索引改租户级（先删旧 enterprise 索引）
DROP INDEX IF EXISTS uk_batch_authorize_active;
-- 联调期存量数据若存在同租户同 participant 多行，先清理再建索引:
--   DELETE FROM pay_batch_authorize a USING pay_batch_authorize b
--   WHERE a.id < b.id AND a.tenant_id = b.tenant_id AND a.participant_id = b.participant_id
--     AND a.status <> 'UNBIND' AND b.status <> 'UNBIND';
CREATE UNIQUE INDEX uk_batch_authorize_active
    ON pay_batch_authorize (tenant_id, participant_id)
    WHERE status <> 'UNBIND';

-- 3. 批次冗余服务商
ALTER TABLE pay_batch_order
    ADD COLUMN IF NOT EXISTS service_provider_id bigint;
