个人开发的后台管理系统,基本包含了后台系统所需的基本功能,如用户、组织架构、权限、菜单等,集成了quartz、redis、elasticsearch、activiti等框架,为后期的深度开发提供支持。
源码地址:https://gitee.com/dream-factory/lanyu-public
介绍
基于vue和springboot的前后端分离项目,演示环境地址:https://www.zhoulang.site
试用账号:ql.wu
登录密码:111111
系统架构
- springboot、MybatisPlus作为基础框架。
- 使用JWT和Redis实现登录会话功能。
- 前端使用若依ui,并进行了修改,适应自身后台系统。
运行环境
软件 | 版本 |
JDK | 1.8 |
Mysql | 5.7 |
功能简介
- 用户管理:对系统访问用户进行新增、修改、锁定、重置密码等管理。
- 组织架构管理:维护系统的部门、角色和用户的关系。
- 参数管理:对系统的关键参数进行配置,可以修改、开启或关闭系统功能。
- 菜单管理:配置前端动态路由菜单。
- 缓存信息:提供刷新系统缓存的接口。
- 系统安全策略:控制用户登录和密码安全,以及系统访问环境安全策略。
- 附件管理:管理系统中生成的附件,如用户头像,消息附件等。
- 黑名单:管理禁止访问系统的客户端ip地址。
- 权限管理 :对系统权限进行维护。
- 系统监控:记录系统操作日志。
- 定时任务管理:动态管理系统的任务调度。
- activiti工作流
- 消息管理系统:用户可以发送邮件和系统内消息
组织架构简介
系统中的组织架构分为部门、角色、用户 ,它们都属于组织架构对象,存放在一张系统组织架构表中,通过一个组织架构类型进行区分。它们之间通过一张组织架构关系表维护上下级树关系,用户放在部门或者角色的下级,部门下面可以新建子部门。不同角色之间是平级关系,没有上下级关系:
为了提示组织架构对象查询的性能,系统启动时对组织架构对象的树结构进行了缓存,查询时直接去缓存树中进行递归,查找出所有子节点,或所有父节点。在进行组织结构关系修改时,系统会自动刷新缓存。组织架构菜单如下:
考虑到组织架构选择功能很多地方会使用到,我封装了前端的组织架构选择控件,可选择部门、角色、和用户:
菜单功能简介
系统将菜单分为四个种类:
菜单类型 | 菜单说明 |
目录 | 菜单所存放的目录 |
菜单 | 实际能访问的菜单页面 |
接口 | 后端提供的访问接口 |
按钮 | 前端页面可见的按钮 |
这种四级菜单结构的设计,为菜单的权限提供了更细粒度的控制。
可以在菜单管理页面中直接查看到对应菜单授权的信息:
权限系统简介
系统设计了一个通用的权限系统,不仅仅局限于菜单权限,系统只用一张权限表,就可以支持任意权限,不用再设计其他权限表。
用户自动继承上级部门或者角色的权限,也可拥有自身权限。
提供通一的权限查询接口,根据权限定义、权限类型、用户id,查询出对应权限。
以下以菜单权限为例:
可以对部门进行菜单授权,则该部门下的用户自动拥有该部门的权限,蓝色文字代表直接对这个授权对象赋予的权限,黑色文字表示这个授权对象的权限是继承自上级对象。
界面提供一个清空自身权限按钮,点击会删除授权对象的所有自身权限,不影响继承权限。
假如部门下有100个用户,其中一个用户我们想单独取消某些用户权限,这时可以同时对用户进行单独授权,拒绝该菜单的权限,当菜单的checkbox为红色时,表示拒绝权限,当checkbox未选中时,表示没有该菜单的权限,当checkbox为选中状态时,表示拥有菜单权限。
注:用户给其他用户授权时,只能将自身拥有的权限授权给他人
引入Activiti工作流
1. bpmn-js流程在线设计器,可以在线新建并绘制流程保存到服务器
2. 流程发布与版本控制,重复发布后可以查看流程的历史版本
3. 流程发起、挂起、激活、终止,指派、增员、减员
4. 流程任务办理,系统提供了内置的处理页面,根据流程图配置动态展示审批按钮