-- 创建微信参数配置表
CREATE TABLE tb_wechat_config (
    id              BIGSERIAL PRIMARY KEY,
    name            VARCHAR(100)  NOT NULL,
    description     TEXT,
    provider_type   VARCHAR(20)   NOT NULL,
    is_active       BOOLEAN       NOT NULL DEFAULT FALSE,

    -- OAuth 公众号
    oa_app_id              VARCHAR(100)  NOT NULL DEFAULT '',
    oa_app_secret          VARCHAR(200)  NOT NULL DEFAULT '',
    oa_token               VARCHAR(200)  DEFAULT '',
    oa_aes_key             VARCHAR(200)  DEFAULT '',
    oa_oauth_redirect_url  VARCHAR(500)  DEFAULT '',

    -- OAuth 小程序
    miniapp_app_id         VARCHAR(100)  DEFAULT '',
    miniapp_app_secret     VARCHAR(200)  DEFAULT '',

    -- 支付-微信直连
    wx_mch_id              VARCHAR(100)  DEFAULT '',
    wx_api_v3_key          VARCHAR(200)  DEFAULT '',
    wx_api_v2_key          VARCHAR(200)  DEFAULT '',
    wx_cert_content        TEXT          DEFAULT '',
    wx_key_content         TEXT          DEFAULT '',
    wx_serial_no           VARCHAR(200)  DEFAULT '',
    wx_notify_url          VARCHAR(500)  DEFAULT '',

    -- 支付-富友
    fy_ins_cd              VARCHAR(50)   DEFAULT '',
    fy_mchnt_cd            VARCHAR(50)   DEFAULT '',
    fy_term_id             VARCHAR(50)   DEFAULT '',
    fy_private_key         TEXT          DEFAULT '',
    fy_public_key          TEXT          DEFAULT '',
    fy_api_url             VARCHAR(500)  DEFAULT '',
    fy_notify_url          VARCHAR(500)  DEFAULT '',

    -- 审计字段
    creator         BIGINT        NOT NULL DEFAULT 0,
    updater         BIGINT        NOT NULL DEFAULT 0,
    created_at      TIMESTAMPTZ   NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ   NOT NULL DEFAULT NOW(),
    deleted_at      TIMESTAMPTZ
);

CREATE INDEX idx_wechat_config_is_active ON tb_wechat_config(is_active) WHERE deleted_at IS NULL;
CREATE INDEX idx_wechat_config_provider_type ON tb_wechat_config(provider_type) WHERE deleted_at IS NULL;
CREATE INDEX idx_wechat_config_deleted_at ON tb_wechat_config(deleted_at);

COMMENT ON TABLE tb_wechat_config IS '微信参数配置表';
COMMENT ON COLUMN tb_wechat_config.name IS '配置名称';
COMMENT ON COLUMN tb_wechat_config.provider_type IS '支付渠道类型: wechat-微信直连, fuiou-富友';
COMMENT ON COLUMN tb_wechat_config.is_active IS '是否激活（全局唯一）';
