租戶管理功能用戶維護租戶數據,租戶這個概念對內可以稱為租戶,對外稱為企業。
租戶功能涉及的表為`c_tenant`,涉及的代碼主要為:lamp-tenant-biz、lamp-tenant-controller、lamp-tenant-datasource、lamp-tenant-entity 4個模塊。
## 功能講解
1. 新增租戶: 單純的向 c_tenant 表插入一條租戶信息
2. 修改租戶信息
3. 刪除租戶
4. 初始化租戶信息: 動態的向**運行中**的其他服務(如文件、消息、認證、權限等服務)發送初始化租戶信息的指令,其他服務就動態的給該租戶創建數據庫,初始化表結構,初始化必要數據,并動態添加 數據源連接。
## 新增租戶流程
1. 點擊新增按鈕, 彈出新增頁面,填寫租戶(企業)編碼和租戶(企業)名稱,租戶編碼會實時去后臺`c_tenant`表校驗是否唯一,需要保證租戶編碼唯一性,填完信息后,點擊`確定`按鈕。
2. 前端依次調用: submitForm -> save -> post 請求 /api/authority/tenant 接口
3. 后端: SaveController#save -> TenantController#handlerSave -> TenantServiceImpl#save
4. TenantServiceImpl#save中 先校驗參數,然后將租戶數據保存到 lamp_defaults庫的 c_tenant 表, 此時租戶狀態為待初始化狀態。
5. 然后前端需要在單獨調用/tenant/initConnect POST ,根據策略模式初始化數據庫、表接口、內置數據、動態數據源等
6. 根據 databaseProperties.getMultiTenantType() (`lamp.database.multiTenantType`)的配置,初始化系統數據有3個實現類
6.1. COLUMN模式會執行`ColumnInitSystemStrategy#init`方法,該方法只會將內置的菜單、資源、角色、角色&資源、字典、參數等租戶內置的數據,批量插入新的租戶表中。
6.2. SCHEMA模式會執行`SchemaInitSystemStrategy#init`方法,該方法首先會創建 租戶的業務數據庫,然后在庫里面執行 `lamp-tenant-server/src/main/resources/sqls/lamp_base.sql` 、`lamp-tenant-server/src/main/resources/sqls/lamp_extend.sql` 腳本初始化表結構, 然后在執行 `lamp-tenant-server/src/main/resources/sqls/lamp_base_data.sql` 、`lamp-tenant-server/src/main/resources/sqls/lamp_extend_data.sql` 腳本初始化租戶的數據。
> 注意: lamp-boot 項目沒有lamp_extend庫, 只有lamp_base庫, 但lamp-boot項目base庫里的表 = lamp-cloud 項目 base庫 + extend 庫. lamp-boot 項目的動態腳本在 `lamp-authority-server/src/main/resources/sqls/lamp_base*`
6.3. DATASOURCE模式會執行`DatasourceInitSystemStrategy#init`方法, 該方法異步或者遠程調用各個服務的初始化接口,讓各個服務自己創建 租戶的數據源鏈接,然后在庫里面執行 `resources/sqls/*.sql` 腳本初始化表結構, 然后在執行`resources/sqls/*_data.sql` 腳本初始化租戶的數據。
7. 租戶信息初始化完成后,會在租戶庫新增一個隱藏的超級管理員: lampAdmin/lamp, 該賬號的主要作用是給`開發者公司運營使用的`
8. 在然后在去 [超級用戶](超級用戶.md) 頁面新增超級管理員, 提供給 租戶(企業) 使用
- 簡介
- 會員版
- 3.x和4.x的區別
- 新手必讀
- 如何高效提問
- 項目地址
- 項目截圖
- 架構介紹
- 開發規范
- 租戶模式介紹
- lamp-web和lamp-web-plus的區別
- lamp-cloud和lamp-boot區別
- 免費視頻&軟件下載
- 文檔反饋
- lamp-cloud
- 服務介紹
- 環境要求
- 工程導入
- nacos啟動(單機版)
- nacos啟動(集群版)
- 將配置文件導入Nacos
- seata啟動(單機版)
- DATASOURCE模式啟動(會員版)
- SCHEMA模式啟動
- COLUMN模式
- NONE模式
- lamp-web啟動
- lamp-web生產部署
- lamp-web-plus啟動(會員版)
- lamp-web-plus生產部署
- lamp-boot
- 環境要求
- 工程導入
- DATASOURCE模式啟動(會員版)
- SCHEMA模式啟動
- COLUMN模式啟動
- NONE模式啟動
- lamp-web啟動
- lamp-web生產部署
- lamp-web-plus啟動(會員版)
- lamp-web-plus生產部署
- 功能介紹
- 租戶設置
- 數據源配置(會員版)
- 租戶管理
- 超級用戶
- 工作臺
- 通知公告
- 組織管理
- 機構管理
- 崗位管理
- 用戶管理
- 資源中心
- 消息中心
- 短息模版
- 短信中心
- 附件管理
- 流程管理
- 流程部署
- 模型管理
- 系統設置
- 菜單管理
- 角色管理
- 字典管理
- 地區管理
- 參數管理
- 操作日志
- 登錄日志
- 在線用戶
- 應用管理
- 網關管理
- 限流規則
- 組織訪問
- 開發者管理
- 定時任務
- 接口文檔
- Nacos
- 服務監控
- 數據庫監控
- 緩存監控
- zipkin監控
- SkyWalking監控
- 常用配置
- 如何保證我的代碼能更新到最新代碼
- 序列化和反序列化
- 修改日志級別
- 文件上傳&下載&預覽
- 修改租戶模式
- 分頁
- 導入導出
- 請求放行(忽略token&忽略URI權限&忽略租戶編碼)
- 異常處理
- 全局返回
- 參數校驗(會員版)
- 系統日志
- 自研權限認證(URI、按鈕、菜單)
- 數據權限(舊)
- 數據庫配置
- Mybatis配置
- 更多數據庫/數據源/Mybaits配置
- Redis(緩存)配置
- RabbitMq配置
- 灰度發布
- 上手開發
- 表結構整理
- 項目結構&依賴&調用流程介紹
- 生成一個新服務
- 生成后端代碼
- 生成前端lamp-web代碼
- 生成前端項目lamp-web-plus代碼
- 跨域處理
- Swagger文檔調試技巧
- FeignClient接口調用
- 多租戶實現原理
- 分布式事務
- Zipkin配置(過時)
- SkyWalking配置
- 代碼生成器和自動回顯組件使用介紹
- lamp-util原理解析
- 全局注解(lamp-annotation)
- 核心包(lamp-core)
- 自動回顯(lamp-echo-starter)
- 權限控制(lamp-security-starter)
- 當前登錄用戶信息(lamp-jwt-starter)
- 緩存(lamp-cache-starter)
- SpringBoot全局配置(lamp-boot-util)
- SpringCloud全局配置(lamp-cloud-starter)
- 數據源&持久層配置(lamp-databases)
- 對象屬性復制(lamp-dozer-starter)
- 操作日志(lamp-log-starter)
- 消息隊列(lamp-mq-starter)
- 在線文檔(lamp-swagger2-starter)
- 前后端表單統一驗證(lamp-validator-starter)
- 防止Xss攻擊(lamp-xss-starter)
- 生產部署
- 部署前言
- jar部署