SET SCHEMA JZ_TEST;

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

-- ----------------------------
-- 初始化-部门表数据
-- ----------------------------
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(100,  0,   '0',          '若依科技',   0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(101,  100, '0,100',      '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(102,  100, '0,100',      '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(103,  101, '0,100,101',  '研发部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(104,  101, '0,100,101',  '市场部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(105,  101, '0,100,101',  '测试部门',   3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(106,  101, '0,100,101',  '财务部门',   4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(107,  101, '0,100,101',  '运维部门',   5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(108,  102, '0,100,102',  '市场部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);
insert into sys_dept(dept_id, parent_id, ancestors, dept_name, order_num, leader, phone, email, status, del_flag, create_by, create_time) 
values(109,  102, '0,100,102',  '财务部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate);


-- ----------------------------
-- 2、用户信息表
-- ----------------------------
drop table if exists sys_user;
create table sys_user (
  user_id           bigint          not null identity(1,1)    comment '用户ID',
  dept_id           bigint          default null               comment '部门ID',
  user_name         varchar(30)     not null                   comment '用户账号',
  nick_name         varchar(30)     not null                   comment '用户昵称',
  user_type         varchar(2)      default '00'               comment '用户类型（00系统用户）',
  email             varchar(50)     default ''                 comment '用户邮箱',
  phonenumber       varchar(11)     default ''                 comment '手机号码',
  sex               char(1)         default '0'                comment '用户性别（0男 1女 2未知）',
  avatar            varchar(100)    default ''                 comment '头像地址',
  password          varchar(100)    default ''                 comment '密码',
  status            char(1)         default '0'                comment '账号状态（0正常 1停用）',
  del_flag          char(1)         default '0'                comment '删除标志（0代表存在 2代表删除）',
  login_ip          varchar(128)    default ''                 comment '最后登录IP',
  login_date        datetime                                   comment '最后登录时间',
  pwd_update_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(500)    default null               comment '备注',
  primary key (user_id)
) comment '用户信息表';

-- ----------------------------
-- 初始化-用户信息表数据
-- ----------------------------
insert into sys_user(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, pwd_update_date, create_by, create_time, remark) 
values(1,  103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate, sysdate, 'admin', sysdate, '管理员');
insert into sys_user(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, pwd_update_date, create_by, create_time, remark) 
values(2,  105, 'ry',    '若依', '00', 'ry@qq.com',  '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate, sysdate, 'admin', sysdate, '测试员');


-- ----------------------------
-- 3、岗位信息表
-- ----------------------------
drop table if exists sys_post;
create table sys_post
(
  post_id       bigint          not null identity(1,1)    comment '岗位ID',
  post_code     varchar(64)     not null                   comment '岗位编码',
  post_name     varchar(50)     not null                   comment '岗位名称',
  post_sort     int             not null                   comment '显示顺序',
  status        char(1)         not null                   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(500)    default null               comment '备注',
  primary key (post_id)
) comment '岗位信息表';

-- ----------------------------
-- 初始化-岗位信息表数据
-- ----------------------------
insert into sys_post(post_id, post_code, post_name, post_sort, status, create_by, create_time) 
values(1, 'ceo',  '董事长',    1, '0', 'admin', sysdate);
insert into sys_post(post_id, post_code, post_name, post_sort, status, create_by, create_time) 
values(2, 'se',   '项目经理',  2, '0', 'admin', sysdate);
insert into sys_post(post_id, post_code, post_name, post_sort, status, create_by, create_time) 
values(3, 'hr',   '人力资源',  3, '0', 'admin', sysdate);
insert into sys_post(post_id, post_code, post_name, post_sort, status, create_by, create_time) 
values(4, 'user', '普通员工',  4, '0', 'admin', sysdate);


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

-- ----------------------------
-- 初始化-角色信息表数据
-- ----------------------------
insert into sys_role(role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, remark) 
values(1, '超级管理员', 'admin', 1, '1', '1', '1', '0', '0', 'admin', sysdate, '超级管理员拥有所有权限');
insert into sys_role(role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, remark) 
values(2, '普通角色', 'common', 2, '2', '1', '1', '0', '0', 'admin', sysdate, '普通角色');


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

-- ----------------------------
-- 6、角色菜单关联表
-- ----------------------------
drop table if exists sys_role_menu;
create table sys_role_menu (
  role_id           bigint          not null                   comment '角色ID',
  menu_id           bigint          not null                   comment '菜单ID',
  primary key (role_id, menu_id)
) comment '角色菜单关联表';


-- ----------------------------
-- 7、用户角色关联表
-- ----------------------------
drop table if exists sys_user_role;
create table sys_user_role (
  user_id           bigint          not null                   comment '用户ID',
  role_id           bigint          not null                   comment '角色ID',
  primary key (user_id, role_id)
) comment '用户角色关联表';

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


-- ----------------------------
-- 8、用户岗位关联表
-- ----------------------------
drop table if exists sys_user_post;
create table sys_user_post (
  user_id           bigint          not null                   comment '用户ID',
  post_id           bigint          not null                   comment '岗位ID',
  primary key (user_id, post_id)
) comment '用户岗位关联表';

-- ----------------------------
-- 初始化-用户岗位关联表数据
-- ----------------------------
insert into sys_user_post(user_id, post_id) values(1, 1);
insert into sys_user_post(user_id, post_id) values(2, 4);


-- ----------------------------
-- 9、角色部门关联表
-- ----------------------------
drop table if exists sys_role_dept;
create table sys_role_dept (
  role_id           bigint          not null                   comment '角色ID',
  dept_id           bigint          not null                   comment '部门ID',
  primary key (role_id, dept_id)
) comment '角色部门关联表';


-- ----------------------------
-- 10、字典类型表
-- ----------------------------
drop table if exists sys_dict_type;
create table sys_dict_type (
  dict_id           bigint          not null identity(1,1)    comment '字典主键',
  dict_name         varchar(100)    not null                   comment '字典名称',
  dict_type         varchar(100)    not null                   comment '字典类型',
  status            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(500)    default null               comment '备注',
  primary key (dict_id)
) comment '字典类型表';


-- ----------------------------
-- 11、字典数据表
-- ----------------------------
drop table if exists sys_dict_data;
create table sys_dict_data (
  dict_code         bigint          not null identity(1,1)    comment '字典编码',
  dict_sort         int             default 0                  comment '字典排序',
  dict_label        varchar(100)    not null                   comment '字典标签',
  dict_value        varchar(100)    not null                   comment '字典值',
  dict_type         varchar(100)    not null                   comment '字典类型',
  css_class         varchar(100)    default ''                 comment '样式属性（其他样式扩展）',
  list_class        varchar(100)    default ''                 comment '表格回显样式',
  is_default        char(1)         default 'N'                comment '是否默认（Y是 N否）',
  status            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(500)    default null               comment '备注',
  primary key (dict_code)
) comment '字典数据表';


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


-- ----------------------------
-- 13、公告信息表
-- ----------------------------
drop table if exists sys_notice;
create table sys_notice (
  notice_id         bigint          not null identity(1,1)    comment '公告ID',
  notice_title      varchar(50)     not null                   comment '公告标题',
  notice_type       char(1)         default '1'                comment '公告类型（1通知 2公告）',
  notice_content    varchar(2000)   default null               comment '公告内容',
  status            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(500)    default null               comment '备注',
  primary key (notice_id)
) comment '公告信息表';


-- ----------------------------
-- 14、公告已读表
-- ----------------------------
drop table if exists sys_notice_read;
create table sys_notice_read (
  notice_id         bigint          not null                   comment '公告ID',
  user_id           bigint          not null                   comment '用户ID',
  read_time         datetime                                   comment '已读时间',
  primary key (notice_id, user_id)
) comment '公告已读表';


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


-- ----------------------------
-- 16、登录日志表
-- ----------------------------
drop table if exists sys_logininfor;
create table sys_logininfor (
  info_id           bigint          not null identity(1,1)    comment '访问ID',
  user_name         varchar(50)     default ''                 comment '用户账号',
  ipaddr            varchar(128)    default ''                 comment '登录IP地址',
  login_location    varchar(255)    default ''                 comment '登录地点',
  browser           varchar(50)     default ''                 comment '浏览器类型',
  os                varchar(50)     default ''                 comment '操作系统',
  status            char(1)         default '0'                comment '登录状态（0成功 1失败）',
  msg               varchar(255)    default ''                 comment '提示信息',
  login_time        datetime                                   comment '登录时间',
  primary key (info_id)
) comment '登录日志表';
