jeesite功能介绍、用户权限、数据权限、系统管理
# 一、组织管理
# 1、用户管理
用户管理js_sys_user
是能够登录平台的账号集合,即登录用户。其最基本的属性为用户名和密码。登录用户类型分为内部员工js_sys_employee
、往来单位用户、会员用户,往来单位又分为供应商、客户、网点、院校、科研院所等。jeesite默认用户类型是员工
主要功能包括:用户的维护、查询、授权角色、授权数据权限。
用户表通过user_type
、ref_code
等字段与其它用户类型表进行一对一关联,以进行水平扩展
**数据权限包括:**拥有的权限和管理的权限;用户管理的数据权限被定义为管理的权限。管理的数据权限你需要在二级管理员里进行配置。
有这样的区分是因为,某用户,例如人事经理,拥有该部门下的新增和修改用户的权限,但不一定有该部门业务数据的查看权限。
为了方便管理,新增用户是不需要设置用户密码的,初始密码将在,参数设置菜单里找到 sys.user.initPassword 中设置,默认密码:123456
有时候为何配置好的角色在用户管理里无法分配,主要考虑这几方面原因:1)二级管理员,可管理的角色范围;2)角色管理中的用户类型是否是员工类型。
用户授权角色js_sys_role
,角色授权菜单js_sys_menu
,进行多重验证,防止非法修改提交参数,分配更高级别的角色和菜单,从根本避免越级授权的问题。
支持员工用户管理的附属部门功能,一个员工可归属多个部门,并支持多部门数据权限过滤。
---- 个人理解补充-----
后台系统来说,一般是给员工使用,用户代表的是员工,前台系统来说,是给会员使用,用户代表的是会员。
如何扩展会员表与用户表进行关联
1、创建会员表js_sys_member
2、数据字典js_sys_dict_data
里面启用member类型
3、在application.yml
里面配置会员登陆页面及登陆成功跳转页面
# # 用户类型配置信息(employee员工,member会员,btype往来单位,persion个人,expert专家,...),JSON 格式说明如下:
# # {"用户类型":{"beanName":"Service或Dao的Bean名称","loginView":"登录页面视图","indexView":"主框架页面视图,支持 redirect: 前缀"}}
# userTypeMap: >
# {
# "employee":{"beanName":"employeeService","loginView":"","indexView":"modules/sys/sysIndex"},
# "member":{"beanName":"memberService","loginView":"","indexView":"modules/sys/sysIndexMember"},
# "btype":{"beanName":"btypeInfoService","loginView":"","indexView":"modules/sys/sysIndexBtype"},
# "expert":{"beanName":"expertService","loginView":"","indexView":"modules/sys/sysIndexExpert"}
# }
2
3
4
5
6
7
8
9
4、
# 2、机构管理
机构管理js_sys_office
是指组织机构也是部门,采用多级组织管理维护,无限层级,支持全国应用。
# 3、公司管理
公司管理js_sys_company
是可选功能,您可以选择使用,公司可设置归属区域和包含的组织机构,主要包含以下几种场景:在财务总账中具有 “帐套”的概念;在费用预算系统中具有 “出账公司”的概念;在HR系统中具有 “合同公司” 的概念;在供应链中具有“交易公司”的概念,采用多级公司管理维护。
# 4、岗位管理
岗位管理js_sys_post
是可选功能,您可以选择使用,它是组织架构下的精细岗位划分,是业务流程控制、业绩考核、预警体系的基础,不同的机构、部门下的同一职务,则是不同的岗位。内部员工的属性。
岗位的主要适用场景:是面向业务管理,而角色主要是针对权限功能。
工作流业务系统里面,在流程跳转的内部,我们通过岗位字段,来扩展流程的走向。
公司表与员工表
js_sys_employe
,一对多; 即员工只属于一个公司员工表与用户表
js_sys_use
,一对多; 即员工可以绑定多个用户机构部门表
js_sys_office
与员工表,一对多,部门分上下级,员工只属于一个部门员工表与岗位表
js_sys_post
,多对多,即员工可以有不同的岗位, 中间表js_sys_employee_post
公司表
js_sys_company
与部门表,多对多,公司分上下级, 中间表js_sys_company_office
员工附属部门关系表
js_sys_employee_office
,连接员工表、岗位表、部门表
# 二、权限管理
# 1、角色管理js_sys_role
角色维护,是系统功能权限设置的基础,相当于权限分组,所有用户对应到相应权限角色,便具有该权限角色所赋予的所有菜单权限和操作权限。
角色中的用户类型
:每种用户类型,可能所属的角色不用,如员工可能会有:经理、财务、会计、职员;会员可能会有:VIP、SVIP、SSVIP等。
**授权功能菜单:**给当前角色设置菜单和权限,依树状形式展示:当前用户的管理员身份下的所有菜单和权限,如果当前用户管理身份为二级管理员,则列出的是二级管理员菜单权重以下的菜单;如果当前用户管理员身份是系统管理,则列出的是系统管理员菜单权重以下的菜单;如果当前用户管理员身份是超级管理员,则列出的是超级管理员菜单权重下的菜单。此举是为了更好的提高授权安全,不能越级授权,权限互相牵制等。
是否系统:如果是系统角色,则在不同租户下是共享的,只能有超级管理员维护它。
这里角色的数据权限授权和用户管理里的数据权限授权是或者关系。
主要功能包括:角色维护、授权功能菜单、授权数据权限、快速分配用户。
jeesite后台没有将用户的所有角色对应的菜单进行合并,可以选择不同的角色,从而显示不同的菜单。
# 2、二级管理员
二级管理员,是由系统管理员指定的,可以分担系统管理员的工作,可以管理用户、分配菜单权限和操作权限一种特殊角色,但它仅具备系统管理员指定范围的管理数据。
二级管理员,主要是给普通用户增加了一个二级管理员的身份,具体功能权限还是有用户管理里分配的角色生效。从二级管理员菜单指定的角色、部门、公司等全部为是否有管理的权限。
主要功能包括:二级管理员维护、设置可管理的部门、可管理的公司、可管理的角色
# 3、系统管理员
超级管理员:为开发者使用的最高级别管理员,主要用于开发和调试,有些修改会直接影响系统的正常运行。
系统管理员:为客户方使用的管理员,主要用于一些基础数据配置,如机构、用户、权限、用户字典等。
多租户:可通过 application.yml 的 user: useCorpModel: true 开启多租户,如果系统开启了多租户模式(SAAS模式),则用超级管理员(system)登录后,这里就可进行新增租户管理员,也就是多租户或SAAS用户,新增的租户管理员只可以管理自己领域内的数据(如:部门、公司、用户、自定义的字典数据等)。
目前JeeSite对多租户的实现方式是表结构数据共享方式,每张表都都有一个corp_code和corp_name租户字段进行数据分离。
主要功能包括:新增租户管理员账号、新增系统管理员账号、系统管理员账号维护
# 4、权限审计
1、账号密码审计:未修改初始密码、使用简单密码、定期未修改密码、长期未登录、未设置密保、结果导出 2、菜单权限审计:根据菜单及权限查询,都有哪些用户 3、用户权限审计:根据用户查询,都有哪些菜单及权限
在参数配置里找到 “sys.user.passwordModifySecurityLevel” 可设置账号密码修改最低安全等级(默认是 0) 密码等级规则包括:密码长度大于等于8、包含大写、包含小写、包含数值、包含符号 0:不限制等级(用户在修改密码的时候不进行等级验证) 1:限制最低等级为很弱(密码验证规则符合1种的,为简单密码) 2:限制最低等级为弱(密码验证规则符合2种的,为简单密码) 3:限制最低等级为安全(密码验证规则符合3到4种的,为安全) 4:限制最低等级为很安全(密码验证规则符合5种的,为很安全)
# 三、系统设置
# 1、菜单管理
菜单管理主要用于配置系统菜单和操作权限。菜单即系统的功能菜单项,操作权限是属于菜单权限的子项,也就是具体的一个操作或按钮,例如:某一个菜单是“商品管理”,其对应的权限可能包括“增加”、“修改”、“删除”、“审核”、“发布”等一系列的权限。
菜单权重是指,什么样的用户或管理员可以操作或访问什么级别的菜单,对菜单的权重级别进行划分,比如:比较重要敏感的菜单,只有管理员才可以拥有。如:超级管理员可以访问二级管理员、系统管理员、超级管理员权重的菜单,但不允许访问默认权限(业务菜单);系统管理员可以访问超级管理员指定给他的系统管理员及以下权限的部分菜单;二级管理员可以访问超级或系统管理员指定给他的二级管理员及以下的部分菜单;普通用户只能访问管理员指定给他的默认权重的菜单。
若想隐藏菜单图标,设置为 hide
即可。
# 2、模块管理
模块管理是针对系统功能进行模块划分,可对某个模块进行停用和启用。你可以通过API获取到模块的状态。菜单是和模块挂钩的,停用和启用后,对应菜单也同步和停用和启用。
系统启动时会自动检测模块是否安装,自动检测模块版本是否需要升级数据库,如果有数据库升级脚本,则系统自动执行。
**注意:**若您新增了一个自定义的模块,且指定的“主类全名”必须是一个ClassLoader中存在的类全名称,否则系统会提示“未安装”,启动后会自动更新关联的菜单为“停用”状态。
# 3、参数设置
参数设置是提供开发人员、实施人员的动态系统配置参数,修改参数不需要去后台修改yml文件,也无需重启服务器即可生效,这里的配置参数开发人员可以通过通用的API进行调用,和获取yml里的参数API是一致的,参数值的读取顺序是:Environment –> JVM中启动的参数 –> application.yml –> 本参数设置中的参数。
使用: Global.getConfig()
# 4、字典管理
字典管理是用来维护数据类型的数据,如下拉框、单选按钮、复选框、树选择的数据,方便系统管理员维护。
主要功能包括:字典分类管理、字典数据管理
# 5、行政区划
行政区划也是区域管理,采用多级维护,主要包括:国家、省、市、县。
# 6、国际化管理
主要用来维护动态数据的多语言译文管理,动态数据如:字典名称数据、菜单名称数据等。
国际化资源译文读取顺序:i18n_xx.properties中的译文 -> 本国际化设置的译文。
默认没有开启,开启在application.yml里面设置 lang.enabled=true
# 7、 产品许可信息
http://gitlab.jeegit.com/yaohailu/file-changing
file-changing SpringBoot定时器+文件md5指纹码实现文件变动的实时监测
作 者 Appleyk
博客地址 https://blog.csdn.net/Appleyk
https://blog.csdn.net/Appleyk/article/details/102880949
https://github.com/kobeyk/file-changing
# 四、系统监控
# 1、访问日志
系统访问留痕的一个日志记录,可记录:接入日志、修改日志、查询日志、登录登出。
日志标题智能拦截,无需你单独写注解去明确日志。日志标题智能读取,规则如下:
1、去掉请求地址结尾的 / 斜杠,根据 请求地址 去找菜单表关联的地址 2、如果还没找到,就尝试通过 Controller 里指定的 权限字符串 去找菜单 3、如果还没找到,就尝试 请求地址 的上一个路径(如去掉 list、save、select)去找菜单 4、找到菜单后,返回 菜单的全路径名,如:系统设置-机构用户-用户管理-编辑 5、如果没找到,返回 未知操作,作为日志标题名
v4.2.3 新增表单提交前后的差异数据分析,新值和旧值比较,较大文本展示差异数据结果。
# 2、数据监控
监控数据源信息、SQL执行效能统计、高并发下分析最慢的SQl有助于优化系统、URI访问统计。
com.jeesite.modules.config.web.DruidStatConfig
# 3、缓存监控
对系统的缓存查询,查看、清理等操作,读取 Caffeine、Redis 数据。
统一的 CacheUtils 工具类操作,实现 J2Cache 二级缓存,解决网络堵塞瓶颈。
参考:Caffeine Cache实战 (opens new window) SpringBoot 使用 Caffeine 本地缓存 - 知乎 (zhihu.com) (opens new window)
# 4、服务器监控
监控服务器硬件资源使用情况。
- 获取 CPU 状态、使用率。
- 获取 JVM 状态、占用资源情况。
- 获取 操作系统信息、硬盘状态信息。
- 获取其它信息。
# 5、作业监控
基于 Quartz 框架实现,界面化在线配置,任务调度信息,界面化配置Cron表达式。
支持在线配置调用表达式,可直接调用 Spring Bean 或 静态类 的方法,支持各种参数传递。
支持启用、停用、运行一次等功能操作。
支持调度日志查询,调度日志查询等。
支持集群情况自动调整,保证每个 job 不重复调用。
支持分布式下对每个微服务模块实例划分,保证各个微服务的 job 不冲突。
默认没有开启,若要开启,则在application.yml里面配置 job.enabled=true
# 6、在线用户
- 查询活动用户:3分钟之内有访问系统的用户。
- 查询所有在线:活动的用户和会话未失效的用户。
- 查询游客用户:访问了系统登录界面,但未进行登录的会话。
- 支持显示登录的设备如:PC、手机。
- 支持强制踢出在线用户会话等功能。
# 五、研发工具
# 1、代码生成工具
- 代码生成是帮助开发者快速生成通用增删改查的工具,一般情况生成后的代码部署后即可运行。
- 然后对生成后的代码进行布局调整,增加业务代码,实现你的业务。
- 极大地简化了你的基础重复代码编写时间。
# 2、组件演示示例
- 帮助开发者快速找到组件调用的示例。
# 六、其它功能
# 1、消息推送
- 实现统一的消息推送接口,包含PC消息、短信消息、邮件消息、微信消息等
- 所有推送消息均通过
MsgPushUtils
工具类发送 - 无需让所有开发者了解消息是怎么发送出去的,只需了解消息发送接口即可。
- 实现消息模板功能,根据用自定义的模板格式并指定变量,即可生成消息内容,严格要求和管理消息数据。
- 包括菜单:未完成消息查询、已完成消息查询、消息模板管理
# 2、站内消息
- 站内信发送和接受,支持全部用户、按用户、按部门、按角色、按岗位发送站内消息或公告。
- 支持站内信消息提醒推送,包括:PC端、APP、邮件、短信、微信。
- 支持站内信用户读取状态查看:已读用户列表、未读用户列表。
# 3、文件管理
- 分权限管理文件:通用文件柜、部门文件柜、个人文件柜
- 支持文件在线预览、文件移动等常用操作
- 支持文件分享、目录分享给他人
# 4、业务流程
- 基于 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#内容发布