公司管理

1.前言

  • 公司管理的本质是数据隔离,实现方式有两种,物理隔离和逻辑隔离
  • 物理隔离:使用独立数据库/表,适用于SaaS、客户之间严格隔离的情形
  • 逻辑隔离:共用表 + company_id,适用于企业内部子公司、集团架构
  • 本章节不考虑SaaS,只考虑企业内部子公司、集团架构,也就是所谓的逻辑隔离

2.核心设计原则

  • 采用“统一多公司模型 + 渐进式权限管控” 架构
  • 架构统一,避免后期大改,不区分“单公司”和“多公司”逻辑,只专注于"公司切换"这个核心操作
  • 权限可演进,平滑过渡,通过开启/关闭“数据角色”菜单的开关,来决定账户可以切换到哪家公司,从而决定操作哪家公司数据
设计点 说明
1. 统一多公司模型 无论系统有几个公司,所有表都带 company_id,所有查询都带 company_id 条件
2. 前期无管控 初始阶段,用户可自由切换公司(下拉列表返回所有公司)
3. 后期开启权限管控 当需要隔离时,启用“数据角色”体系,建立 账户 -> 数据角色 -> 公司 的绑定关系
4. 切换公司双重校验 前端下拉过滤 + 后端提交时权限校验
5. 权限可开关 “数据角色”菜单可开启/关闭,实现从“开放”到“管控”的平滑过渡

3.共享模块

  • 白名单:所有公司共享,不做company_id筛选
  • 上传模块:所有公司共享,不做company_id筛选
  • 菜单列表:所有公司共享,不做company_id筛选
  • App版本,App菜单:所有公司共享,不做company_id筛选
  • 人员-角色-权限:所有公司共享,不做company_id筛选

4.待优化

  • 数据实时性问题:数据角色开关,角色关联数据发生变动时,前端无法感知(不能直接再前端推送更新),导致下拉列表不是最新,只能在后端校验,或者通过Token 有效期控制,让用户一天一登录
posted @ 2025-07-01 11:01  ---空白---  阅读(10)  评论(0)    收藏  举报