用户管理(一):业务澄清,数据库设计
以前写过一次用户管理的项目,但那次时间催的紧又是第一次写用户权限管理,很多东西都没设计好。自我感觉一塌糊涂,所以想重新写一下,顺便记录一下。
业务澄清
- 登录:创建token,生成会话并返回。
- 登出:注销会话。
- 用户管理:用户的增删改查,锁定解锁,批量导入导出,分配角色。
- 角色管理:角色的增删改查以及给角色分配权限。
- 菜单权限管理:菜单的增删改查,导入。
一个比较简单的用户管理,不加入部门之类的考虑,就大概是这些需求了。
数据库设计
根据上面的业务需求来看,我们需要的表已经很清晰了。
用户表,角色表,菜单权限表。主要是这三个表,但有一点需要注意的是,这三张表之间的关系都是多对多。所以我们还需要两张中间表:用户-角色关系表,角色-菜单关系表。
表结构设计如下:
- 用户表
字段名 | 字段类型 | 约束 | 备注 |
---|
user_id | bigint(20) | not null, auto_increment | 用户ID |
user_name | varchar(30) | not nul | 用户账号 |
nick_name | varchar(30) | not null | 用户昵称 |
email | varchar(50) | default ‘’ | 用户邮箱 |
phone_number | varchar(11) | default ‘’ | 手机号码 |
sex | char(1) | default ‘0’ | 用户性别(0男 1女 2未知) |
avatar | longblob | null | 头像 |
password | varchar(100) | default ‘’ | 密码 |
salt | varchar(256) | default ‘’ | 盐值 |
status | char(1) | default ‘0’ | 帐号状态(0正常 1停用) |
del_flag | char(1) | default ‘0’ | 删除标志(0代表存在 1代表删除) |
login_ip | varchar(128) | default ‘’ | 最后登录IP |
login_date | datetime | null | 最后登录时间 |
create_by | varchar(64) | default ‘’ | 创建者 |
create_time | datetime | | 创建时间 |
update_by | varchar(64) | default ‘’ | 更新者 |
update_time | datetime | | 更新时间 |
remark | varchar(500) | default ‘’ | 备注 |
- 角色表
字段名 | 字段类型 | 约束 | 备注 |
---|
role_id | bigint(20) | not null, auto_increment | 角色ID |
role_name | varchar(30) | not null | 角色名称 |
role_key | varchar(100) | not null | 角色权限字符串 |
role_sort | int(4) | not null | 显示顺序 |
menu_check_strictly | tinyint(1) | default 1 | 菜单树选择项是否关联显示(0是1否) |
del_flag | char(1) | default ‘0’ | 删除标志(0代表存在 1代表删除) |
create_by | varchar(64) | default ‘’ | 创建者 |
create_time | datetime | | 创建时间 |
update_by | varchar(64) | default ‘’ | 更新者 |
update_time | datetime | | 更新时间 |
remark | varchar(500) | default ‘’ | 备注 |
- 菜单权限表
字段名 | 字段类型 | 约束 | 备注 |
---|
menu_id | bigint(20) | not null, auto_increment | 菜单ID |
menu_name | varchar(50) | not null | 菜单名称 |
parent_id | bigint(20) | default 0 | 父菜单ID |
order_num | int(4) | default 0 | 显示顺序 |
path | varchar(200) | default ‘’ | 路由地址 |
component | varchar(256) | null | 组件路径 |
query | varchar(256) | null | 路由参数 |
menu_type | char(1) | default ‘’ | 菜单类型(M目录 C菜单 F按钮) |
visible | char(1) | default ‘0’ | 菜单状态(0显示 1隐藏) |
status | char(1) | default ‘0’ | 菜单状态(0正常 1停用) |
perms | varchar(100) | null | 权限标识 |
icon | varchar(100) | default ‘#’ | 菜单图标 |
create_by | varchar(64) | default ‘’ | 创建者 |
create_time | datetime | | 创建时间 |
update_by | varchar(64) | default ‘’ | 更新者 |
update_time | datetime | | 更新时间 |
remark | varchar(500) | default ‘’ | 备注 |
- 用户角色关联表
字段名 | 字段类型 | 约束 | 备注 |
---|
user_id | bigint(20) | not null | 用户ID |
role_id | bigint(20) | not null | 角色ID |
- 角色菜单关联表
字段名 | 字段类型 | 约束 | 备注 |
---|
role_id | bigint(20) | not null | 角色ID |
menu_id | bigint(20) | not null | 菜单ID |
ps:数据库设计参考了若依