数据权限,自定义注解,从1.5.1升级到1.8.0报错

Blade 未结 1 749
ccc
ccc 剑圣 2021-07-23 10:59

一、该问题的重现步骤是什么?

1. 配置注解,调用接口测试报错。

2. 注释注释,调用接口正常返回。


二、你期待的结果是什么?实际看到的又是什么?

能正常过滤,不报错。

过滤的语句是

@DataAuth(type = DataScopeEnum.CUSTOM, value = "WHERE scope.create_dept in (SELECT IF(LENGTH(TRIM(SUBSTRING(ancestors, 3, 19))) < 1, '${deptId}', SUBSTRING(ancestors, 3, 19)) AS dept_id FROM libra_dept WHERE id IN (${deptId}))")



报错信息是

Caused by: java.lang.NullPointerException: null
    at org.springblade.system.cache.DataScopeCache.getDataScopeByMapper(DataScopeCache.java:46)
    at org.springblade.system.handler.DataScopeModelHandler.getDataScopeByMapper(DataScopeModelHandler.java:23)
    at org.springblade.core.datascope.handler.LibraDataScopeHandler.sqlCondition(LibraDataScopeHandler.java:32)
    at org.springblade.core.datascope.interceptor.DataScopeInterceptor.intercept(DataScopeInterceptor.java:89)
    at org.springblade.core.mp.plugins.QueryInterceptorExecutor.exec(QueryInterceptorExecutor.java:29)
    at org.springblade.core.mp.plugins.LibraPaginationInterceptor.willDoQuery(LibraPaginationInterceptor.java:27)
    at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:75)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
    at com.sun.proxy.$Proxy227.query(Unknown Source)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
    ... 110 common frames omitted

Debug代码后发现,getDataScopeByMapper调用getDataScopeClient().getDataScopeByMapper每次都直接进入Fallback返回空,然后底下就会报NPE了,看system模块什么输出都没有,打的断点也没生效。

请问获取不到client是因为什么呢?

图片.png

图片.png


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

从1.5.1升级到1.8.0,线上1.5.1是没有报错,正常运行的,看了代码变动,感觉应该也不会影响这个呀。




1条回答
  • 2021-07-23 22:41

    这种情况一般是手动更新的时候有地方疏忽了导致报错。

    你把git私服原版的工程拉下来跑跑看是否有问题,如果没有问题,推荐这一块更新的时候根据git commit来进行对比,然后手动把改动的地方加上

    0 讨论(0)
提交回复