Junx-EP开发手册-功能模块开发

  |   0 评论   |   0 浏览

EP框架的核心思想就是简单化,模块化,标准化。让整个开发框架简单、标准,并且是模块化按需配置和加载的,只需引入jar包,即可加载对应功能的表结构,拥有对应的菜单界面或功能接口。下面介绍一下EP内置实现的功能模块。

一、定时任务模块junx-ep-scheduler

如果需要定时任务功能的系统,可以引入定时任务模块junx-ep-scheduler对应的jar包,前提是基于junx-ep-sys进行开发。

		<dependency>
			<groupId>io.github.junxworks</groupId>
			<artifactId>junx-ep-scheduler</artifactId>
			<version>2.1.0</version>
		</dependency>

jar包默认依赖的ui界面,是基于layui开发的前端操作界面:

                <dependency>
		    <groupId>io.github.junxworks</groupId>
		    <artifactId>junx-ep-scheduler-ui</artifactId>
                    <version>2.1.0</version>
		</dependency>

如果不需要UI界面的,可以直接去掉改jar包引入。

junx-ep-scheduler模块是基于quartz做的分布式定时任务管理,数据库会自动注入quartz的表结构,支持配置是否集群模式运行,集群模式下支持多实例同时跑定时任务。定时任务的执行是封装过的,定时任务底层是执行springboot的bean方法,支持传入外部静态参数,下面是定时任务管理的菜单。

1688761026980929536.png

可以对定时任务做增删改查,执行、暂停、恢复等操作,在执行日志目录里面可以看到定时任务的执行情况。

1688762029822238720.png

新增定时任务填入如下参数:

1688762138513432576.png

基于springboot的bean来配置,简单并且容易理解。定时任务配置好了以后,默认是开启的,等待quartz的调度,如果不需要调度,则在外面管理列表中暂停即可。

二、代码生成模块junx-ep-codegen

junx-ep-codegen代码生成,是为了方便开发人员写代码,减少代码量,提供表准的代码生成功能,底层是基于freemarker实现的模板引擎。跟scheduler模块一样,前提是基于junx-ep-sys进行开发。下面是引入codegen模块的pom配置:

		<dependency>
		    <groupId>io.github.junxworks</groupId>
		    <artifactId>junx-ep-codegen</artifactId>
		    <version>2.1.0</version>
		</dependency>

跟定时任务模块一样,codegen提供了内置的ui界面,如果不需要的话,可以排除对应的ui的jar包。

                <dependency>
		    <groupId>io.github.junxworks</groupId>
		    <artifactId>junx-ep-codegen-ui</artifactId>
		    <version>2.1.0</version>
		</dependency>

在引入junx-ep-codegen的jar包后,会自动注入对应的菜单,同时新增一个菜单目录,叫EP代码生成,其下包含了三个子菜单,分别是数据源管理、模板管理、生成器管理。代码生成的基础逻辑就是基于数据库的表结构,生成对应的entity实体、dto、condition、vo、controller、mapper接口、mapper xml、service、service实现等等java类,同时还可以生成前端列表查询、编辑对应的html和js代码,生成这些代码后,以zip包的方式从服务器下载下来,解压后需要手动复制到自己项目对应的目录,做些许修改就能运行,实际项目中一个增删改查标准页面,通过代码生成,开发时间仅需10-15分钟即可完成,比重头开始编码快5-10倍。下面对每个菜单功能进行介绍:

数据源管理:顾名思义,就是管理需要生成代码的数据库,添加数据源后,在生成器中可以选择对应的数据源进行代码生成,下面是数据源管理的新增页面,属性都很简单,不再赘述。

1688797798142107648.png

模板管理:基于数据库表结构,生成对应代码的模板,支持自定义,语法是freemaker的语法。EP提供了一套内置的代码生成模板,可以直接使用或者参考。

1688798414134370304.png

模板说明里面说明了都有哪些内置参数。

1688798561425743872.png

