`Version1.0.10` 前言: 所谓**系统变量**就是预置一些和当前登录人相关的参数,如:用户账号、用户部门编码,在解析sql/api地址的时候,自动替换成真实的参数值,并且支持用户自定义变量名,但是仅限于jeecgboot中集成报表。 步骤: 1.在jeecg-boot中添加依赖集成报表(此步骤可参考快速集成文档) 2.添加权限实现类,主要看方法`getUserInfo` ~~~ package org.jeecg.config.jimureport; import org.jeecg.common.constant.DataBaseConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.SysUserCacheInfo; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.TokenUtils; import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @Component class JimuReportTokenService implements JmReportTokenServiceI { @Autowired private ISysBaseAPI sysBaseAPI; @Autowired @Lazy private RedisUtil redisUtil; @Override public String getToken(HttpServletRequest request) { return TokenUtils.getTokenByRequest(request); } @Override public String getUsername(String token) { return JwtUtil.getUsername(token); } @Override public Boolean verifyToken(String token) { return TokenUtils.verifyToken(token, sysBaseAPI, redisUtil); } @Override public Map<String, Object> getUserInfo(String token) { String username = JwtUtil.getUsername(token); //此处通过token只能拿到一个信息 用户账号 后面的就是根据账号获取其他信息 查询数据或是走redis 用户根据自身业务可自定义 SysUserCacheInfo userInfo = sysBaseAPI.getCacheUser(username); Map<String, Object> map = new HashMap<String, Object>(); //设置账号名 map.put("sysUserCode", userInfo.getSysUserCode()); //设置部门编码 map.put("sysOrgCode", userInfo.getSysOrgCode()); // 将所有信息存放至map 解析sql会根据map的键值解析,可自定义其他值 return map; } } ~~~ 3.测试:使用admin登录 - 3-1 建表录数据: ![](https://img.kancloud.cn/3c/2f/3c2f4dd772a3dde4f27fa36bf77b440d_454x133.png) - 3-2 录入sql解析:`select * from test_sys_param where name = '#{sysUserCode}'` ![](https://img.kancloud.cn/19/af/19af24cf7cbfb3c31aedf05749fbd934_1869x516.png) - 3-3 创建报表: ![](https://img.kancloud.cn/0b/93/0b93e4adb1f9b3f3d6b50822740f1234_560x188.png) - 3-4 预览数据: ![](https://img.kancloud.cn/d8/99/d899742cc3116d56924db71e7d6b7408_807x249.png) -------------------------------------------------- #### API请求**特殊的**系统变量 `{{ domainURL }}` 对于api请求,需要填写api请求地址,如果请求的是本地项目自带的接口,通常还是需要带上域名/ip: `http://localhost:8080/jeecg-boot/test/api/one` ![](https://img.kancloud.cn/f2/06/f206c4c39805226f52ae8893d1ac64b0_1898x521.png) 对于升级到1.0.10版本以上的用户,可以使用简写`{{ domainURL }}`替换之,如: `{{ domainURL }}/test/api/one`