create table audio_log
(
    id            bigint auto_increment
        primary key,
    ssid          varchar(64)   not null,
    name          varchar(64)   null comment '音频文件名称',
    duration      bigint        null comment '音频时长',
    voice_url     varchar(255)  null comment '音频地址',
    voice_text    json          null comment '音频文本（原文）',
    content       text          null comment '修改文本（用户对原文进行修改）',
    number        int           null comment '序号',
    voice_task_id varchar(64)   null comment '音频转文字任务id',
    voice_status  int default 0 null comment '音频转文字状态 0未转录 1转录中 2已转录 3转录失败',
    voice_time    datetime      null comment '音频转文字开始时间',
    status        int default 0 null comment '状态',
    create_time   datetime      null comment '创建时间',
    update_time   datetime      null comment '更新时间',
    fail_reason   varchar(5000) null comment '失败原因'
)
    comment '语音记录';

create index idx_ssid
    on audio_log (ssid);

create index idx_voice_task_id
    on audio_log (voice_task_id);

create table convert_text_log
(
    id            bigint auto_increment
        primary key,
    ssid          varchar(64)   not null,
    name          varchar(64)   null comment '音频文件名称',
    duration      bigint        null comment '音频时长',
    voice_url     varchar(255)  null comment '音频地址',
    voice_text    json          null comment '音频文本（原文）',
    content       text          null comment '修改文本（用户对原文进行修改）',
    number        int           null comment '序号',
    voice_task_id varchar(64)   null comment '音频转文字任务id',
    voice_status  int default 0 null comment '音频转文字状态 0未转录 1转录中 2已转录 3转录失败',
    voice_time    datetime      null comment '音频转文字开始时间',
    status        int default 0 null comment '状态',
    create_time   datetime      null comment '创建时间',
    update_time   datetime      null comment '更新时间',
    fail_reason   varchar(5000) null comment '失败原因'
)
    comment '音频转文字记录';

create index idx_ssid
    on convert_text_log (ssid);

create index idx_voice_task_id
    on convert_text_log (voice_task_id);

create table member_auth
(
    id              bigint auto_increment
        primary key,
    ssid            varchar(64)  not null,
    auth            varchar(255) not null,
    start_timestamp bigint       not null comment '生效开始时间戳',
    end_timestamp   bigint       not null comment '过期结束时间戳',
    create_time     datetime     not null,
    update_time     datetime     not null
);

create index idx_ssid
    on member_auth (ssid);

create table order_info
(
    id              bigint auto_increment
        primary key,
    out_trade_no    varchar(128) not null,
    ssid            varchar(64)  not null,
    device_id       varchar(64)  not null,
    phone           varchar(64)  null,
    item_id         bigint       not null,
    item_name       varchar(255) not null,
    original_amount bigint       not null,
    amount          bigint       not null,
    app_platform    int          not null,
    package_name    varchar(255) not null,
    channel_name    varchar(255) null,
    ip              varchar(255) null,
    create_time     datetime     not null,
    update_time     datetime     not null,
    pay_status      int          not null comment '-- 0:已创建 1:未支付 2:已支付 3:已关闭 4:已退款',
    status          int          not null
);

create index idx_out_trade_no
    on order_info (out_trade_no);

create index idx_ssid
    on order_info (ssid);

create table record_info
(
    id            bigint auto_increment
        primary key,
    ssid          varchar(64)      not null,
    name          varchar(64)      null comment '录音文件名称',
    caller        varchar(64)      null comment '主叫号码',
    callee        varchar(64)      null comment '被叫号码',
    duration      bigint default 0 null comment '时长',
    start_time    bigint           null comment '语音信箱开始时间戳',
    contact_id    varchar(64)      null comment '呼叫中心通话ID',
    status        int    default 0 not null comment '状态',
    record_url    varchar(255)     null comment '录音文件地址',
    record_text   json             null comment '录音文本',
    number        int    default 1 not null comment '序号',
    voice_task_id varchar(64)      null comment '录音转文字任务id',
    voice_status  int    default 0 null comment '录音转文字状态 0未转录 1转录中 2已转录 3转录失败',
    voice_time    datetime         null comment '录音转文字开始时间',
    create_time   datetime         null comment '创建时间',
    update_time   datetime         null comment '更新时间',
    fail_reason   varchar(5000)    null comment '失败原因',
    constraint idx_contact_id
        unique (contact_id),
    constraint idx_voice_task_id
        unique (voice_task_id)
)
    comment '通话记录';

create index idx_ssid
    on record_info (ssid);

create index idx_start_time
    on record_info (start_time);

create table upload_log
(
    id                bigint auto_increment
        primary key,
    ssid              varchar(64)   not null,
    cdn_host          varchar(255)  not null,
    file_key          varchar(1000) not null,
    original_filename varchar(255)  null,
    ip                varchar(255)  null,
    create_time       datetime      not null,
    update_time       datetime      not null,
    status            int           not null
);

create index idx_ssid
    on upload_log (ssid);