T2Admin 完美集成 RDP报表(含:菜单、权限系统)

7 篇文章 0 订阅
3 篇文章 0 订阅

目录

需求分析和实现方式

需求

实现

集成教程

1.下载RDP源码-启动(不做详解)【RDP-SERVER】

2.添加远程菜单-报表管理-网格报表

3.接入T2AdminToken校验+租户系统(以网格报表为例)

4.集成效果

集成实现到此结束,仅探索和提供集成思路分析,如有集成需求可参考此文章!!!

源码参考地址


需求分析和实现方式

需求

  1. 需要实现T2Admin以远程菜单的形式打开RDP报表设计页面;
  2. RDP页面需要登录(登录逻辑与T2Admin一样)可访问;

实现

  1. 下载RDP源码本地启用
  2. 改进源代码去除原本的菜单角色信息
  3. 添加自己的全局授权检查(token校验)

集成教程

1.下载RDP源码-启动(不做详解)【RDP-SERVER】

http://product.mftcc.cn/BS/down2?name=rdp_server_source

  • 修改pom中导入JBarcode包方式
<dependency>
    <groupId>org.jbarcode</groupId>
    <artifactId>JBarcode</artifactId>
	<scope>system</scope>
	<version>${pom.basedir}/lib/jbarcode-0.2.8.jar</version>
</dependency>

打包方式修改不做讲解

  • 导入mysql初始脚本

  • 修改application数据库、redis、文件存储路径等其他配置
  • 启动 

登录账号:admin,密码:admin

2.添加远程菜单-报表管理-网格报表

http://127.0.0.1:8080/index.html#modules/rdp/list.html

 我们只需要中间这一块,外部框架用本身系统的。

这一块使用iframe引入的,就非常好办就可以拿出中间这一块的网页地址。

http://127.0.0.1:8080/modules/rdp/list.html

添加远程菜单如下:

打开菜单

 可以看到这个地址不需要权限可以直接访问;【页面样式可以修改-暂时不调整】

3.接入T2AdminToken校验+租户系统(以网格报表为例)

实现每个企业都可以维护自己的报表数据;

并且需要登录才可访问,如果不登陆将以匿名用户身份记录数据(方便维护);

  • 将T2Admin的登录验证过滤器AuthFilter以及全局异常等添加到【RDP-SERVER】中
  • token校验已经完成-如果没有用户信息就是匿名,现在需要将用户信息利用窗口通信机制传输到iframe框架中并且将所有涉及数据区分到租户;以下部分将进入难度,需要阅读RDP的源码;- 仅仅讲解修改部分 - 原理自行研究!
  • 编写一个js工具类,监听父窗口的消息,也可写一些工具封装方法。

再全局或者局部页面中引入此js;

并且修改所有的ajax请求带上token;

页面数据请求CRUD都带上clientId参数(租户);

以下列举需要修改的js(修改详细内容请参考源码-这里只提供思路)

src\main\resources\statics\js\modules\rdp\list.js(报表列表展示页)

        引入t2admin.js,请求添加token,报表预览页面跳转加上client_id参数(报表数据集会用到此参数

src\main\resources\statics\rdp\common\sourcejs\charts.js(加载图表数据)

         引入t2admin.js,请求添加token

src\main\resources\statics\rdp\common\all\all.min.js(公共js)

        引入t2admin.js

src\main\resources\statics\rdp\common\sourcejs\dataReport.js(报表设计页面需要)

        引入t2admin.js,请求添加token

src\main\resources\statics\rdp\js\loadCharts.js

        引入t2admin.js,请求添加token

src\main\resources\statics\rdp\js\show.js(报表预览页)

        引入t2admin.js,请求添加token

src\main\resources\statics\rdp\common\sourcejs\main.js 

        请求添加token,预览url添加client_id参数(报表数据集会用到此参数

src\main\resources\statics\ser\js\getConfig.js (数据源配置)

       请求添加token,[数据表添加client_id]

src\main\resources\statics\js\common-config.js

       请求添加token

src\main\resources\statics\rdp\common\sourcejs\dataSets.js (数据集)

       请求添加token,  [数据表添加client_id]

  • 修改后端接口都带上clientId(租户信息)

因为加上了租户这一级,文件存储和查询都需要添加租户目录,每一个租户不同的目录

添加一个工具类处理对接问题。

 以下列举需要修改的Api接口类

 src\main\java\io\report\modules\rdp\controller\RdpController.java

主要修改内容:ServerUtil.getDataPath => T2AdminUtil.getDataPath

重写查询保存接口(需要关联数据库)!

我们需要另外写一个报表文件记录表,用于存储文件记录;RDP直接读取的文件,无表记录

报表的CRUD都需要与表相关联;表结构如下:

还需要一个ID的目的是为了文件迁移,不同租户文件的UUID名称可相同;

通过clientId+uuid唯一区分文件;

src\main\java\io\report\modules\bddp\controller\BddpShowController.java

修改内容:ServerUtil.getDataPath => T2AdminUtil.getDataPath

src\main\java\io\report\modules\rdp\controller\RdpPageController.java

 修改内容:预览路径处理

src\main\java\io\report\modules\rdp\service\impl\DesignServiceImpl.java

修改内容:数据源查询修改需要带上租户信息--新增表字段

src\main\java\io\report\modules\rdp\controller\RdpPubController.java

修改内容:路径处理

src\main\java\io\report\modules\ser\excontroller\ExDataSourceController.java

修改内容: 查询和修改关联client_id(租户)

  • RDP使用shiro框架进行登录授权校验,放开所有路径校验

4.集成效果

集成页面已接受到父窗口的用户信息

新建报表列表--已经区分租户,只能查出当前租户的信息

还发现了一些问题已经做了以下细节的修改。

数据源集成页面

 报表设计页面

集成实现到此结束,仅探索和提供集成思路分析,如有集成需求可参考此文章!!!

源码参考地址

https://github.com/tangzhangss/T2Admin/tree/master/api/common-report-rdp

​​​​​​

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨中漫步t2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值