node+koa+react 实现权限管理 数据库表定义篇

427 阅读2分钟

产品需求

yuque_diagram (4).jpg

  • 将权限控制按层级分为模块、页面、按钮、数据字段
  • 定义角色,授权角色拥有权限
  • 角色绑定部门
  • 给用户分配角色
  • 数据权限与用户绑定

数据库使用的是mysql,数据表相关如下

yuque_diagram (3).jpg

角色表

CREATE TABLE `role`(
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `code` varchar(200) NOT NULL,
  `enable` tinyint(1) default 1 comment '1-启用 0-禁用',
  `state`  tinyint(1) default 1 comment ' 1-未删除 0-删除',
  `create_at` datetime NOT NULL ,
  `update_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS=1;

用户表

CREATE TABLE `admin_user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(100) default NULL comment '名称',
  `user_name` varchar(100) NOT NULL comment '用户名',
  `password` varchar(100) NOT NULL ,
  `email` varchar(100) NOT NULL,
  `country_code`  varchar(100) DEFAULT NULL,
  `address` varchar(250) DEFAULT NULL comment '地址',
  `avatar` varchar(250) default null comment '头像',
  `enable` tinyint(1) default 1 comment '1-启用 0-禁用',
  `state`  tinyint(1) default 1 comment '0-删除 1-未删除',
  `create_at` datetime NOT NULL ,
  `update_at` datetime NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;

权限表

DROP TABLE IF EXISTS `resources`;
CREATE TABLE `resources`(
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `type` tinyint(3) NOT NULL comment '1-目录,2-页面 3-按钮',
  `parent_id` bigint NOT NULL,
  `url` varchar(500) default NULL,
  `router` varchar(500) default NULL,
  `permission` varchar(200) NOT NULL,
  `enable` tinyint(1) default 1 comment '1-启用 0-禁用',
  `state`  tinyint(1) default 1 comment ' 1-未删除 0-删除',
  `create_at` datetime NOT NULL ,
  `update_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS=1;

关联表

-- ----------------------------
-- Table role_admin_user  角色与用户
-- ----------------------------
CREATE TABLE `role_admin_user`(
  `id` bigint NOT NULL AUTO_INCREMENT,
  `role_id` bigint NOT NULL ,
  `admin_user_id` bigint NOT NULL ,
  `enable` tinyint(1) default 1 comment '1-启用 0-禁用',
  `state`  tinyint(1) default 1 comment ' 1-未删除 0-删除',
  `create_at` datetime NOT NULL ,
  `update_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS=1;

-- ----------------------------
-- Table role_resources  角色与权限(资源)
-- ----------------------------
CREATE TABLE `role_resources`(
  `id` bigint NOT NULL AUTO_INCREMENT,
   `role_id` bigint NOT NULL ,
  `resources_id` bigint NOT NULL ,
    `enable` tinyint(1) default 1 comment '1-启用 0-禁用',
  `state`  tinyint(1) default 1 comment ' 1-未删除 0-删除',
  `create_at` datetime NOT NULL ,
  `update_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS=1;

要去赶需求了,后续完善