alter table pay_order
    add agreement_no varchar(128) null comment '签约协议号';

create table pay_agreement
(
    id                    bigint auto_increment
        primary key,
    external_agreement_no varchar(128) not null comment '自定义商户签约号',
    agreement_no          varchar(128) null comment '商户签约号',
    period_type           varchar(32)  not null comment '周期类型 DAY:天  MONTH:月',
    period bigint not null comment '周期数',
    execute_time          datetime     not null comment '商家发起首次扣款的时间（非签约时间，而是第一次自动扣款时间）',
    next_execute_time     datetime     null comment '下次扣款时间',
    single_amount         bigint       null comment '单次扣款最大金额',
    total_amount          bigint       null comment '周期内允许扣款的总金额',
    sign_scene            varchar(128) null comment '签约场景',
    item_id               bigint       null comment '商品id',
    item_code             varchar(255) null comment '商品编号',
    item_name             varchar(255) null comment '商品名称',
    item_amount           bigint       null comment '商品价格',
    subscription_group    varchar(255) null comment '订阅组',
    ssid                  varchar(64)  null comment 'ssid',
    device_id             varchar(64)  null comment '设备id',
    phone                 varchar(64)  null comment '电话号码',
    app_platform          int          null comment '应用平台',
    package_name          varchar(255) null comment '应用包名',
    channel_name          varchar(255) null comment '渠道',
    pay_method            int(2)       null comment '支付方式',
    pay_platform          int(2)       null comment '支付平台',
    project_code          varchar(255) null comment '产品编号',
    ip                    varchar(255) null comment 'ip',
    pay_config_id         int          null comment '关联pay_config',
    out_trade_no          varchar(128) null comment '当前订单号',
    status                int          null comment '状态 1创建签约 2签约成功 3解约 4扣款失败',
    create_time           datetime     null comment '创建时间',
    update_time           datetime     null comment '更新时间'
)
    comment '支付签约表';

create index idx_create_time
    on pay_agreement (create_time);

create index idx_external_agreement_no
    on pay_agreement (external_agreement_no);

create index idx_next_execute_time
    on pay_agreement (next_execute_time);

create index idx_status
    on pay_agreement (status);