JBolt开发平台入门(1)-简介、基础能力介绍

教程总目录

JBolt平台系统概述:

这里说的JBolt开发平台并不是JFinal Eclipse插件-jbolt,而是小木公司里开发项目使用的内部平台,旨在极大节省开发投入的人力和时间成本,增加前后台、接口的开发效率。目前已经使用到多个项目中。


JBolt开发平台-登录页

JBolt平台主要技术栈

JFinal3.7、JFinal-undertow1.6、Bootstrap4.3、JQuery3.x、Mysql、Pjax等
另外使用了jbolt.cn开发的eclipse插件辅助开发。

JBolt的应用实践案例

1、数据猫教育投资版

金未资本旗下教育行业投资人使用的工具,前端是小程序,后端是公司内部日常办公、研究使用的管理系统,小程序使用的数据接口。
JBolt基础平台提供的能力,满足了数据猫的快速开发需求。

2、jbolt.cnEclipse插件的在线更新管理系统

管理几十个类库的在线更新,JBolt的版本迭代、发布、changeLog、和升级文件。

3、微信公众号和小程序电商

已经完成一大半。

4、JBolt VIP用户里做了好多税务局啊,教育局事务管理啊,电商,国家工信部系统之类的。

JBolt平台能力

JBolt里的设计做到了快速开发和灵活应对需求变化,详细请看下面的解释:

平台图解

系统架构设计

代码图解

JBolt目前为了照顾很多JFinal新学员针对GIT和MAVEN操作不熟悉 降低学习成本, 分层分包不太会用的情况,使用了比较简单的maven工程结构,未来随着成员的不断成长和学习,逐步基于maven 构建多模块应用结构。


JBolt源码

1、用户管理:

包含创建用户、分配角色(一人可多角色)、分配账号密码、重置密码、禁用账户、用户登录系统等可视化功能


用户管理
JBolt开发平台-登录页

用户信息编辑表单
重置密码
修改自身登录密码

用户一经登录,会将自身的ID存入Session,在Controller层需要使用或者需要传递给下面service使用的时候,可以使用getSessionAdminUserId()去获取。

getsessionUserId的用法
方便后面service里判断用户信息和特殊权限的时候使用,手工调用日志记录接口有需要传入操作人信息,就是它。

2、系统权限资源管理:

左侧导航菜单权限(二级,可扩展多级)、非菜单权限(其它任何按钮链接和非可视化权限)。权限菜单的排序功能,已经权限资源的缓存。


权限资源配置管理

注意:这种设计可以灵活应对需求,主要分配左侧菜单导航用户控制用户访问大模块入口,其它细节有的系统只要进入模块 用户就可以拥有整个模块下的所有功能操作权限,但是也有系统需求是必须控制住按钮的显示和隐藏,这样可以通过在模块下增加三级权限设置为非菜单权限或者扩展分类出按钮权限,在页面判断是否存在各种按钮对应的权限标识,如果存在就显示,如果不存在就不显示。

新增权限资源:
新增权限资源

上图展示一个权限资源默认拥有的字段属性,上级资源用来指定隶属的模块层级,资源名称、ICONS是给左侧一级菜单使用的,指定左侧显示的图标。
这里的图标是使用了Font-awesome.css这种字体图标。所以里面直接输入字体图标的标识就行了。


一个资源的属性

在右侧管理列表中添加编辑的菜单资源,名字、地址、图标、还有显示顺序都跟左侧实际出来的导航一一对应。

右侧设置的信息左侧同步显示

新增非菜单权限说明

这里举个例子:现在系统定义一个角色叫资料审核员,需要对公文资料模块进行增删改查基础上,还需要有一个审核审批的能力。
需要控制页面是否显示出审核按钮。
两种做法:

1、使用自定义指令#permission(“permissionKey”)实现

看下图,通过指令判断权限存在就渲染包含的内容,其中指令的参数是PermissionKey中的权限定义常量。

通过指令判断权限
权限验证通过后渲染出按钮
2、第一种方法是控制显示和隐藏两种状态,那么有时候还需要if else模式

就是如果有这个权限显示一个按钮,如果没有这个权限可能就显示一个提示信息,一个错误信息,或者任何一个你想显示的组件。
此时就需要一个辅助的权限验证了:这里使用#if #else #end 判断表达式里使用hasPermission去判断权限


通过hasPermission判断权限

在模板引擎配置里有相关配置,UserAuthKit这个用户鉴权工具类


用户鉴权工具类

配置一下就行了


在模板引擎配置里有相关配置

小疑问?

这里可能你会疑问,权限资源都是存在数据表里的,怎么在上面图中看到,每个资源都有自己的资源标识KEY。
这套系统里提供了从数据库里一键生成静态常量的方法。
方便在Controller层注解使用和模板文件中使用。

权限资源常量生成器

链接数据库,读取资源定义表permission,生成PermissionKey.java

权限资源常量生成器

生成的静态常量
注解的使用:

注解 checkPermission(permissionKey)意思是这个Controller中所有的action 访问的时候都要做针对指定权限Key的权限拦截判断


注解使用
权限其他地方使用

JBolt平台使用数据库里定义权限、角色分配权限、用户分配角色的方式灵活控制权限资源。

系统用户登录后,会将此用户分配的一个或者多个角色的可用权限加入在缓存,这样在其他地方可以快速使用。

例如在拦截器内的权限判断,可以通过在Controller中的注解获知道 正在访问的action是否通过权限资源对比校验,对比时候就根据当前session中的用户去找的缓存内的权限。
拦截器内的权限判断
UserAuthKit.java

这个工具类提供了权限校验的静态方法hasRole、hasPermission


UserAuthKit.java

判断权限指令

这个就是被自定义指令#permission使用用来判断是否存在指定权限的

3、角色管理:

管理角色、为角色分配权限资源等

管理界面
增加就一个名称
选中分配资源权限

注意: 这里用户和角色是一对多的关系,即一个用户身上可以分配多个角色。
可以灵活应对各种需求:比如,一个用户即是库管又是财务的时候,系统针对角色划分里,库管角色和财务角色分配的菜单资源权限不同,但是同时设置为一个人的话,权限就合并后进缓存了。

如果你的项目有特殊需求 比如给政府企事业单位做的系统,涉及到岗位、部门、组织架构的权限角色划分,可以在此基础上扩展出来,增加部门管理、岗位管理后 为用户分配上部门和岗位。

角色本身也可以在命名的时候 按照岗位职责命名,灵活使用,灵活扩展,如有需要特殊扩展,联系小木。

注意:底层脚手架在于灵活扩展,满足需求,这里没有做部门和岗位,很多系统用不上,默认没加,请注意。

4、操作日志:

这里的操作日志设计的是系统关键日志,是通过用户在每一个模块的关键操作中调用添加的,例如用户对一条角色记录做了添加、修改、删除操作,在相应的Service里的save update delete业务中,调用操作日志的服务,加入关键日志描述。

还有一种是通过注解增加,注解增加的日志可能没有手工调用接口增加的日志描述的更准确详细。

在关键业务中手工调用日志服务加入详细的日志信息

手工调用

详细日志带连接
这里有一个扩展,就是生成的日志除了delete掉没有了的关联对象之外 ,其它日志产生的主体信息在看系统日志的时候,可以点日志链接,直接链到响应的管理界面或者详情页面去。
控制每条日志的详情链接
每条日志都能精确定位到需要跳转查看的地方

下一节:JBolt开发平台二次开发入门(2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容