267 lines
7.7 KiB
Markdown
267 lines
7.7 KiB
Markdown
## 业务库清理说明
|
||
数据库:safety-eval-service
|
||
不清理的表:
|
||
basic_discipline_major
|
||
industry_professional_standards
|
||
org_business_scope_device_ref
|
||
|
||
|
||
|
||
## 租户数据清理操作文档
|
||
|
||
### 一、清理条件定义
|
||
|
||
执行前根据实际场景修改以下条件的值,并将修改后的值替换到下方所有 SQL 中。
|
||
|
||
| 条件 | 当前值 | 说明 |
|
||
|------|--------|------|
|
||
| 目标租户ID | `2067161116369793024` | 所有 SQL 中 `tenant_id =` 后面的值 |
|
||
| 排除账号 | `'cqanquan','15100110011','jianguan001'` | 所有 SQL 中 `NOT IN (...)` 里的账号列表 |
|
||
|
||
**修改方式**:在文档中全局替换。例如要清理另一个租户并调整排除账号,将所有 SQL 中的 `2067161116369793024` 替换为目标租户ID,将 `NOT IN ('cqanquan','15100110011','jianguan001')` 替换为实际的排除账号列表。
|
||
|
||
---
|
||
|
||
### 二、操作原则
|
||
|
||
1. **主表即删除目标**:每条 SELECT 的主表就是要删除数据的表,SELECT 列出的每一行就是将被 DELETE 删除的行。
|
||
2. **先查询后删除**:每个步骤必须先执行 SELECT 确认影响范围,核对无误后再执行对应的 DELETE。
|
||
3. **关联逻辑一致**:SELECT 和 DELETE 使用完全相同的 FROM/JOIN/WHERE 结构,只将 SELECT 替换为 DELETE 主表别名。
|
||
4. **按依赖顺序清理**:先删关联表(子表),再删主表,避免数据不一致。
|
||
5. **单步执行**:每一步独立执行并确认结果,不要批量粘贴所有 SQL。
|
||
|
||
---
|
||
|
||
### 三、清理步骤
|
||
|
||
#### 步骤 1:用户关联角色
|
||
|
||
- **执行库**:jjb-saas-system
|
||
- **主表(删除目标)**:sys_role_user
|
||
- **辅助表(过滤条件)**:sys_user
|
||
|
||
**1.1 查询确认**
|
||
|
||
```sql
|
||
SELECT ru.id, ru.user_id, ru.role_id
|
||
FROM sys_role_user ru
|
||
INNER JOIN sys_user u ON ru.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**1.2 执行删除**
|
||
|
||
```sql
|
||
DELETE ru FROM sys_role_user ru
|
||
INNER JOIN sys_user u ON ru.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 2:用户关联部门
|
||
|
||
- **执行库**:jjb-saas-system
|
||
- **主表(删除目标)**:sys_user_role_dept
|
||
- **辅助表(过滤条件)**:sys_user
|
||
|
||
**2.1 查询确认**
|
||
|
||
```sql
|
||
SELECT urd.id, urd.user_id, urd.role_id, urd.dept_id
|
||
FROM sys_user_role_dept urd
|
||
INNER JOIN sys_user u ON urd.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**2.2 执行删除**
|
||
|
||
```sql
|
||
DELETE urd FROM sys_user_role_dept urd
|
||
INNER JOIN sys_user u ON urd.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 3:角色关联权限组
|
||
|
||
- **执行库**:jjb-saas-system
|
||
- **主表(删除目标)**:sys_role_perms_group
|
||
- **辅助表(过滤条件)**:sys_role_user → sys_user
|
||
|
||
**3.1 查询确认**
|
||
|
||
```sql
|
||
SELECT rpg.id, rpg.role_id, rpg.group_id
|
||
FROM sys_role_perms_group rpg
|
||
INNER JOIN sys_role_user ru ON rpg.role_id = ru.role_id
|
||
INNER JOIN sys_user u ON ru.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**3.2 执行删除**
|
||
|
||
```sql
|
||
DELETE rpg FROM sys_role_perms_group rpg
|
||
INNER JOIN sys_role_user ru ON rpg.role_id = ru.role_id
|
||
INNER JOIN sys_user u ON ru.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 4:角色数据
|
||
|
||
- **执行库**:jjb-saas-system
|
||
- **主表(删除目标)**:sys_role
|
||
- **辅助表(过滤条件)**:sys_role_user → sys_user
|
||
|
||
**4.1 查询确认**
|
||
|
||
```sql
|
||
SELECT r.id, r.role_name, r.role_code
|
||
FROM sys_role r
|
||
INNER JOIN sys_role_user ru ON r.id = ru.role_id
|
||
INNER JOIN sys_user u ON ru.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**4.2 执行删除**
|
||
|
||
```sql
|
||
DELETE r FROM sys_role r
|
||
INNER JOIN sys_role_user ru ON r.id = ru.role_id
|
||
INNER JOIN sys_user u ON ru.user_id = u.id
|
||
WHERE u.tenant_id = 2067161116369793024
|
||
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 5:用户数据
|
||
|
||
- **执行库**:jjb-saas-system
|
||
- **主表(删除目标)**:sys_user
|
||
- **辅助表**:无
|
||
|
||
**5.1 查询确认**
|
||
|
||
```sql
|
||
SELECT id, account, name, mobile, email, status_enum, create_time
|
||
FROM sys_user
|
||
WHERE tenant_id = 2067161116369793024
|
||
AND account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**5.2 执行删除**
|
||
|
||
```sql
|
||
DELETE FROM sys_user
|
||
WHERE tenant_id = 2067161116369793024
|
||
AND account NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 6:账号租户关联
|
||
|
||
- **执行库**:jjb-saas-auth
|
||
- **主表(删除目标)**:auth_account_tenant_rel
|
||
- **辅助表(过滤条件)**:auth_account
|
||
|
||
**6.1 查询确认**
|
||
|
||
```sql
|
||
SELECT atr.id, atr.account_id, atr.tenant_id
|
||
FROM auth_account_tenant_rel atr
|
||
INNER JOIN auth_account a ON atr.account_id = a.id
|
||
WHERE atr.tenant_id = 2067161116369793024
|
||
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**6.2 执行删除**
|
||
|
||
```sql
|
||
DELETE atr FROM auth_account_tenant_rel atr
|
||
INNER JOIN auth_account a ON atr.account_id = a.id
|
||
WHERE atr.tenant_id = 2067161116369793024
|
||
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 7:账号租户密码
|
||
|
||
- **执行库**:jjb-saas-auth
|
||
- **主表(删除目标)**:auth_account_tenant_password
|
||
- **辅助表(过滤条件)**:auth_account
|
||
|
||
**7.1 查询确认**
|
||
|
||
```sql
|
||
SELECT atp.id, atp.account_id, a.username, atp.user_type_enum, atp.status_enum
|
||
FROM auth_account_tenant_password atp
|
||
INNER JOIN auth_account a ON atp.account_id = a.id
|
||
WHERE atp.tenant_id = 2067161116369793024
|
||
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**7.2 执行删除**
|
||
|
||
```sql
|
||
DELETE atp FROM auth_account_tenant_password atp
|
||
INNER JOIN auth_account a ON atp.account_id = a.id
|
||
WHERE atp.tenant_id = 2067161116369793024
|
||
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
#### 步骤 8:账号数据
|
||
|
||
- **执行库**:jjb-saas-auth
|
||
- **主表(删除目标)**:auth_account
|
||
- **辅助表**:无
|
||
|
||
**8.1 查询确认**
|
||
|
||
```sql
|
||
SELECT id, username, mobile, name, status_enum, delete_enum
|
||
FROM auth_account
|
||
WHERE tenant_id = 2067161116369793024
|
||
AND username NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
**8.2 执行删除**
|
||
|
||
```sql
|
||
DELETE FROM auth_account
|
||
WHERE tenant_id = 2067161116369793024
|
||
AND username NOT IN ('cqanquan','15100110011','jianguan001');
|
||
```
|
||
|
||
---
|
||
|
||
### 四、清理顺序总览
|
||
|
||
| 顺序 | 步骤 | 库 | 主表(删除目标) | 辅助表 | 说明 |
|
||
|------|------|-----|-----------------|--------|------|
|
||
| 1 | 用户关联角色 | jjb-saas-system | sys_role_user | sys_user | 解除用户与角色的绑定 |
|
||
| 2 | 用户关联部门 | jjb-saas-system | sys_user_role_dept | sys_user | 解除用户与部门的绑定 |
|
||
| 3 | 角色关联权限组 | jjb-saas-system | sys_role_perms_group | sys_role_user → sys_user | 解除角色与权限组的绑定 |
|
||
| 4 | 角色数据 | jjb-saas-system | sys_role | sys_role_user → sys_user | 删除角色本身 |
|
||
| 5 | 用户数据 | jjb-saas-system | sys_user | 无 | 删除用户记录 |
|
||
| 6 | 账号租户关联 | jjb-saas-auth | auth_account_tenant_rel | auth_account | 解除账号与租户的绑定 |
|
||
| 7 | 账号租户密码 | jjb-saas-auth | auth_account_tenant_password | auth_account | 删除租户级密码数据 |
|
||
| 8 | 账号数据 | jjb-saas-auth | auth_account | 无 | 删除账号记录 |
|
||
|
||
> **注意**:权限组(sys_perms_group)和菜单(sys_menu)属于租户级资源,不随用户删除而删除。如需清理权限组和菜单,需额外执行。
|