create table if not exists ego.sys_config
(
    config_id
    varchar
(
    64
) not null comment '参数主键'
    primary key,
    config_name varchar
(
    100
) default '' null comment '参数名称',
    config_key varchar
(
    100
) default '' null comment '参数键名',
    config_value varchar
(
    500
) default '' null comment '参数键值',
    config_type  char         default 'N' null comment '系统内置（Y是 N否）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) null comment '备注'
    )
    comment '参数配置表' charset = utf8mb3;

create table if not exists ego.sys_dept
(
    dept_id
    varchar
(
    64
) not null comment '部门id'
    primary key,
    parent_id   varchar(64) default '0' null comment '父部门id',
    ancestors varchar
(
    50
) default '' null comment '祖级列表',
    dept_name varchar
(
    30
) default '' null comment '部门名称',
    order_num int default 0 null comment '显示顺序',
    leader varchar
(
    20
) null comment '负责人',
    phone varchar
(
    11
) null comment '联系电话',
    email varchar
(
    50
) null comment '邮箱',
    status      char        default '0' null comment '部门状态（0正常 1停用）',
    del_flag    char        default '0' null comment '删除标志（0代表存在 2代表删除）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间'
    )
    comment '部门表' charset = utf8mb3;

create table if not exists ego.sys_dict_data
(
    dict_code
    varchar
(
    64
) not null comment '字典编码'
    primary key,
    dict_sort int default 0 null comment '字典排序',
    dict_label varchar
(
    100
) default '' null comment '字典标签',
    dict_value varchar
(
    100
) default '' null comment '字典键值',
    dict_type varchar
(
    100
) default '' null comment '字典类型',
    css_class varchar
(
    100
) null comment '样式属性（其他样式扩展）',
    list_class varchar
(
    100
) null comment '表格回显样式',
    is_default  char         default 'N' null comment '是否默认（Y是 N否）',
    status      char         default '0' null comment '状态（0正常 1停用）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) null comment '备注'
    )
    comment '字典数据表' charset = utf8mb3;

create table if not exists ego.sys_dict_type
(
    dict_id
    varchar
(
    64
) not null comment '字典主键'
    primary key,
    dict_name varchar
(
    100
) default '' null comment '字典名称',
    dict_type varchar
(
    100
) default '' null comment '字典类型',
    status      char         default '0' null comment '状态（0正常 1停用）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) null comment '备注',
    constraint dict_type
    unique
(
    dict_type
)
    )
    comment '字典类型表' charset = utf8mb3;

create table if not exists ego.sys_file
(
    id
    varchar
(
    64
) not null comment '主键'
    primary key,
    file_name varchar
(
    128
) not null comment '文件名称',
    file_type varchar
(
    32
) null comment '文件类型',
    file_size bigint null comment '文件大小',
    file_key varchar
(
    128
) null comment '文件Key',
    type varchar
(
    4
) null comment '业务类型',
    business_id varchar
(
    64
) null comment '业务主键',
    business_type varchar
(
    32
) null comment '业务类型',
    del_flag      varchar(32) default '0' null comment '是否删除',
    revision int default 0 null comment '乐观锁',
    create_by varchar
(
    32
) null comment '创建人',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    32
) null comment '更新人',
    update_time datetime null comment '更新时间'
    )
    comment 'sys_file 文件表' charset = utf8mb3;

create index businessId_index
    on ego.sys_file (business_id);

create table if not exists ego.sys_job
(
    job_id          varchar(64)                    not null comment '任务ID',
    job_name        varchar(64)  default ''        not null comment '任务名称',
    job_group       varchar(64)  default 'DEFAULT' not null comment '任务组名',
    invoke_target   varchar(500)                   not null comment '调用目标字符串',
    cron_expression varchar
(
    255
) default '' null comment 'cron执行表达式',
    misfire_policy varchar
(
    20
) default '3' null comment '计划执行错误策略（1立即执行 2执行一次 3放弃执行）',
    concurrent char default '1' null comment '是否并发执行（0允许 1禁止）',
    status char default '0' null comment '状态（0正常 1暂停）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) default '' null comment '备注信息',
    primary key (job_id, job_name, job_group)
    )
    comment '定时任务调度表' charset = utf8mb3;

