2.2.1 功能性分析
基于java web的通用权限管理系统主要包括用户管理、菜单管理、角色管理、部门管理、岗位管理、字典管理、参数设置、日志管理这八大模块。
(1)用户管理:可以对后台用户进行管理并分配角色,支持分配多个角色;
(2)菜单管理:可以实现对后台管理系统左侧菜单的管理,支持更换图标、更换名称、控制菜单显示和排序;
(3)角色管理:用于对后台用户角色进行管理,可以给角色分配指定的菜单和资源;
(4)部门管理:对部门的基本属性进行管理;
(5)岗位管理:对岗位的基本属性进行管理;
(6)字典管理:能够对系统中各字典属性的管理;
(7)参数设置:能够对系统中基础数据参数的管理,例如用户的初始密码设置;
(8)日志管理;能够查看和管理各用户的操作日志和登录日志;
3.2.3拟采用的技术方案
准备采用java开发语言的springboot+vue框架配合shiro技术来进行权限控制,mysql存储数据。
3.2.4系统总体设计
系统功能模块如图3-1所示
3.2.1 数据库概念结构设计
下图3-1是整个通用权限管理系统中主要的数据库表总E-R实体关系图。
3.2.2 数据库逻辑结构设计
通过上一小节中通用权限管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
(1)参数配置信息如表3-1所示包含了参数主键id、参数名称、参数键名、参数键值、系统内置(Y是 N否)、创建者、创建时间、更新者、更新时间、备注,主要用在用户对通用权限管理系统中的基础参数数据(例如各用户的初始化密码)进行配置时使用。
表3-1 sys_config参数配置信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
config_id | int(5) | 是 | 否 | 否 | 参数主键id |
config_name | varchar(100) | 否 | 否 | 是 | 参数名称 |
config_key | varchar(50) | 否 | 否 | 是 | 参数键名 |
config_value | varchar(500) | 否 | 否 | 是 | 参数键值 |
config_type | char(1) | 否 | 否 | 是 | 系统内置(Y是 N否) |
create_by | varchar(64) | 否 | 否 | 是 | '创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
remark | text | 否 | 否 | 是 | 备注 |
(2)部门信息如表3-2所示包含了部门id、父级部门id、祖级列表、部门名称、显示顺序、负责人、联系电话、邮箱、部门状态(0正常 1停用)、删除标志(0代表存在 2代表删除)、创建者、创建时间、更新者、更新时间,主要用在用户创建公司内部部门信息时进行使用。
表3-2 sys_dept部门信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
dept_id | bigint(20) | 是 | 否 | 否 | 部门id |
parent_id | bigint(20) | 否 | 是 | 是 | 父级部门id |
ancestors | varchar(50) | 否 | 否 | 是 | 祖级列表 |
dept_name | varchar(30) | 否 | 否 | 是 | 部门名称 |
order_num | int(4) | 否 | 否 | 是 | 显示顺序 |
leader | varchar(20) | 否 | 否 | 是 | 负责人 |
phone | varchar(11) | 否 | 否 | 是 | 联系电话 |
| varchar(50) | 否 | 否 | 是 | 邮箱 |
status | char(1) | 否 | 否 | 是 | 部门状态(0正常 1停用) |
del_flag | char(1) | 否 | 否 | 是 | 删除标志(0代表存在 2代表删除) |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
(3)字典数据信息如表3-3所示包含了字典编码、字典排序、字典标签、字典键值、字典类型、样式属性(其他样式扩展)、表格回显样式、是否默认(Y是 N否)、状态(0正常 1停用)、创建者、创建时间、更新者、更新时间、备注,主要用在用户对性别、菜单显示/隐藏、分组、通知、导入/导出、强退、清空、停用时进行使用等。
表3-3 sys_dict_data字典数据信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
dict_code | bigint(20) | 是 | 否 | 是 | 字典编码 |
dict_sort | int(4) | 否 | 是 | 是 | 字典排序 |
dict_label | varchar(100) | 否 | 是 | 是 | 字典标签 |
dict_value | varchar(100) | 否 | 否 | 是 | 字典键值 |
dict_type | varchar(100) | 否 | 否 | 是 | 字典类型 |
css_class | varchar(100) | 否 | 否 | 是 | 样式属性(其他样式扩展) |
list_class | varchar(100) | 否 | 否 | 是 | 表格回显样式 |
is_default | char(1) | 否 | 否 | 是 | 是否默认(Y是 N否) |
status | char(1) | 否 | 否 | 是 | 状态(0正常 1停用) |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
remark | text | 否 | 否 | 是 | 备注 |
(4)字典类型信息如表3-4所示包含了字典主键id、字典名称、字典类型、状态(0正常 1停用)、创建者、创建时间、更新者、更新时间、备注,主要用在用户创建不同字典类型(用户性别、菜单状态、系统开关、任务状态、任务分组、系统是否、通知状态、操作类型、系统状态)信息以及后面进行使用等。
表3-4 sys_dict_type字典类型信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
dict_id | bigint(20) | 是 | 否 | 是 | 字典主键id |
dict_name | varchar(100) | 否 | 是 | 是 | 字典名称 |
dict_type | varchar(100) | 否 | 是 | 是 | 字典类型 |
status | char(1) | 否 | 否 | 是 | 状态(0正常 1停用) |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 更新者 | |
update_time | datetime | 否 | 否 | 更新时间 | |
remark | text | 否 | 否 | 备注 |
(5)字典类型信息如表3-5所示包含了访问ID、用户账号、登录IP地址、登录地点、浏览器类型、操作系统、登录状态(0成功 1失败)、提示消息、访问时间,主要用在记录登录系统的访问记录等。
表3-5 sys_logininfor系统访问记录信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
info_id | bigint(20) | 是 | 否 | 是 | 访问ID |
user_name | varchar(50) | 否 | 是 | 是 | 用户账号 |
ipaddr | varchar(50) | 否 | 否 | 是 | 登录IP地址 |
login_location | varchar(255) | 否 | 否 | 是 | 登录地点 |
browser | varchar(50) | 否 | 否 | 是 | 浏览器类型 |
os | varchar(50) | 否 | 否 | 是 | 操作系统 |
status | char(1) | 否 | 否 | 是 | 登录状态(0成功 1失败) |
msg | text | 否 | 否 | 是 | 提示消息 |
login_time | datetime | 否 | 否 | 是 | 访问时间 |
(6)菜单权限信息如表3-6所示包含了菜单ID、菜单名称、父菜单ID、显示顺序、路由地址、组件路径、是否为外链(0是 1否)、菜单类型(M目录 C菜单 F按钮)、菜单状态(0显示 1隐藏)、菜单状态(0正常 1停用)、权限标识、菜单图标、创建者、创建时间、更新者、更新时间、备注,主要用在控制系统中每个菜单的权限信息等。
表3-6 sys_menu菜单权限信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
menu_id | bigint(20) | 是 | 否 | 是 | 菜单ID |
menu_name | varchar(50) | 否 | 否 | 是 | 菜单名称 |
parent_id | bigint(20) | 否 | 是 | 是 | 父菜单ID |
order_num | int(4) | 否 | 否 | 是 | 显示顺序 |
path | varchar(255) | 否 | 否 | 是 | 路由地址 |
component | int(1) | 否 | 否 | 是 | 组件路径 |
is_frame | char(1) | 否 | 否 | 是 | 是否为外链(0是 1否) |
menu_type | char(1) | 否 | 否 | 是 | 菜单类型(M目录 C菜单 F按钮) |
visible | char(1) | 否 | 否 | 是 | 菜单状态(0显示 1隐藏) |
status | char(1) | 否 | 否 | 是 | 菜单状态(0正常 1停用) |
perms | varchar(100) | 否 | 否 | 是 | 权限标识 |
icon | varchar(100) | 否 | 否 | 是 | 菜单图标 |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
remark | text | 否 | 否 | 是 | 备注 |
(7)通知公告信息如表3-7所示包含了公告ID、公告标题、公告类型(1通知 2公告)、公告内容、公告状态(0正常 1关闭)、创建者、创建时间、更新者、更新时间、备注,主要用在用户发布的系统通过公告信息等。
表3-7 sys_notice通知公告信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
notice_id | int(4) | 是 | 否 | 是 | 公告ID |
notice_title | varchar(50) | 否 | 否 | 是 | 公告标题 |
notice_type | char(1) | 否 | 否 | 是 | 公告类型(1通知 2公告) |
notice_content | text | 否 | 否 | 是 | 公告内容 |
status | char(1) | 否 | 否 | 是 | 公告状态(0正常 1关闭) |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
remark | text | 否 | 否 | 是 | 备注 |
(8)操作日志记录信息如表3-8所示包含了日志主键ID、模块标题、业务类型(0其它 1新增 2修改 3删除)、方法名称、请求方式、操作类别(0其它 1后台用户 2手机端用户)、操作人员、部门名称、请求URL、主机地址、操作地点、请求参数、返回参数、操作状态(0正常 1异常)、错误消息、操作时间,主要用在记录了所有用户的操作日志记录信息等。
表3-8 sys_oper_log操作日志记录信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
oper_id | bigint(20) | 是 | 否 | 是 | 日志主键ID |
title | varchar(50) | 否 | 否 | 是 | 模块标题 |
business_type | int(2) | 否 | 否 | 是 | 业务类型(0其它 1新增 2修改 3删除) |
method | varchar(100) | 否 | 否 | 是 | 方法名称 |
request_method | varchar(10) | 否 | 否 | 是 | 请求方式 |
operator_type | int(1) | 否 | 否 | 是 | 操作类别(0其它 1后台用户 2手机端用户) |
oper_name | varchar(50) | 否 | 否 | 是 | 操作人员 |
dept_name | varchar(50) | 否 | 否 | 是 | 部门名称 |
oper_url | varchar(255) | 否 | 否 | 是 | 请求URL |
oper_ip | varchar(50) | 否 | 否 | 是 | 主机地址 |
oper_location | text | 否 | 否 | 是 | 操作地点 |
oper_param | text | 否 | 否 | 是 | 请求参数 |
json_result | text | 否 | 否 | 是 | 返回参数 |
status | int(1) | 否 | 否 | 是 | 操作状态(0正常 1异常) |
error_msg | text | 否 | 否 | 是 | 错误消息 |
oper_time | datetime | 否 | 否 | 是 | 操作时间 |
(9)岗位信息如表3-9所示包含了岗位ID、岗位编码、岗位名称、显示顺序、状态(0正常 1停用)、创建者、创建时间、更新者、更新时间、备注,主要用在记录了系统中各种职位信息等。
表3-9 sys_post岗位信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
oper_id | bigint(20) | 是 | 否 | 是 | 岗位ID |
post_code | varchar(64) | 否 | 否 | 是 | 岗位编码 |
post_name | varchar(50) | 否 | 否 | 是 | 岗位名称 |
post_sort | int(4) | 否 | 否 | 是 | 显示顺序 |
status | char(1) | 否 | 否 | 是 | 状态(0正常 1停用) |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
remark | text | 否 | 否 | 是 | 备注 |
(10)角色信息如表3-10所示包含了角色ID、角色名称、角色权限字符串、显示顺序、数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)、角色状态(0正常 1停用)、删除标志(0代表存在 2代表删除)、创建者、创建时间、更新者、更新时间、备注,主要用在记录了系统中各种角色信息等。
表3-10 sys_role角色信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
role_id | bigint(20) | 是 | 否 | 是 | 角色ID |
role_name | varchar(30) | 否 | 否 | 是 | 角色名称 |
role_key | varchar(100) | 否 | 否 | 是 | 角色权限字符串 |
role_sort | int(4) | 否 | 否 | 是 | 显示顺序 |
data_scope | char(1) | 否 | 否 | 是 | 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) |
status | char(1) | 否 | 否 | 是 | 角色状态(0正常 1停用) |
del_flag | char(1) | 否 | 否 | 是 | 删除标志(0代表存在 2代表删除) |
create_by | varchar(64) | 否 | 否 | 是 | 创建者 |
create_time | datetime | 否 | 否 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 否 | 是 | 更新者 |
update_time | datetime | 否 | 否 | 是 | 更新时间 |
remark | text | 否 | 否 | 是 | 备注 |
(11)角色部门关联信息如表3-11所示包含了角色ID、部门ID,主要用在记录了角色和部门之间的关联等。
表3-11 sys_role_dept角色部门信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
role_id | bigint(20) | 否 | 是 | 否 | 角色ID |
dept_id | bigint(20) | 否 | 是 | 否 | 部门ID |
(12)角色菜单关联信息如表3-12所示包含了角色ID、菜单ID,主要用在记录了角色和菜单之间的关联等。
表3-12 sys_role_menu角色菜单信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
role_id | bigint(20) | 否 | 是 | 否 | 角色ID |
menu_id | bigint(20) | 否 | 是 | 否 | 菜单ID |
(13)用户信息如表3-12所示包含了用户ID、部门ID、用户账号、登录密码、用户昵称、用户类型(00系统用户)、用户邮箱、手机号码、用户性别(0男 1女 2未知)、用户头像地址、帐号状态(0正常 1停用)、删除标志(0代表存在 2代表删除)、最后登陆IP、最后登陆时间、创建者、创建时间、更新者、更新时间、备注,主要用在记录了系统中的所有用户信息等。
表3-13 sys_user用户信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
user_id | bigint(20) | 否 | 是 | 否 | 用户ID |
dept_id | bigint(20) | 否 | 是 | 否 | 部门ID |
user_name | varchar(30) | 否 | 是 | 是 | 用户账号 |
password | varchar(30) | 否 | 是 | 是 | 登录密码 |
nick_name | varchar(30) | 否 | 是 | 是 | 用户昵称 |
user_type | varchar(2) | 否 | 是 | 是 | 用户类型(00系统用户) |
| varchar(50) | 否 | 是 | 是 | 用户邮箱 |
phonenumber | varchar(11) | 否 | 是 | 是 | 手机号码 |
sex | char(1) | 否 | 是 | 是 | 用户性别(0男 1女 2未知) |
avatar | varchar(100) | 否 | 是 | 是 | 用户头像地址 |
status | char(1) | 否 | 是 | 是 | 帐号状态(0正常 1停用) |
del_flag | char(1) | 否 | 是 | 是 | 删除标志(0代表存在 2代表删除) |
login_ip | varchar(50) | 否 | 是 | 是 | 最后登陆IP |
login_date | datetime | 否 | 是 | 是 | 最后登陆时间 |
create_by | varchar(64) | 否 | 是 | 是 | 创建者 |
create_time | datetime | 否 | 是 | 是 | 创建时间 |
update_by | varchar(64) | 否 | 是 | 是 | 更新者 |
update_time | datetime | 否 | 是 | 是 | 更新时间 |
remark | text | 否 | 是 | 是 | 备注 |
(14)用户岗位关联信息如表3-14所示包含了用户ID、岗位ID,主要用在记录了用户和岗位之间的关联等。
表3-14 sys_user_post用户岗位信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
user_id | bigint(20) | 否 | 是 | 否 | 用户ID |
post_id | bigint(20) | 否 | 是 | 否 | 岗位ID |
(15)用户角色关联信息如表3-15所示包含了用户ID、角色ID,主要用在记录了用户和角色之间的关联等。
表3-15 sys_user_role用户角色信息表
数据库字段名 | 字段类型 | 是否主键 | 是否外键 | 是否为空 | 字段含义 |
user_id | bigint(20) | 否 | 是 | 否 | 用户ID |
role_id | bigint(20) | 否 | 是 | 否 | 角色ID |