CREATE TABLE `sys_dict`  (
  `id` int NOT NULL,
  `pid` int NULL,
  `module` tinyint NULL,
  `key` varchar(255) NULL,
  `value` varchar(255) NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `sys_organization`  (
  `org_id` bigint NOT NULL,
  `pid` bigint NULL,
  `org_name` varchar(255) NULL,
  `org_code` varchar(128) NULL,
  `org_type` int NULL,
  `desc` varchar(255) NULL,
  PRIMARY KEY (`org_id`)
);

CREATE TABLE `sys_organization_manager`  (
  `id` bigint NOT NULL COMMENT '1',
  `org_id` bigint NOT NULL COMMENT '1',
  `user_id` bigint NOT NULL COMMENT '1',
  `rank` int NOT NULL COMMENT '1',
  `status` int ZEROFILL NOT NULL COMMENT '1',
  `desc` varchar(255) NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `sys_permission`  (
  `perm_id` int NOT NULL,
  `pid` int NULL,
  `perm_name` varchar(255) NULL,
  `perm_key` varchar(255) NULL,
  `avatar_url` varchar(255) NULL,
  `desc` varchar(255) NULL,
  `perm_type` varchar(255) NULL,
  PRIMARY KEY (`perm_id`)
);

CREATE TABLE `sys_re_role_permission`  (
  `id` int NOT NULL,
  `role_id` int NULL,
  `perm_id` int NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `sys_re_user_organization`  (
  `id` int NOT NULL,
  `user_id` int NULL,
  `org_id` int NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `sys_re_user_role`  (
  `id` int NOT NULL,
  `user_id` int NULL,
  `role_id` int NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `sys_role`  (
  `role_id` int NOT NULL,
  `pid` int NULL,
  `role_name` varchar(255) NULL,
  `role_key` varchar(255) NULL,
  `desc` varchar(255) NULL,
  PRIMARY KEY (`role_id`)
);

CREATE TABLE `sys_user`  (
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `pid` bigint ZEROFILL NOT NULL COMMENT '上级ID',
  `username` varchar(255) NOT NULL COMMENT '用户名，全小写',
  `email` varchar(255) NOT NULL COMMENT '邮箱',
  `phone` varchar(255) NULL COMMENT '手机号',
  `avatar_url` varchar(255) NULL COMMENT '图标',
  `user_type` tinyint NULL DEFAULT NULL COMMENT '用户类型从字典取',
  `status` tinyint DEFAULT 0 NOT NULL COMMENT '状态',
  PRIMARY KEY (`user_id`)
) COMMENT '用户基础信息表';

CREATE TABLE `sys_user_auth`  (
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `password_hash` varchar(255) NOT NULL COMMENT '用户密码',
  `password_modified` varchar(255) NOT NULL COMMENT '上一次修改时间',
  `password_expire` varchar(255) NULL DEFAULT NULL COMMENT '过期时间',
  PRIMARY KEY (`user_id`)
) COMMENT '用户密码表';

CREATE TABLE `sys_user_auth_history`  (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '历史记录自增主键',
  `user_id` bigint NOT NULL COMMENT '用户id',
  `password_hash` varchar(255) NOT NULL COMMENT '历史密码值，注意需要限制密码更改次数',
  `modified_at` varchar(255) NOT NULL COMMENT '上次修改的时间',
  PRIMARY KEY (`id`)
) COMMENT '历史密码表';

CREATE TABLE `sys_user_field_definition`  (
  `field_id` int NOT NULL AUTO_INCREMENT COMMENT '用户拓展字段ID',
  `field_name` varchar(255) NOT NULL COMMENT '拓展字段名称',
  `field_key` varchar(255) NOT NULL COMMENT '拓展字段标识',
  `field_type` tinyint NOT NULL COMMENT '拓展字段类型0文字1数字2日期3单选4多选5附件6富文本',
  `dict_module` int NULL COMMENT '字典集模块值',
  `is_required` tinyint NOT NULL DEFAULT 0 COMMENT '是否必填0否1是',
  `limit` int NULL COMMENT '值长度，最大2048',
  PRIMARY KEY (`field_id`)
) COMMENT '用户拓展字段定义表';

CREATE TABLE `sys_user_field_value`  (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户拓展字段记录id',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `field_id` int NOT NULL COMMENT '字段ID',
  `dictId` int NULL COMMENT '使用字典后的字典ID',
  `value` varchar(4096) NULL COMMENT '用户拓展字段值',
  PRIMARY KEY (`id`)
) COMMENT '用户拓展字段记录表';

CREATE TABLE `sys_user_profile`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '系统配置自增主键',
  `name` varchar(32) NOT NULL COMMENT '系统配置名称',
  `key` varchar(255) NOT NULL COMMENT '系统配置记录Key',
  `desc` varchar(255) NULL COMMENT '系统配置记录描述',
  `content` varchar(255) NULL COMMENT '系统配置记录值',
  PRIMARY KEY (`id`)
) COMMENT '系统配置';

