create table sys_dept_recharge
(
    id              int auto_increment comment '主键id'
        primary key,
    dept_id         int                                      null comment '组织机构ID',
    score           int            default 0                 not null comment '积分余额',
    balance         decimal(10, 2) default 0.00              not null comment '余额（元）',
    permissions     varchar(64)                              null comment '权限,多个逗号分隔',
    service_charge  decimal(5, 2)  default 0.00              not null comment '服务费率',
    overdraw_amount decimal(10, 2) default 0.00              not null comment '可透支金额',
    overdraw_score  int            default 0                 not null comment '可透支积分',
    del_flag        varchar(10)    default '0'               not null comment '是否删除',
    create_time     datetime       default CURRENT_TIMESTAMP null comment '创建时间',
    create_user     int                                      null comment '创建人',
    update_time     datetime                                 null comment '更新时间',
    update_user     int                                      null comment '更新人',
    version         int            default 0                 null,
    constraint sys_dept_recharge_dept_id_uindex
        unique (dept_id)
)
    comment '积分充值表' charset = utf8mb4;

create table sys_dept_recharge_record
(
    id               int auto_increment comment '主键id'
        primary key,
    recharge_id      int                                      null comment '积分充值表ID',
    dept_id          int                                      null comment '组织机构ID',
    relation_dept_id int                                      null comment '关联组织机构ID（关联操作对象）',
    change_score     int                                      not null comment '充值积分',
    change_amount    decimal(10, 2) default 0.00              not null comment '充值金额（元）',
    type             char(20)                                 not null comment '操作类型',
    current_score    int                                      not null comment '充值后积分余额',
    current_balance  decimal(10, 2) default 0.00              not null comment '充值后积分余额（元）',
    package_id       int                                      null comment '积分包id',
    package_type     varchar(32)                              null comment '积分包类型',
    del_flag         varchar(10)    default '0'               not null comment '是否删除',
    create_time      datetime       default CURRENT_TIMESTAMP null comment '创建时间',
    create_user      int                                      null comment '创建人'
)
    comment '积分充值/使用记录表' charset = utf8mb4;

create index sys_dept_recharge_record_dept_id_index
    on sys_dept_recharge_record (dept_id);



create table sys_dept_invoice
(
    id                      int auto_increment comment '主键id'
        primary key,
    dept_id                 int                                      null comment '组织机构ID',
    invoice_amount          decimal(10, 2) default 0.00              not null comment '开票金额（元）',
    relation_package_score  int            default 0                 not null comment '关联积分值',
    relation_package_number int            default 0                 not null comment '关联积分包个数',
    approval_status         varchar(10)    default 'PENDING'         not null comment '审核状态',
    approval_time           datetime                                 null comment '审核时间',
    invoice_type            char(10)                                 not null comment '发票类型',
    address                 varchar(64)                              null comment '邮寄地址',
    addressee_name          varchar(32)                              null comment '收件人姓名',
    addressee_phone         varchar(20)                              null comment '收件人手机号',
    del_flag                varchar(10)    default '0'               not null comment '是否删除',
    create_time             datetime       default CURRENT_TIMESTAMP null comment '创建时间',
    create_user             int                                      null comment '创建人',
    update_time             datetime                                 null comment '更新时间',
    update_user             int                                      null comment '更新人'
)
    comment '企业开票表' charset = utf8mb4;

create index sys_dept_invoice_dept_id_index
    on sys_dept_invoice (dept_id);


create table sys_dept_invoice_relation
(
    id             int auto_increment comment '主键id'
        primary key,
    invoice_id     int                                   null comment '企业开票表ID',
    dept_id        int                                   not null comment '发包企业id',
    package_id     int                                   not null comment '积分包id',
    invoice_status varchar(10) default 'PENDING'         not null comment '开票状态',
    invoice_time   datetime                              null comment '开票时间',
    del_flag       varchar(10) default '0'               not null comment '是否删除',
    create_time    datetime    default CURRENT_TIMESTAMP null comment '创建/申请时间',
    create_user    int                                   null comment '创建人',
    update_time    datetime                              null comment '更新时间',
    update_user    int                                   null comment '更新人',
    constraint sys_dept_invoice_relation_invoice_id_package_id_uindex
        unique (invoice_id, package_id)
)
    comment '企业开票关联表' charset = utf8mb4;

