-- ----------------------------
-- 1、用户信息表
-- ----------------------------
drop table if exists sys_user;
create table sys_user
(
    user_id         bigint(20)  not null auto_increment comment '用户ID',
    user_name       varchar(32) not null comment '用户账号',
    nick_name       varchar(32) not null comment '用户昵称',
    email           varchar(64)  default '' comment '用户邮箱',
    telephone       varchar(16)  default '' comment '手机号码',
    sex             char(1)      default '2' comment '用户性别（1男 0女 2未知）',
    avatar          varchar(125) default '' comment '头像地址',
    password        varchar(256) default '' comment '密码',
    status          char(1)      default '1' comment '帐号状态（1正常 0停用）',
    del_flag        char(1)      default '0' comment '删除标志（1已删除 0未删除）',
    last_login_ip   varchar(128) default '' comment '最后登录IP',
    last_login_date datetime comment '最后登录时间',
    create_by       varchar(64)  default '' comment '创建者',
    create_time     datetime comment '创建时间',
    update_by       varchar(64)  default '' comment '更新者',
    update_time     datetime comment '更新时间',
    remark          varchar(512) default null comment '备注',
    primary key (user_id)
) engine = innodb
  auto_increment = 100 comment = '用户信息表';

-- ----------------------------
-- 初始化-用户信息表数据
-- ----------------------------
insert into sys_user
values (1, 'admin', '管理员', 'admin@s-privacy.com', '15888888888', '2', '',
        '$2a$10$qKk3odQF1j7D0lhaLf2wB.KzOmFY9zDtQpScsRLTy3qdHml9O3Gm.', '1', '0', '127.0.0.1', sysdate(), 'admin',
        sysdate(), '', null, '超级管理员');
insert into sys_user
values (2, 'pavis', '派维斯', 'pavis@s-privacy.com', '15666666666', '2', '',
        '$2a$10$qKk3odQF1j7D0lhaLf2wB.KzOmFY9zDtQpScsRLTy3qdHml9O3Gm.', '1', '0', '127.0.0.1', sysdate(), 'admin',
        sysdate(), '', null, '管理员');

-- ----------------------------
-- 2、角色信息表
-- ----------------------------
drop table if exists sys_role;
create table sys_role
(
    role_id     bigint(20)   not null auto_increment comment '角色ID',
    role_name   varchar(32)  not null comment '角色名称',
    role_key    varchar(128) not null comment '角色权限字符串',
    role_sort   int(4)       not null comment '显示顺序',
    status      char(1)      not null comment '角色状态（1正常 0停用）',
    del_flag    char(1)      default '0' comment '删除标志（0存在 1删除）',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default null comment '备注',
    primary key (role_id)
) engine = innodb
  auto_increment = 100 comment = '角色信息表';

-- ----------------------------
-- 初始化-角色信息表数据
-- ----------------------------
insert into sys_role
values ('1', '管理员', 'admin', 1, 1, 0, 'admin', sysdate(), '', null, '管理员');
insert into sys_role
values ('2', '普通用户', 'user', 2, 1, 0, 'admin', sysdate(), '', null, '普通用户');


-- ----------------------------
-- 3、菜单权限表
-- ----------------------------
drop table if exists sys_menu;
create table sys_menu
(
    menu_id     bigint(20)  not null auto_increment comment '菜单ID',
    menu_name   varchar(64) not null comment '菜单名称',
    parent_id   bigint(20)   default 0 comment '父菜单ID',
    parent_name varchar(64) not null comment '父菜单名称',
    order_num   int(4)       default 0 comment '显示顺序',
    path        varchar(256) default '' comment '路由地址',
    component   varchar(256) default null comment '组件路径',
    query       varchar(256) default null comment '路由参数',
    is_frame    int(1)       default 1 comment '是否为外链（1是 0否）',
    is_cache    int(1)       default 0 comment '是否缓存（1缓存 0不缓存）',
    menu_type   char(1)      default '' comment '菜单类型（F目录 M菜单 B按钮）',
    visible     char(1)      default 0 comment '菜单状态（1显示 0隐藏）',
    status      char(1)      default 0 comment '菜单状态（1正常 0停用）',
    perms       varchar(128) default null comment '权限标识',
    icon        varchar(128) default '#' comment '菜单图标',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default '' comment '备注',
    primary key (menu_id)
) engine = innodb
  auto_increment = 2000 comment = '菜单权限表';

-- ----------------------------
-- 4、用户和角色关联表  用户N-1角色
-- ----------------------------
drop table if exists sys_user_role;
create table sys_user_role
(
    user_id bigint(20) not null comment '用户ID',
    role_id bigint(20) not null comment '角色ID',
    primary key (user_id, role_id)
) engine = innodb comment = '用户和角色关联表';

-- ----------------------------
-- 初始化-用户和角色关联表数据
-- ----------------------------
insert into sys_user_role
values ('1', '1');
insert into sys_user_role
values ('2', '1');

select *
from sys_user
where user_name = 'admin';