create table if not exists ego.sys_job_log
(
    job_log_id
    varchar
(
    64
) not null comment '任务日志ID'
    primary key,
    job_name varchar
(
    64
) not null comment '任务名称',
    job_group varchar
(
    64
) not null comment '任务组名',
    invoke_target varchar
(
    500
) not null comment '调用目标字符串',
    job_message varchar
(
    500
) null comment '日志信息',
    status         char          default '0' null comment '执行状态（0正常 1失败）',
    exception_info varchar
(
    2000
) default '' null comment '异常信息',
    create_time datetime null comment '创建时间'
    )
    comment '定时任务调度日志表' charset = utf8mb3;

create table if not exists ego.sys_logininfor
(
    info_id
    varchar
(
    64
) not null comment '访问ID'
    primary key,
    user_name varchar
(
    50
) default '' null comment '用户账号',
    ipaddr varchar
(
    128
) default '' null comment '登录IP地址',
    login_location varchar
(
    255
) default '' null comment '登录地点',
    browser varchar
(
    50
) default '' null comment '浏览器类型',
    os varchar
(
    50
) default '' null comment '操作系统',
    status         char          default '0' null comment '登录状态（0成功 1失败）',
    msg varchar
(
    1024
) default '' null comment '提示消息',
    login_time datetime null comment '访问时间'
    )
    comment '系统访问记录' charset = utf8mb3;

create table if not exists ego.sys_menu
(
    menu_id
    varchar
(
    64
) not null comment '菜单ID'
    primary key,
    menu_name varchar
(
    50
) not null comment '菜单名称',
    parent_id   varchar(64)  default '0' null comment '父菜单ID',
    order_num int default 0 null comment '显示顺序',
    path varchar
(
    200
) default '' null comment '路由地址',
    component varchar
(
    255
) null comment '组件路径',
    query varchar
(
    255
) null comment '路由参数',
    is_frame    char(2)      default '1' null comment '是否为外链（0是 1否）',
    is_cache    char(2)      default '0' null comment '是否缓存（0缓存 1不缓存）',
    menu_type char default '' null comment '菜单类型（M目录 C菜单 F按钮）',
    visible     char         default '0' null comment '菜单状态（0显示 1隐藏）',
    status      char         default '0' null comment '菜单状态（0正常 1停用）',
    perms varchar
(
    100
) null comment '权限标识',
    icon        varchar(100) default '#' null comment '菜单图标',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) default '' null comment '备注'
    )
    comment '菜单权限表' charset = utf8mb3;

create table if not exists ego.sys_notice
(
    notice_id
    varchar
(
    64
) not null comment '公告ID'
    primary key,
    notice_title varchar
(
    50
) not null comment '公告标题',
    notice_type char not null comment '公告类型（1通知 2公告）',
    notice_content longtext null comment '公告内容',
    status         char        default '0' null comment '公告状态（0正常 1关闭）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    255
) null comment '备注'
    )
    comment '通知公告表' charset = utf8mb3;

create table if not exists ego.sys_oper_log
(
    oper_id
    varchar
(
    64
) not null comment '日志主键'
    primary key,
    title          varchar(50)   default '' null comment '模块标题',
    business_type int default 0 null comment '业务类型（0其它 1新增 2修改 3删除）',
    method         varchar(100)  default '' null comment '方法名称',
    request_method varchar(64)   default '' null comment '请求方式',
    operator_type int default 0 null comment '操作类别（0其它 1后台用户 2手机端用户）',
    oper_name      varchar(50)   default '' null comment '操作人员',
    dept_name      varchar(50)   default '' null comment '部门名称',
    oper_url       varchar(255)  default '' null comment '请求URL',
    oper_ip        varchar(128)  default '' null comment '主机地址',
    oper_location  varchar(255)  default '' null comment '操作地点',
    oper_param     varchar(2000) default '' null comment '请求参数',
    json_result    varchar(2000) default '' null comment '返回参数',
    status int default 0 null comment '操作状态（0正常 1异常）',
    error_msg      varchar(2000) default '' null comment '错误消息',
    oper_time datetime null comment '操作时间'
    )
    comment '操作日志记录' charset = utf8mb3;

create table if not exists ego.sys_post
(
    post_id
    varchar
(
    64
) not null comment '岗位ID'
    primary key,
    post_code varchar
(
    64
) not null comment '岗位编码',
    post_name varchar
(
    50
) not null comment '岗位名称',
    post_sort int not null comment '显示顺序',
    status char not null comment '状态（0正常 1停用）',
    create_by   varchar(64) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by   varchar(64) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) null comment '备注'
    )
    comment '岗位信息表' charset = utf8mb3;

