java开源后台管理系统完整源码,OA、工作流、可继承权限管理系统,前后端分离架构

308 阅读4分钟

个人开发的后台管理系统,基本包含了后台系统所需的基本功能,如用户、组织架构、权限、菜单等,集成了quartz、redis、elasticsearch、activiti等框架,为后期的深度开发提供支持。 介绍

基于vue和springboot的前后端分离项目,演示环境地址: https://www/zhoulang.site

试用账号:ql.wu

登录密码:111111

系统架构

  1. springboot、MybatisPlus作为基础框架。
  2. 使用JWT和Redis实现登录会话功能。
  3. 前端使用若依ui,并进行了修改,适应自身后台系统。

运行环境

软件版本
JDK1.8
Mysql5.7

功能简介

  1. 用户管理:对系统访问用户进行新增、修改、锁定、重置密码等管理。
  2. 组织架构管理:维护系统的部门、角色和用户的关系。
  3. 参数管理:对系统的关键参数进行配置,可以修改、开启或关闭系统功能。
  4. 菜单管理:配置前端动态路由菜单。
  5. 缓存信息:提供刷新系统缓存的接口。
  6. 缓存信息:提供刷新系统缓存的接口。
  7. 系统安全策略:控制用户登录和密码安全,以及系统访问环境安全策略。
  8. 附件管理:管理系统中生成的附件,如用户头像,消息附件等。
  9. 黑名单:管理禁止访问系统的客户端ip地址。
  10. 权限管理 :对系统权限进行维护。
  11. 系统监控:记录系统操作日志。
  12. 定时任务管理:动态管理系统的任务调度。
  13. activiti工作流。
  14. 消息管理系统:用户可以发送邮件和系统内消息。

组织架构简介

graph TD
组织架构 --> 角色
组织架构 --> 部门
组织架构 --> 用户

系统中的组织架构分为部门、角色、用户 ,它们都属于组织架构对象,存放在一张系统组织架构表中,通过一个组织架构类型进行区分。它们之间通过一张组织架构关系表维护上下级树关系,用户放在部门或者角色的下级,部门下面可以新建子部门。不同角色之间是平级关系,没有上下级关系:

graph TD
总公司 --> 人事部 --> 用户3
总公司 --> 软件开发部 --> java开发组
总公司 --> 财务部
软件开发部 --> 测试部
java开发组 --> 用户1
java开发组 --> 用户2
角色1 --> 用户4
角色1 --> 用户5
角色2 --> 用户6

为了提示组织架构对象查询的性能,系统启动时对组织架构对象的树结构进行了缓存,查询时直接去缓存树中进行递归,查找出所有子节点,或所有父节点。在进行组织结构关系修改时,系统会自动刷新缓存。

菜单功能简介

系统将菜单分为四个种类:

菜单类型菜单说明
目录菜单所存放的目录
菜单实际能访问的菜单页面
接口后端提供的访问接口
按钮前端页面可见的按钮

这种四级菜单结构的设计,为菜单的权限提供了更细粒度的控制,可以在菜单管理页面中直接查看到对应菜单授权的信息:

image.png image.png

权限系统简介

系统设计了一个通用的权限系统,不仅仅局限于菜单权限,系统只用一张权限表,就可以支持任意权限,不用再设计其他权限表。

用户自动继承上级部门或者角色的权限,也可拥有自身权限。

提供通一的权限查询接口,根据权限定义、权限类型、用户id,查询出对应权限。 以下以菜单权限为例:

image.png 可以对部门进行菜单授权,则该部门下的用户自动拥有该部门的权限,蓝色文字代表直接对这个授权对象赋予的权限,黑色文字表示这个授权对象的权限是继承自上级对象。

界面提供一个清空自身权限按钮,点击会删除授权对象的所有自身权限,不影响继承权限。

假如部门下有100个用户,其中一个用户我们想单独取消某些用户权限,这时可以同时对用户进行单独授权,拒绝该菜单的权限,当菜单的checkbox为红色时,表示拒绝权限,当checkbox未选中时,表示没有该菜单的权限,当checkbox为选中状态时,表示拥有菜单权限。

注:用户给其他用户授权时,只能将自身拥有的权限授权给他人

引入Activiti工作流

  1. bpmn-js流程在线设计器,可以在线新建并绘制流程保存到服务器

  2. 流程发布与版本控制,重复发布后可以查看流程的历史版本

  3. 流程发起、挂起、激活、终止,指派、增员、减员

  4. 流程任务办理,系统提供了内置的处理页面,根据流程图配置动态展示审批按钮

image.png

image.png