生成器管理:管理代码生成器,系统内置了3个基础的代码生成器,分别是仅生成前端代码的EP默认前端代码生成器、仅生成pojo对象的EP默认POJO对象生成器、生成全部代码的EP默认全域代码生成器

1688799203586269184.png

新建生成器的时候,填入名称和描述,选择对应的模板,移到右边选择框即可,最后点确认保存。这个生成器生成的代码就是其内部模板对应的代码文件。最后打包成zip包下载到本地。

1688799418334633984.png

代码生成器的执行,会弹出执行窗口,在执行窗口中,选择数据源,可以通过表名进行表过滤,选择需要生成代码的表,最后点击生成,等几秒就会收到服务器下载文件的弹窗。

1688800275092529152.png

1688800761405300736.png

下载代码包解压即可。

三、文件上传模块junx-ep-fs

junx-ep-fs是专门用来做文件上传与管理的,可以单独引入jar包,也可以跟junx-ep-sys结合使用,只需要项目引入jar包

		<dependency>
			<groupId>io.github.junxworks</groupId>
			<artifactId>junx-ep-fs</artifactId>
			<version>2.1.0</version>
		</dependency>

mapper扫描能扫描到fs的mapper即可

@MapperScan(basePackages = { "io.github.junxworks.ep.*" }, annotationClass = Mapper.class)

1、文件存储驱动

文件上传模块,内部提供了文件上传与存储的逻辑,文件上传通过模块内部的io.github.junxworks.ep.fs.controller.FileController接收http请求,进行文件接收,存储这块的话,内部提供了2中存储驱动,分别是基于服务器本地文件系统的LocalFileSystemDriver与基于阿里云OSS对象存储服务的OssRepositoryDriver,文件服务默认是基于本地文件系统的存储驱动,可以通过配置junx.ep.fs.mode,配置文件存储默认驱动,支持多个存储驱动同时运行。客户端在调用文件存储的时候,通过io.github.junxworks.ep.core.fs.FsClient.upload(String mode, MultipartFile file)方法来选择采用哪种存储模式,如果不传,则使用文件服务器配置的默认存储驱动进行存储。

2、接口访问权限控制

文件上传模块引入了junx-ep-sys模块,间接依赖junx-ep-auth模块,这里可以使用auth模块的simple account配置功能,配置一个简单的通用账户,提供给客户端进行访问。

junx:
  ep:
    auth:
      shiro:
        simple-accounts:
          - epRamKey: test
            epRamSecret: "asdkjkljf%^78123"
            authorizes: /ep/fs/files/**

客户端如果通过FsClient客户端进行文件上传下载,则在FsClient对象中设置对应的header即可,默认是epRamKey与epRamSecret。

如果客户端不通过FsClient而是直接通过http协议访问文件服务,则可以基于auth的redis分布式缓存进行校验,这里只提供了认证机制,认证过后的请求都有文件上传下载接口调用权限。

3、客户端如何上传下载

junx-ep-core模块中提供了通用的FsClient客户端,这里通过httpclient实现了基础的文件上传下载功能,可以在java代码中直接使用,需要设置fsAddr和orgNo参数,如果文件上传服务配置了auth模块的simple account,则还需要设置header的epRamKey与epRamSecret。FsClient代码实现请参考io.github.junxworks.ep.core.fs.FsClient。在业务项目中注入FsClient对象即可使用,注入方式如下:

1688815315145252864.png

通过FsClient对象进行文件上传下载。

4、业务侧的FileController

junx-ep-sys模块中提供了方便业务侧上传下载的文件服务接口io.github.junxworks.ep.sys.controller.EpFileController,这个是在业务系统中的controller,底层依然是通过FsClient进行的请求转发,这个EpFileController可以直接对js中的接口请求。具体的方法可以查看该controller代码。

5、简单文件服务器实现

这里提供了一个简单的文件服务作为样例,具体参考https://gitee.com/junxworks/junx-ep-simplefs。


标题:Junx-EP开发手册-功能模块开发
作者:michael
地址:https://blog.junxworks.cn/articles/2023/08/08/1691466331477.html