关于非部门层级结构的数据范围权限设计

Blade 未结 2 669
bluerose
bluerose 2022-09-22 17:41

因为目前bladex里的数据范围默认是根据部门层级设计的,具有普适性。


但是目前项目里遇到了设备维护,设备是1个服务,设备维修工单是1个服务。设备服务提供了部门可见的设备集合。现在需要查看设备维修工单,需要根据部门可见的设备来过滤数据范围。

由于设备数量大,成千上万。应该不可能由维修工单服务实时获取设备服务里可见的设备集合,然后通过sql in的方式来过滤。

请问是否有较合理方案能支撑这种数据范围权限。

谢谢

2条回答
  •  admin
    admin (楼主)
    2022-09-22 18:25

    设备维护应该是一个独立的模块,不是全局的吧?如果是独立模块,数据量又很多,传统数据权限配置不满足的情况下,推荐自己定义sql mapper.xml,然后自定义加上过滤的条件。

    这样一是可以优化sql语句,在大数据量的前提能提高性能,二是可以自定义复杂的权限规则,不被原有的给限制住。


    如果你们的设备模块全系统都会用到,你可以拓展一下数据权限的模块,多加一个设备专用的数据权限,在底层根据这个选项来自定义生成对应的sql条件。

    实现逻辑在下面截图

    image.png

    作者追问:2022-09-22 18:25

    老大,这种方式实际也是拼接sql的方式。我还怕sql in长度超长,或者是太大影响性能。不知道是否有优化方案

提交回复