create table if not exists ego.sys_role
(
    role_id
    varchar
(
    64
) not null comment '角色ID'
    primary key,
    role_name varchar
(
    30
) not null comment '角色名称',
    role_key varchar
(
    100
) not null comment '角色权限字符串',
    role_sort int not null comment '显示顺序',
    data_scope          char        default '1' null comment '数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）',
    menu_check_strictly tinyint(1)  default 1   null comment '菜单树选择项是否关联显示',
    dept_check_strictly tinyint(1)  default 1   null comment '部门树选择项是否关联显示',
    status char not null comment '角色状态（0正常 1停用）',
    del_flag            char        default '0' null comment '删除标志（0代表存在 2代表删除）',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) null comment '备注'
    )
    comment '角色信息表' charset = utf8mb3;

create table if not exists ego.sys_role_dept
(
    role_id varchar(64) not null comment '角色ID',
    dept_id varchar(64) not null comment '部门ID',
    primary key (role_id, dept_id)
    )
    comment '角色和部门关联表' charset = utf8mb3;

create table if not exists ego.sys_role_menu
(
    role_id varchar(64) not null comment '角色ID',
    menu_id varchar(64) not null comment '菜单ID',
    primary key (role_id, menu_id)
    )
    comment '角色和菜单关联表' charset = utf8mb3;

create table if not exists ego.sys_sequence
(
    table_name varchar(32) not null comment '表名',
    seq        int         not null comment '序列',
    prefix     varchar(32) not null comment '前缀',
    primary key (table_name, seq, prefix)
    )
    comment '系统序列表' charset = utf8mb3;

create table if not exists ego.sys_user
(
    user_id
    varchar
(
    64
) not null comment '用户ID'
    primary key,
    dept_id varchar
(
    64
) null comment '部门ID',
    user_name varchar
(
    30
) not null comment '用户账号',
    nick_name varchar
(
    30
) not null comment '用户昵称',
    user_type       varchar(2)   default '00' null comment '用户类型（00系统用户）',
    email varchar
(
    50
) default '' null comment '用户邮箱',
    phone_number varchar
(
    11
) default '' null comment '手机号码',
    solt int null comment '排序',
    gender char default '0' null comment '用户性别（0男 1女 2未知）',
    avatar varchar
(
    100
) default '' null comment '头像地址',
    pass_word varchar
(
    100
) default '' null comment '密码',
    status char default '0' null comment '帐号状态（0正常 1停用）',
    del_flag char default '0' null comment '删除标志（0代表存在 2代表删除）',
    login_ip varchar
(
    128
) default '' null comment '最后登录IP',
    login_date datetime null comment '最后登录时间',
    resource_invoke varchar
(
    255
) null comment '资源来源映射，多个用,分割',
    create_by varchar
(
    64
) default '' null comment '创建者',
    create_time datetime null comment '创建时间',
    update_by varchar
(
    64
) default '' null comment '更新者',
    update_time datetime null comment '更新时间',
    remark varchar
(
    500
) null comment '备注',
    select_key varchar
(
    64
) null comment '动态验证'
    )
    comment '用户信息表' charset = utf8mb3;

create table if not exists ego.sys_user_post
(
    user_id varchar(64) not null comment '用户ID',
    post_id varchar(64) not null comment '岗位ID',
    primary key (user_id, post_id)
    )
    comment '用户与岗位关联表' charset = utf8mb3;

create table if not exists ego.sys_user_role
(
    user_id varchar(64) not null comment '用户ID',
    role_id varchar(64) not null comment '角色ID',
    primary key (user_id, role_id)
    )
    comment '用户和角色关联表' charset = utf8mb3;

create
definer = root@`%` function ego.CURRVAL(seq_name varchar(30)) returns varchar(50) deterministic
BEGIN
    DECLARE
seq_val INT;
    DECLARE
prefix_val VARCHAR(32);
SELECT seq, prefix
INTO seq_val, prefix_val
FROM sys_sequence
WHERE table_name = seq_name;
RETURN concat(prefix_val, LPAD(seq_val, 10, '0'));
END;

create
definer = root@`%` function ego.NEXTVAL(seq_name varchar(30)) returns varchar(30) deterministic
BEGIN
UPDATE sys_sequence
SET SEQ = SEQ + 1
WHERE TABLE_NAME = seq_name;
RETURN CURRVAL(seq_name);
END;
