因为目前bladex里的数据范围默认是根据部门层级设计的,具有普适性。
但是目前项目里遇到了设备维护,设备是1个服务,设备维修工单是1个服务。设备服务提供了部门可见的设备集合。现在需要查看设备维修工单,需要根据部门可见的设备来过滤数据范围。
由于设备数量大,成千上万。应该不可能由维修工单服务实时获取设备服务里可见的设备集合,然后通过sql in的方式来过滤。
请问是否有较合理方案能支撑这种数据范围权限。
谢谢
设备维护应该是一个独立的模块,不是全局的吧?如果是独立模块,数据量又很多,传统数据权限配置不满足的情况下,推荐自己定义sql mapper.xml,然后自定义加上过滤的条件。
这样一是可以优化sql语句,在大数据量的前提能提高性能,二是可以自定义复杂的权限规则,不被原有的给限制住。
如果你们的设备模块全系统都会用到,你可以拓展一下数据权限的模块,多加一个设备专用的数据权限,在底层根据这个选项来自定义生成对应的sql条件。
实现逻辑在下面截图
老大,这种方式实际也是拼接sql的方式。我还怕sql in长度超长,或者是太大影响性能。不知道是否有优化方案
扫一扫访问 Blade技术社区 移动端