218 lines
5.8 KiB
Markdown
218 lines
5.8 KiB
Markdown
|
||
# 公司名称:宝应博森元
|
||
|
||
## mysql数据库配置信息
|
||
|
||
host ip: 123.56.214.80
|
||
datasource:
|
||
name: yangtangyoupin
|
||
username: yangtangyoupin
|
||
password: 5Fn8eWrbYFtAhCZw
|
||
|
||
---
|
||
|
||
## 数据删除任务
|
||
|
||
- **用户id数据范围**:
|
||
93257
|
||
93255
|
||
93247
|
||
93246
|
||
93245
|
||
93244
|
||
93243
|
||
93242
|
||
93240
|
||
93237
|
||
93236
|
||
93235
|
||
93234
|
||
93232
|
||
93231
|
||
93230
|
||
93229
|
||
93227
|
||
93226
|
||
93225
|
||
93224
|
||
93223
|
||
93222
|
||
93221
|
||
93220
|
||
93219
|
||
93215
|
||
93210
|
||
93209
|
||
93208
|
||
93206
|
||
93205
|
||
93204
|
||
93203
|
||
93202
|
||
93201
|
||
93199
|
||
93198
|
||
93197
|
||
93196
|
||
93195
|
||
93191
|
||
93188
|
||
93181
|
||
93180
|
||
93178
|
||
93176
|
||
93175
|
||
93174
|
||
93173
|
||
93172
|
||
93165
|
||
93162
|
||
93158
|
||
93154
|
||
93151
|
||
93149
|
||
93141
|
||
93099
|
||
93098
|
||
93096
|
||
93095
|
||
93079
|
||
93076
|
||
93063
|
||
93041
|
||
93003
|
||
93001
|
||
92959
|
||
92951
|
||
92885
|
||
92884
|
||
92880
|
||
92850
|
||
92792
|
||
92754
|
||
92671
|
||
91757
|
||
|
||
---
|
||
|
||
## 需求目标
|
||
|
||
删除数据库中“用户id数据范围”内用户在所有相关表中的业务数据,保留不在该范围内的其他用户及其业务数据。
|
||
|
||
本文件可作为后续同类“按用户范围删除数据”需求的标准处理方案文档。执行时只需替换公司信息、数据库连接信息和用户 ID 范围。
|
||
|
||
## 执行边界
|
||
|
||
- **删除方向**:删除用户 ID 范围内的数据,保留范围外数据。
|
||
- **表范围**:不只处理显式列出的表,需要扫描目标库所有表结构,找出用户关联字段后统一处理。
|
||
- **字段范围**:重点处理以下用户关联字段:
|
||
- `uid`
|
||
- `user_id`
|
||
- `seller_id`
|
||
- `buyer_id`
|
||
- `out_user_id`
|
||
- `bargain_user_id`
|
||
- `pay_uid`
|
||
- 其他明确表示用户 ID 的字段
|
||
- **核心用户表**:
|
||
- `wa_users.id`
|
||
- `eb_user.uid`
|
||
- **特殊字段边界**:
|
||
- `eb_user.spread_uid` 表示“当前用户的推荐人”。
|
||
- 当 `spread_uid` 命中待删除用户 ID 时,不删除这些范围外用户,也不默认清空该字段。
|
||
- `spread_uid` 仅作为预检报告项,除非需求另行明确要求处理。
|
||
|
||
## 预检要求
|
||
|
||
执行删除前必须先做只读预检:
|
||
|
||
1. 确认连接的数据库为目标库 `yangtangyoupin`。
|
||
2. 扫描 `INFORMATION_SCHEMA.COLUMNS`,找出所有用户关联字段。
|
||
3. 对每个命中的表字段统计目标用户 ID 的命中行数。
|
||
4. 单独报告 `eb_user.spread_uid` 命中数量,但不纳入删除范围。
|
||
5. 输出清理前基线统计,作为最终删除数量核对依据。
|
||
|
||
参考字段扫描范围:
|
||
|
||
```sql
|
||
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND (
|
||
COLUMN_NAME IN (
|
||
'uid',
|
||
'user_id',
|
||
'seller_id',
|
||
'buyer_id',
|
||
'out_user_id',
|
||
'bargain_user_id',
|
||
'pay_uid',
|
||
'spread_uid'
|
||
)
|
||
OR COLUMN_NAME LIKE '%user%'
|
||
OR COLUMN_NAME LIKE '%uid%'
|
||
OR COLUMN_NAME LIKE '%seller%'
|
||
OR COLUMN_NAME LIKE '%buyer%'
|
||
)
|
||
ORDER BY TABLE_NAME, COLUMN_NAME;
|
||
```
|
||
|
||
## 删除规则
|
||
|
||
### `wa_*` 相关表
|
||
|
||
删除用户 ID 范围内的相关记录:
|
||
|
||
- `wa_users`:删除 `id` 在用户 ID 范围内的记录。
|
||
- `wa_order`:删除 `seller_id` 或 `buyer_id` 在用户 ID 范围内的订单。同一订单只删除一次。
|
||
- `wa_merchandise`:删除 `user_id` 在用户 ID 范围内的寄售商品。
|
||
- `wa_selfbonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||
- `wa_sharebonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||
- `wa_coupon_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||
- `wa_address`、`wa_alipay`、`wa_bank`、`wa_money_log`、`wa_withdraw` 等存在 `user_id` 字段的表:删除 `user_id` 在用户 ID 范围内的记录。
|
||
|
||
### `eb_*` 相关表
|
||
|
||
删除用户 ID 范围内的相关记录:
|
||
|
||
- `eb_user`:删除 `uid` 在用户 ID 范围内的记录。
|
||
- `eb_user_integral_record`:删除 `uid` 在用户 ID 范围内的记录。
|
||
- `eb_user_address`、`eb_user_bill`、`eb_user_brokerage_record`、`eb_user_experience_record`、`eb_user_extract`、`eb_user_level`、`eb_user_recharge`、`eb_user_sign`、`eb_user_token`、`eb_user_visit_record` 等存在 `uid` 字段的用户表:删除 `uid` 在用户 ID 范围内的记录。
|
||
- `eb_store_order`、`eb_store_cart`、`eb_store_coupon_user`、`eb_store_pink`、`eb_store_product_log`、`eb_store_product_relation`、`eb_store_product_reply` 等存在 `uid` / `pay_uid` / `bargain_user_id` 的业务表:删除相关字段在用户 ID 范围内的记录。
|
||
- `eb_pay_component_order.out_user_id` 等明确表示用户 ID 的字段:删除字段值在用户 ID 范围内的记录。
|
||
|
||
### 其他相关表
|
||
|
||
- `t_platform_account.user_id` 等非 `wa_*` / `eb_*` 表:如字段语义明确为用户 ID,删除字段值在用户 ID 范围内的记录。
|
||
- 仅字段名包含 `username`、`user_phone`、`user_address` 等非用户 ID 语义字段时,不按用户 ID 范围删除。
|
||
|
||
## 执行顺序
|
||
|
||
1. 先删除业务子表和日志表数据。
|
||
2. 再删除订单、商品、积分、账单、访问记录等用户关联数据。
|
||
3. 最后删除核心用户表:
|
||
- `wa_users WHERE id IN (...)`
|
||
- `eb_user WHERE uid IN (...)`
|
||
4. 不处理 `eb_user.spread_uid IN (...)` 的范围外用户。
|
||
|
||
## 校验要求
|
||
|
||
删除完成后必须逐表校验:
|
||
|
||
- 所有纳入删除范围的 `uid`、`user_id`、`seller_id`、`buyer_id`、`out_user_id`、`bargain_user_id`、`pay_uid` 等字段,对目标用户 ID 的命中数应为 `0`。
|
||
- `wa_users.id` 在目标用户 ID 范围内的记录数应为 `0`。
|
||
- `eb_user.uid` 在目标用户 ID 范围内的记录数应为 `0`。
|
||
- `wa_order` 中 `seller_id` 或 `buyer_id` 在目标用户 ID 范围内的记录数应为 `0`。
|
||
- `eb_user.spread_uid` 命中范围内 ID 的记录可以继续存在,作为保留边界说明输出。
|
||
|
||
## 输出要求
|
||
|
||
执行完成后输出以下结果:
|
||
|
||
- 每张表清理前命中数。
|
||
- 每张表实际删除数。
|
||
- 每张表清理后剩余命中数。
|
||
- `eb_user.spread_uid` 的保留说明。
|
||
- 最终结论:是否所有纳入删除范围的相关数据均已清零。
|
||
|