惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
H
Help Net Security
V
Visual Studio Blog
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
MyScale Blog
MyScale Blog
The Cloudflare Blog
Martin Fowler
Martin Fowler
D
Docker
腾讯CDC
F
Fortinet All Blogs
雷峰网
雷峰网
GbyAI
GbyAI
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - 叶小钗

博客园 - 伍华聪

使用Winform+WebView2+HTML构建弹性化、样式自定义化的管理系统界面 Cursor 里开发一个“一个后端 + 多个前端”项目的时候,推荐的项目目录结构组织方式 使用Cursor实现管理系统的主界面布局的Vue3前端开发 使用Cursor实现管理系统登录界面的快速开发 多租户系统框架的基础模块设计和分析设计 多租户下的系统业务开发过程探讨 多租户下的ERP系统的仓储管理模块分析设计 多租户下的系统基础表设计 基于SqlSugar开发框架的基础上快速开发H5端的移动应用 在Python+FastAPI项目中使用SqlAlchemy操作数据的几种常见方式 在PySide6/PyQt6的项目中封装一些基础类库,包括文件对话框、字体对话框、颜色对话框、消息对话框等内容 在PySide6/PyQt6的项目中实现样式切换处理 如何在Python开发中实现无代码、纯配置的业务界面展示和常规数据操作的处理分析过程 在Winform开发中,动态增加标签分组,实现数据记录的快速录入 在基于FastAPI的Python开发框架后端,增加阿里云短信和邮件发送通知处理 介绍一个医疗物质数目清点系统的实现过程 在PySide6/PyQt6的开发框架中,增加对表格多种格式录入的处理,以及主从表的数据显示和保存操作。 使用PySide6/PyQt6实现自定义窗口布局,实现类似FluentWindow效果 WxPython跨平台开发框架之主从表展示和录入的界面处理--产品报价单和明细记录的处理 Vue3+ElementPlus的BS端主从表的快速开发 基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署 使用PySide6/PyQt6实现全国省市区的级联选择组件 基于 SocketIO 消息协议设计报文规范,构建FastAPI上的SocketIO 应用 使用PySide6/PyQt6实现系统图标的展示和选择处理
多租户系统框架的界面分析设计
伍华聪 · 2026-04-23 · via 博客园 - 伍华聪

在一个多租户系统下,包含有平台超级管理员、以及租户管理员,其他自定义租户角色等不同的角色身份,我们根据它们不同的身份,让他们各司其职,在系统中构建不同的数据维护、防护层级,从而能够让整个系统有效的运作起来,而不会造成破坏。

1、系统角色的用例分析

我们根据不同的角色身份来绘制它们的用例,对我们理解整个多租户系统的功能有一定的帮助。

1.1 平台超级管理员角色用例

平台的超级管理员不参与具体业务的数据管理,只负责平台级别的基础数据维护,包括有:创建租户(设置租户菜单权限),创建菜单,创建功能权限,创建字典大类和系统字典项目,系统参数定义和参数值的维护,创建业务编码规则,创建系统公告等用例,如下用例图所示。

1.2 租户管理员角色用例

而租户的管理员则是维护当前租户的系统基础数据,如对于每一个租户来说,用户、部门、角色、岗位、新闻公告等都是各自独立的,因此需要由租户管理员单独创建维护,维护好这些系统基础数据,业务系统才能够顺利运行起来,当然还包括对租户角色的菜单权限进行分配,角色人员的选择,以及对租户级的字典项目进行维护和租户级的参数值进行维护,如下用例图所示。

1.3 租户自定义角色用例

而租户自定义角色用户,主要就是参与整个业务系统的运作,维护业务基础数据,业务数据,以及业务流程的数据,如下用例图所示。

2、多租户系统框架的界面分析设计

有了上面用例的指引,我们知道那些功能是特定角色可以做,那些不能参与的了。
对于多租户/多账套的系统来说,不同的租户/账套,是在不同的域之内,相互隔离的,因此在登录的时候就要进行区分。

2.1 用户登录

如下是登录界面,如果选择租户的,就以租户的用户进行登录检查,如果不选择的,就以平台管理员进行,如下是登录界面。

用户登录的时候,我们根据租户代码进行判断,根据角色获获得相关的菜单进行展示。为了方便测试,当然超级管理员可以访问所有页面的菜单的,我们为了方便管理,也对超级管理员的角色进行配置过滤即可。

如对于平台级的超级管理员来说,他的界面如下所示(根据用例进行配置展示)

2.2 租户管理

租户管理是创建租户控制的重要一环,租户的所有数据由租户进行关联,包括用户、角色、机构,以及业务数据等等,都会打上租户的关联ID。
租户管理如下界面所示。

2.3 系统菜单定义

BS端的系统菜单是动态加载的,而且菜单定义是平台级别的定义,只有定义好菜单的基础信息,才能由平台管理员或者租户管理员进行分配使用。

我们整个多租户的系统中,菜单和功能权限是分系统类型的,多端的菜单也是存储在同一的表中,但是根据不同的系统代码进行区分,BS端只需要维护好本身的菜单定义即可。

菜单的定义维护如下界面所示。

2.4 功能权限管理

和菜单一样,功能权限的定义也是平台级别的定义,只有定义好功能点,才能控制用户对应的功能访问权限,如某一按钮的启用或者禁用,也成功能权限。
通过和菜单页面的关联,我们可以给用户授权菜单权限的时候,一次性保存好用户可以访问的菜单和功能权限,非常方便。

功能权限管理界面如下所示。

为了在系统准备初期,方便对功能权限的定义创建,我们增加了批量创建的功能处理,如下界面所示。

这样可以一次性创建常规的功能控制点。

2.5 系统字典管理

系统的字典为了方便管理一些下拉列表的内容,大多数为系统级的数据,由平台的超级用户维护,但有些数据也可以由租户级用户进行维护,字典类型管理界面如下所示。

字典数据项目的范围,有字典类型的作用范围决定,如下所示。

平台确定了字典大类的定义后,就可以根据字典大类进行字典项目列表的维护了,如下是字典项目的关联。

如果是租户级别的作用范围,租户就可以维护,否则无法对系统级别的字典项目进行删除,增加,修改等操作。

2.6 业务编码规则

对于业务单据数据来说,有时候我们需要约定单据的编码规则,这样对于我们统一系统的业务编码规则很有好处,因此我们提供一个公用的编码规则处理功能,常规的单据编码由系统定义,而在租户创建的时候,自动复制一份到租户里面,租户可以更改里面的规则即可。
系统级的业务编码规则定义如下界面所示。

如果租户觉得编码规则不负责要求,可以对指定的编码记录进行修改即可。

2.7 系统附件管理

我们系统的附件信息,统一在一张表中进行管理,其中记录了附件的大小,格式、路径等信息,可以再后台统一进行维护查看。

附件管理一般有租户管理员进行维护即可。

其他的登录日志、操作日志、新闻公告等的记录管理我们就不在一一赘述。