-- ----------------------------
-- 5、文件表
-- ----------------------------
drop table if exists sys_file;
create table sys_file
(
    file_id       varchar(32) not null comment '文件ID',
    user_id       bigint(20)  not null comment '用户ID',
    name          varchar(64) comment '文件名称',
    original_name varchar(256) comment '文件原名',
    object_key    varchar(256) comment '文件在oss中的key值',
    url           varchar(256) comment '文件url地址',
    path          varchar(256) comment '文件路径',
    size          bigint(20) comment '文件大小',
    type          int comment '文件类型 0其他 1文档 2图片 3音频 4视频 -1文件夹',
    suffix        varchar(8) comment '文件后缀',
    icon          varchar(96) comment '图标',
    identifier    varchar(128) comment '文件md5值',
    is_dir        int          default 0 comment '是否是文件夹 1是 0不是',
    create_by     varchar(64)  default '' comment '创建者',
    create_time   datetime comment '创建时间',
    update_by     varchar(64)  default '' comment '更新者',
    update_time   datetime comment '更新时间',
    remark        varchar(512) default '' comment '备注',
    primary key (file_id)
) engine = innodb comment = '文件信息表';

drop table if exists sys_kb;
create table sys_kb
(
    kb_id       varchar(32) not null comment '知识库ID',
    user_id     bigint(20)  not null comment '用户ID',
    name        varchar(64) comment '知识库名称',
    profile     varchar(256) comment '知识库简介',
    url         varchar(256) comment '知识库url地址',
    keywords    varchar(256) comment '关键词',
    cover       varchar(256) comment '封面链接',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default '' comment '备注',
    primary key (kb_id)
) engine = innodb comment = '知识库表';


-- ----------------------------
-- 7、知识库-文档关联表
-- ----------------------------
drop table if exists sys_kb_file;
create table sys_kb_file
(
    kb_id       varchar(32) not null comment '知识库ID',
    file_id     varchar(32) not null comment '文档ID',
    user_id     bigint(20)  not null comment '用户ID',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default '' comment '备注'
) engine = innodb comment = '知识库-文档关联表';



-- ----------------------------
-- 8、图谱表
-- ----------------------------
drop table if exists sys_kg;
create table sys_kg
(
    kg_id       varchar(32)  not null comment '图谱ID',
    kb_id       varchar(32)  not null comment '知识库ID',
    file_ids    varchar(500) not null comment '文档ID列表,全选时为1，没选时为0，选择部分时为文件id列表，用逗号隔开',
    user_id     bigint(20)   not null comment '用户ID',
    name        varchar(64)  not null comment '图谱名称',
    profile     varchar(256) comment '图谱简介',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default '' comment '备注',
    primary key (kg_id)
) engine = innodb comment = '图谱表';

-- ----------------------------
-- 9、图谱实体表
-- ----------------------------
drop table if exists sys_entity;
create table sys_entity
(
    entity_id   varchar(32) not null comment '实体ID',
    kg_id       varchar(32) not null comment '图谱ID',
    user_id     bigint(20)  not null comment '用户ID',
    name        varchar(64) not null comment '实体名称',
    nick_name   varchar(64) comment '实体别称',
    profile     varchar(256) comment '实体简介',
    type        varchar(32) comment '实体类型',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default '' comment '备注',
    primary key (entity_id)
) engine = innodb comment = '图谱实体表';

-- ----------------------------
-- 9、图谱实体实例表
-- ----------------------------
drop table if exists sys_entity_instance;
create table sys_entity_instance
(
    instance_id varchar(32) not null comment '实例ID',
    entity_id   varchar(32) not null comment '实体ID',
    user_id     bigint(20)  not null comment '用户ID',
    name        varchar(64) not null comment '实例名称',
    nick_name   varchar(256) comment '实例别名，多个别名用逗号隔开',
    create_by   varchar(64)  default '' comment '创建者',
    create_time datetime comment '创建时间',
    update_by   varchar(64)  default '' comment '更新者',
    update_time datetime comment '更新时间',
    remark      varchar(512) default '' comment '备注',
    primary key (entity_id)
) engine = innodb comment = '图谱实体实例表';

-- ----------------------------
-- 10、图谱关系表
-- ----------------------------
drop table if exists sys_entity_relation;
create table sys_entity_relation
(
    relation_id   varchar(32) not null comment '关系ID',
    kg_id         varchar(32) not null comment '图谱ID',
    user_id       bigint(20)  not null comment '用户ID',
    start         varchar(64) not null comment '类目/起始点类型',
    start_id      varchar(32) not null comment '起始点id',
    relation      varchar(64) not null comment '属性/关系',
    end           varchar(64) not null comment '值类型/终止点类型',
    end_id        varchar(32) not null comment '终止点id',
    value_unit    varchar(64) comment '枚举集合/数值单位',
    value_type    varchar(64) comment '单多值',
    default_value varchar(64) comment '默认值',
    create_by     varchar(64)  default '' comment '创建者',
    create_time   datetime comment '创建时间',
    update_by     varchar(64)  default '' comment '更新者',
    update_time   datetime comment '更新时间',
    remark        varchar(512) default '' comment '备注',
    primary key (relation_id)
) engine = innodb comment = '图谱关系表';

