一、组织管理
1、用户管理
用户管理是具备平台登录权限的账号集合,这些账号统称为用户(User)。作为登录用户的核心标识,用户名、密码、管理员类型以及用户类型构成了其最基本的属性。在登录用户的分类中,我们可以清晰地辨别出几种主要类型:内部员工(Employee)、会员用户(Member)、专家用户(Expert)、往来单位用户(BType)等,这些子类别各自承载着不同的业务合作和互动需求。通过精细化的用户管理策略,我们能够确保平台的安全性和高效性,同时满足不同用户群体的个性化需求。
主要功能包括:员工用户的维护、停用启用、查询、分配角色、分配数据权限、重置密码等。
1)用户管理的数据权限:
数据权限包括:拥有的权限、管理的权限;而用户管理和机构管理的数据权限被定义为管理的权限(所以需要从 “二级管理员 -> 新增 -> 可管理的数据权限” 里授权设置)
您也可以改变这个默认规则,将用户管理的权限,采用无限级授权(如:只能创建本部门的用户,只能分配自己拥有的角色,只能分配自己拥有的菜单),这时您需要将用户管理的权限改为拥有的权限即可,找到 application.yml 设置 user.adminCtrlPermi=1 。
支持集团形式的数据权限控制,地区、公司、部门、多级子部门。
更多关于数据权限配置,详见专题文章:数据权限
2)管理的权限应用场景:
某用户,例如人事经理,拥有该部门下的新增和修改用户的权限,但不一定有该部门业务数据的查看权限。
3)用户附属多部门:
支持员工用户设置附属机构功能,一个员工可关联多个部门,并支持多部门数据权限过滤。
4)防越级授权:
进行用户授权角色,角色授权菜单,进行前端及后端的双重验证,防止非法修改提交参数,分配更高级别的角色和菜单,从根本避免越级授权的问题。
5)用户密码:
新增用户时,是不需要设置密码的,初始密码将在,参数设置菜单里找到 sys.user.initPassword 中设置,默认密码:123456
6)其它介绍:
系统默认会给用户类型设置一个 “默认角色”,即无需通过用户授权角色就有的角色权限,方便用户指定默认权限。每一个用户类型都可以指定一个默认角色,在系统参数设置菜单里配置角色编码即可。
为什么配置好的角色在用户管理里无法分配?主要考虑这几方面原因:1)二级管理员,可管理的角色范围;2)角色管理中的用户类型是否是员工类型。
2、机构管理
机构管理,即是对组织机构或部门进行的系统化、层级化的维护与管理。它采用多级组织架构的设计,支持无限层级的深度扩展,以满足全国范围或集团性质的应用需求。这一管理方式旨在确保组织结构的清晰、高效和灵活,以适应不同地域、不同层级、不同功能部门的运作需求。
支持机构类型设置,如:省级公司、市级公司、部门等,方便进行分级管理。方便通过当前用户筛选查找机构类型的上级机构。
3、公司管理
公司管理是一项可选的功能,用户可根据自身需求选择是否启用,这一功能主要适用于以下场景:
在财务总账中,具有 “帐套” 的概念,帮助用户精确管理财务数据和账目;
在费用预算系统中,具有 “出账公司” 的概念,确保费用预算与实际支出公司的对应关系清晰;
在 HR 系统中,具有 “合同公司” 的概念,便于管理员工合同及与合同相关的公司信息;
在供应链管理中,具有 “交易公司” 的概念,以支持多级公司间复杂的交易关系及供应链管理。
通过这一多级公司管理维护机制,企业能够构建更为精细、高效的管理体系,满足多样化的业务需求。
公司可绑定归属区域(行政区划),可绑定相应的组织机构(内部组织部门)。
4、岗位管理
岗位管理是一项可选功能,用户可根据自身需求选择是否启用。它是组织架构下的精细岗位划分。
通过用户附属部门实现,即使是同一职务或不同的职务,在不同机构、部门下也能得到精准而独特的岗位定义。
岗位允许关联角色,可作为角色组的形式体现,快速帮助用户快速分配权限。也可替代业务流程中的角色控制。
岗位的主要适用场景:一般是面向业务管理,而角色主要是针对权限功能。
v5.4.0 新增岗位关联角色,简单修改可支持根据岗位分配菜单权限。
v5.9.2 新增 用户->岗位->角色 权限控制,需开启 user.postRolePermi=true 参数,可通过右上角用户头像,切换岗位,自动划分当前菜单权限。
二、权限管理
1、角色管理
角色管理是系统权限管理的基础,用于定义和管理不同的角色,基于角色的访问控制方法(Role-Based Access Control,简称 RBAC)。每个角色代表了一组特定的权限集合,可理解为权限组,用户对应的角色,便具有该角色所赋予的所有菜单权限和操作权限。
简化权限授权:将权限管理和用户管理分离,管理员只需管理角色和资源的访问权限,不需要单独对每个用户的权限
减少权限赋予出错:如果管理员在分配角色和资源权限时出现错误,可以很容易地进行更正,不需单独对每个用户的权限
提高系统安全性:通过控制角色的访问权限,可以限制用户对系统资源的访问(如按钮、接口),从而减少系统被攻击的风险
用户类型:每种类型,可能所属的角色不用。如,员工有:经理、财务、会计、职员;会员有:VIP、SVIP、SSVIP等。
主要功能包括:角色维护、授权功能菜单、授权数据权限、快速分配用户。
授权功能菜单:
给当前角色设置菜单和权限,依树状形式展示,当前用户管理权限范围内的菜单和权限:
如果当前用户身份为超级管理员,则列出的是超级管理员菜单权重下的菜单
如果当前用户身份为系统管理员,则列出的是系统管理员菜单权重以下的菜单
如果当前用户身份为二级管理员,则列出的当前用户仅拥有的菜单
此举是为了更好的提高授权安全,不能越级授权,权限互相牵制等。
是否系统(系统角色):
如果是系统角色,则在不同租户下是共享的,只能有超级管理员维护它。
与用户管理的数据权限关系:
这里角色的数据权限授权和用户管理里的数据权限授权是或者关系。
2、二级管理员
二级管理员,是由系统管理员指定的,可以分担系统管理员的工作,可以管理用户、分配菜单权限和操作权限一种特殊角色,但它仅具备系统管理员指定范围的管理数据。
二级管理员,主要是给普通用户增加了一个二级管理员的身份,具体功能权限还是有用户管理里分配的角色生效。从二级管理员菜单指定的角色、部门、公司等全部为是否有管理的权限。
主要功能包括:二级管理员维护、设置可管理的部门、可管理的公司、可管理的角色
3、系统管理员
超级管理员:为开发者使用的最高级别管理员,主要用于开发和调试,有些修改会直接影响系统的正常运行。
系统管理员:为客户方使用的管理员,主要用于一些基础数据配置,如机构、用户、权限、用户字典等。
多租户:可通过 application.yml 的 user: useCorpModel: true 开启多租户,如果系统开启了多租户模式(SAAS模式),则用超级管理员(system)登录后,这里就可进行新增租户管理员,也就是多租户或SAAS用户,新增的租户管理员只可以管理自己领域内的数据(如:部门、公司、用户、自定义的字典数据等)。
多租户的实现方式支持:表结构数据共享方式、模式分离方式、库分离方式,详情见专题文章:SaaS架构、多租户架构
主要功能包括:新增租户管理员账号、新增系统管理员账号、系统管理员账号维护
4、权限审计
1、账号密码审计:未修改初始密码、使用简单密码、定期未修改密码、长期未登录、未设置密保、结果导出
2、菜单权限审计:根据菜单及权限查询,都有哪些用户
3、用户权限审计:根据用户查询,都有哪些菜单及权限
在参数配置里找到 sys.user.passwordModifySecurityLevel 可设置账号密码修改最低安全等级(默认是 0) 密码等级规则包括:密码长度大于等于8、包含大写、包含小写、包含数值、包含符号
0:不限制等级(用户在修改密码的时候不进行等级验证)
1:限制最低等级为很弱(密码验证规则符合1种的,为简单密码)
2:限制最低等级为弱(密码验证规则符合2种的,为简单密码)
3:限制最低等级为安全(密码验证规则符合3到4种的,为安全)
4:限制最低等级为很安全(密码验证规则符合5种的,为很安全)
三、系统设置
1、菜单管理
菜单管理主要用于配置系统菜单和操作权限。菜单即系统的功能菜单项,操作权限是属于菜单权限的子项,也就是具体的一个操作或按钮,例如:某一个菜单是“商品管理”,其对应的权限可能包括“增加”、“修改”、“删除”、“审核”、“发布”等一系列的权限。
菜单支持归属子系统权限分类,根据当前用户分配的子系统权限,展示不同的权限。
菜单权重是指,什么样的用户或管理员可以操作或访问什么级别的菜单,对菜单的权重级别进行划分,比如:比较重要敏感的菜单,只有管理员才可以拥有。如:超级管理员可以访问二级管理员、系统管理员、超级管理员权重的菜单,但不允许访问默认权限(业务菜单);系统管理员可以访问超级管理员指定给他的系统管理员及以下权限的部分菜单;二级管理员可以访问超级或系统管理员指定给他的二级管理员及以下的部分菜单;普通用户只能访问管理员指定给他的默认权重的菜单。
若想隐藏菜单图标,设置为 hide 即可。
菜单的 URL 规则:
1、如果以 /// 开头,则代表是站点根路径(结果:http://localhost/{href})
2、如果以 // 开头,则代表是工程根路径(结果:http://localhost/{ctxPath}/{href})
3、如果以 / 开头,则代表是管理根路径(结果:http://localhost/{ctxPath}/{adminPath}/{href})
菜单的 URL 支持变量,变量格式 {变量名} 规则如下:
1、{ssoToken} : 单点登录的token编码,url参数中的参数分隔符请使用“%26”进行转义,
例如:{projectUrl}/sso/{ssoToken}?url=/sys/user/list?p1=v1%26p2=v2&relogin=true
2、{userCode} : 当前用户编码
3、{userName} : 当前用户名称
4、{userType} : 当前用户类型
5、{corpCode} : 当前用户编码
6、{corpName} : 当前用户名称
7、{menuCode} : 当前菜单编码
8、{menuParentCode} : 当前菜单上级编码
9、{menuParentCodes} : 当前菜单所有上级编码
10、userCache 中的 Key 可作为变量名
11、yml 或 sys_config 中的 Key 可作为变量名
2、模块管理
模块管理是针对系统功能进行模块划分,可对某个模块进行停用和启用。您可以通过API获取到模块的状态。菜单是和模块挂钩的,停用和启用后,对应菜单也同步和停用和启用。
系统启动时会自动检测模块是否安装,自动检测模块版本是否需要升级数据库,如果有数据库升级脚本,则系统自动执行。
注意:若您新增了一个自定义的模块,且指定的“主类全名”必须是一个ClassLoader中存在的类全名称,否则系统会提示“未安装”,启动后会自动更新关联的菜单为“停用”状态。
模块管理提供了代码生成功能,可快速创建模块,并生成对应 Maven工程代码。
新建模块生成的代码,可自定义配置生成模板,添加业务功能等。
3、参数设置
参数设置是提供开发人员、实施人员的动态系统配置参数,修改参数不需要去后台修改yml文件,也无需重启服务器即可生效,这里的配置参数开发人员可以通过通用的API进行调用,和获取yml里的参数API是一致的,参数值的读取顺序是:Environment --> JVM中启动的参数 --> application.yml --> 本参数设置中的参数。
4、字典管理
字典管理是用来维护数据类型的数据,如下拉框、单选按钮、复选框、树选择的数据,方便系统管理员维护,如果客户要求增加或变更一个配置项,只需要修改对应的字典类型数据即可,不需要修改代码。
主要功能包括:字典分类管理、字典数据管理
5、行政区划
行政区划也是区域管理,采用多级维护,主要包括:国家、省、市、县。
6、国际化管理
主要用来维护动态数据的多语言译文管理,动态数据如:字典名称数据、菜单名称数据等。
国际化资源译文读取顺序:i18n_xx.properties中的译文 -> 本国际化设置的译文。
四、系统监控
1、访问日志
系统访问留痕的一个日志记录,可记录:接入日志、修改日志、查询日志、登录登出。
日志标题智能拦截,无需您单独写注解去明确日志。日志标题智能读取,规则如下:
1、去掉请求地址结尾的 / 斜杠,根据 请求地址 去找菜单表关联的地址
2、如果还没找到,就尝试通过 Controller 里指定的 权限字符串 去找菜单
3、如果还没找到,就尝试 请求地址 的上一个路径(如去掉 list、save、select)去找菜单
4、找到菜单后,返回 菜单的全路径名,如:系统设置-机构用户-用户管理-编辑
5、如果没找到,返回 未知操作,作为日志标题名
v4.2.3 新增表单提交前后的差异数据分析,新值和旧值比较,较大文本展示差异数据结果。
2、数据监控
监控数据源信息、SQL执行效能统计、高并发下分析最慢的SQl有助于优化系统、URI访问统计。
3、缓存监控
对系统的缓存查询,查看、清理等操作,读取 Caffeine、Redis 数据。
统一的 CacheUtils 工具类操作,实现 J2Cache 二级缓存,解决网络堵塞瓶颈。
4、服务器监控
监控服务器硬件资源使用情况。
获取 CPU 状态、使用率。
获取 JVM 状态、占用资源情况。
获取 操作系统信息、硬盘状态信息。
获取其它信息。
5、作业监控
基于 Quartz 框架实现,界面化在线配置,任务调度信息,界面化配置Cron表达式。
支持在线配置调用表达式,可直接调用 Spring Bean 或 静态类 的方法,支持各种参数传递。
支持启用、停用、运行一次等功能操作。
支持调度日志查询,调度日志查询等。
支持集群情况自动调整,保证每个 job 不重复调用。
支持分布式下对每个微服务模块实例划分,保证各个微服务的 job 不冲突。
6、在线用户
查询活动用户:3分钟之内有访问系统的用户。
查询所有在线:活动的用户和会话未失效的用户。
查询游客用户:访问了系统登录界面,但未进行登录的会话。
支持显示登录的设备如:PC、手机。
支持强制踢出在线用户会话等功能。
五、研发工具
1、代码生成工具
提供快速的增删、改、查、及个性化通用功能的代码生成(包括后端和前端代码)
还支持快速创建菜单和权限功能,如果不太考虑美观问题,生成的代码就可以直接工作了。
支持单表增删改查、主子表增删改查、树表增删改查、仅查询、仅持久层、Cloud 微服务模块生成
支持根据您的业务实现自定义生成模板,快速生成通用业务代码。
支持多数据源,生成时选择外部数据源的代码生成。
该功能极大地简化了您的基础重复代码编写时间。
2、组件演示示例
帮助开发者快速找到组件调用的示例。
六、其它功能
1、消息推送
实现统一的消息推送接口,包含PC消息、短信消息、邮件消息、微信消息等
所有推送消息均通过 MsgPushUtils 工具类发送。
无需让所有开发者了解消息是怎么发送出去的,只需了解消息发送接口即可。
实现消息模板功能,根据用自定义的模板格式并指定变量,即可生成消息内容,严格要求和管理消息数据。
包括菜单:未完成消息查询、已完成消息查询、消息模板管理
2、站内消息
站内信发送和接受,支持全部用户、按用户、按部门、按角色、按岗位
支持站内信消息提醒推送,包括:PC端、APP、邮件、短信、微信。
支持自定义消息类型:通知公告、新闻、会议、其它。
支持自定义消息等级:普通、一般、紧急。
支持用户读取状态查看:已读用户列表、未读用户列表。
3、文件管理
分权限管理文件:通用文件柜、部门文件柜、个人文件柜
支持文件在线预览、文件移动等常用操作
支持文件分享、目录分享给他人
4、业务流程
JeeSite BPM 基于 Flowable(Activiti)生来具有的稳定工作流引擎
支持在线流程设计器,流程导入导出,符合 BPMN 规范,中国式工作流
支持流程办理、退回、自由流、会签、并行、串行、服务任务等
支持退回任务,退回到指定环节,退回到上一步,退回到发起人
支持转办任务,向后加签任务,将任务交接给他人办理,办理完成后继续下一步骤
支持委托任务,向前加签任务,将任务委托给他人,他人办理完成后再回到委托人
支持加签减签,并行会签加签或减签、串行会签加签减签、串行并行签中用户查询
支持智能提交,相同处理人自动跳过,支持自由指定下一步处理人
支持作废流程,允许发起人快速终止流程,管理员维护终止流程
支持自由流程,根据环节选择,自由跳转到指定环节,特事特办
支持流程撤回,下一步未办理的任务,可进行取回撤销重做任务
支持流程跟踪图,流程状态展现,流转信息,任务历史,任务分配信息
支持一个流程模型挂接多个业务单据,如某公司8种费用审批流程,表单不一样,但流程相同
支持表单和环节多对多,即不同的环节使用相同的表单,相同的表单在不同环节中使用
流程事件脚本在线编写,包括:流程启动、完成、取消;任务分配、创建、结束等
流程脚本管理(Groovy、Beetl),在线编辑、自动完成、脚本测试、多语言脚本模板维护
我的待办任务处理,我的已办任务、我创建的任务查询、流程跟踪、审批记录查询
流程管控,在无关联表单情况下流程调试,如流程发起、挂起;流程定义、实例、任务等查询;任务办理等
支持流程组件标签定义(流程按钮、意见审批、下一步流程信息等)快速与自定义的业务表单建立关系。
版本化管理流程,新调整的流程业务不影响正在运行,未结束的流程继续流转。
方便自行扩展引擎功能:催办任务、传阅任务、流水号管理、常用语管理。
5、内容管理
支持多站点建站,企业网站、门户网站
包含功能:站点管理、栏目管理、模板管理、内容发布、页面静态化访问
前端演示:http://demo.jeesite.com/js/f/index-main.html
后端演示:http://demo.jeesite.com/js/a/index#/js/a/cms/index#内容发布
6、统计报表
可视化在线报表设计器
可视化在线数据大屏设计器
7、移动端管理
APP 版本管理
APP 意见反馈
8、更多功能
支持众多的第三方账号登录
OAuth2 认证服务器、第三方接入系统
支持文件在线预览图片、文档、文本、视频等格式
支持文件对象存储 MinIO、阿里云、腾讯云、七牛云等
支持分布式云服务架构、多负载、高可用、微服务、跨进程分布式事务
支持读写分离、分库分表、分布式数据库解决方案
详见功能专题:http://docs.jeesite.com