平台跨租户运营在多租户下的实现

Blade 未结 3 141
six_six_2005
six_six_2005 剑圣 2025-06-23 16:56

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

1. 在多租户下,开发一个消防云平台, 各项目归不同租户是没有问题,现在有跨租户需求是:平台运营方要能看到所有租户所有项目的报警,消防大队能看到所辖区域的所有项目的报警,这里都涉及跨多个租户,这种工作模式框架能提供什么样的支持?都放到000000租户下也不合适吧?如果给消防大队单独建一个特殊租户也很难实现吧




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

既支持多租户看到自己的设备,租户之间隔离,又能

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


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

3条回答
  • 2025-06-23 17:15

    正常情况,不同的辖区不应作为独立的租户,应该是走组织架构的模式,然后数据权限就能很方便地通过上下级部门来进行查询。


    但如果你们一定需要一个区做一个租户,如果你们是字段隔离,可以二开实现(如果是数据库隔离则不支持)。

    大概逻辑如下:
     1. 模仿组织架构,创建一个租户架构模块
     2. 租户有上下级关系,可以根据一个租户,找到他下属的所有租户ID集合

     3. 二开Blade的租户插件,文件在BladeX-Tool的blade-starter-tenant包内的 BladeTenantInterceptor.java 

     4. 修改这个类的逻辑,租户id的等于号改成 in,然后in 的内容变成当前租户id+他的子租户id集合。

     5. 后续测试查询逻辑

    0 讨论(0)
  • 2025-06-24 10:20

    检验当前用户的多租户ID,如果为平台运营方的多租户ID 则sql里不拼接多租户ID也可以实现吧

    作者追问:2025-06-24 10:25

    这样能看到平台所有其他租户的数据,不在他管辖内的其他租户数据也能看到,所以这样不行

    0 讨论(0)
  • 2025-06-25 14:37

    1.这个项目里,租户就是各大物业公司,因为每家都在多地有很多项目,并且他们有自己的各种角色和项目资料,所以只能采取多租户方式;
    2.需要跨租户权限的是两类人,一是平台运营方,是看所有租户所有项目,目前我是想放到000000里;二是消防总队,大队,中队这种有层次的,他们看自己辖区的项目列表。这个还不完全是租户的上下级关系;目前我也是想放到000000里,不再给消防部门另建租户,不然不好判断。
    实际开发我想就是把000000做为一个特殊的存在,能看到其它租户。

    0 讨论(0)
代码语言
提交回复