docs: add bosenyuan miao80 cleanup record

This commit is contained in:
danaisuiyuan
2026-06-04 22:52:38 +08:00
parent 6b940e424c
commit 01e373faf6

View File

@@ -0,0 +1,549 @@
# 宝应博森元 miao80 用户数据清理方案
## 基本信息
- 公司:宝应博森元
- Spring profile`miao80`
- MySQL`123.56.214.80:3306`
- 数据库:`yangtangyoupin`
- 任务日期2026-06-04
- 方案目的:删除指定会员及其寄卖、订单、奖金、积分、地址、提现等关联数据。
## 数据来源
1. Excel 清除名单:`/Users/mac/Works26/miao-july/bosenyuan清除名单260604.xlsx`
2. 手工补充名单:此前核查出的 30 个有隐藏未售寄卖商品的会员。
## 清理范围
### Excel 清除名单
| 用户ID | 昵称 | 联系方式 | 上级ID |
| --- | --- | --- | --- |
| 93320 | 崔龙云 | 18921916448 | 93315 |
| 93317 | 杨长霞 | 13852763959 | 93212 |
| 93312 | 成成 | 13905238633 | 93296 |
| 93311 | 袁月 | 18932311595 | 93303 |
| 93310 | 范明中 | 18915115858 | 93303 |
| 93308 | 138****0239 | 13813100239 | 93248 |
| 93304 | 卢红 | 13905235316 | 93303 |
| 93302 | 周顺芹 | 13511707356 | 93250 |
| 93298 | 顾善道 | 15005253578 | 93120 |
| 93293 | 朱梅芳 | 13801441506 | 93136 |
| 93292 | 蔡宛序 | 17625471367 | 93213 |
| 93291 | 130****3522 | 13092023522 | 93254 |
| 93288 | 于桂平 | 13305239833 | 93249 |
| 93286 | 陆哓明 | 13952753228 | 93250 |
| 93285 | 仲妮妮 | 17351389708 | 93212 |
| 93282 | 张伏顺 | 13016592366 | 93254 |
| 93281 | 189****9338 | 18951269338 | 93213 |
| 93280 | 韩国林 | 15861304478 | 93248 |
| 93278 | 陈文青 | 15062891641 | 92775 |
| 93277 | 许良会 | 18260691419 | 93239 |
| 93275 | 黄丽辉 | 15262265025 | 93147 |
| 93269 | 吴发 | 18360337533 | 92687 |
| 93268 | 马猛宏 | 13921912348 | 93250 |
| 93267 | 卢玉凤 | 17558780051 | 93212 |
| 93266 | 周同 | 13115254379 | 93265 |
| 93265 | 王彬 | 18915131699 | 93254 |
| 93263 | 陈斌 | 18012324636 | 93019 |
| 93262 | 徐猫猫 | 13390629258 | 93161 |
| 93261 | 潘年庆 | 13773341597 | 93251 |
| 93260 | 纪开东 | 13179766726 | 93251 |
| 93256 | 卢玉芬 | 18012323088 | 93161 |
| 93253 | 刘加良 | 15298672227 | 93239 |
| 93252 | 夏宝华 | 15262250561 | 93214 |
| 93241 | 孙万万 | 13951441675 | 93214 |
| 93238 | 戴向英 | 15189893800 | 93136 |
| 93233 | 严登文 | 15995116338 | 93214 |
| 93228 | 苗永粉 | 13773321176 | 92688 |
| 93217 | 邹华 | 18796681777 | 93206 |
| 93200 | 戴增中 | 13813104768 | 93193 |
| 93194 | 姚焕桂 | 13773330344 | 93075 |
| 93190 | 姜红爱 | 17715862910 | 93075 |
| 93160 | 季安红 | 13913432863 | 93107 |
| 93153 | 王祥 | 15380316138 | 92973 |
| 93143 | 郑娟 | 17751330452 | 93075 |
| 93142 | 李德荣 | 13813104919 | 93109 |
### 手工补充名单
| 用户ID | 昵称 | 联系方式 | 待清理未售商品数 |
| --- | --- | --- | --- |
| 92801 | 成宏梅 | 18751483086 | 3 |
| 93011 | 李迎春 | 13505270568 | 3 |
| 93032 | 沈宝军 | 13348149448 | 2 |
| 93073 | 陈海霞 | 15152714200 | 1 |
| 93078 | 顾晓燕 | 13151600166 | 1 |
| 93120 | 于秀梅 | 13348140510 | 1 |
| 93136 | 戴玉山 | 13813100018 | 1 |
| 93147 | 陈小燕 | 18066016798 | 1 |
| 93155 | 王锐 | 18952581561 | 1 |
| 93185 | 王学梅 | 15150886020 | 1 |
| 93193 | 相荣 | 18796692299 | 1 |
| 93216 | 张萍 | 18252750442 | 1 |
| 93218 | 李润芝 | 15050708588 | 1 |
| 93248 | 董鲜 | 19533096227 | 1 |
| 93284 | 仇云 | 17317753117 | 1 |
| 93287 | 王珏 | 19741771099 | 1 |
| 93290 | 段玉香 | 17751370387 | 1 |
| 93295 | 季爱玲 | 18932366911 | 1 |
| 93297 | 蔡先生 | 13952533248 | 1 |
| 93301 | 毛天梅 | 18012327099 | 1 |
| 93305 | 王素琴 | 13092025465 | 1 |
| 93306 | 殷先生 | 15262252218 | 1 |
| 93307 | 董先生 | 15252737658 | 1 |
| 93315 | 朱继英 | 15800764854 | 1 |
| 93318 | 王琴 | 15150881748 | 1 |
| 93321 | 爱之香 | 15951439818 | 1 |
| 93322 | 邓学美 | 13505254585 | 1 |
| 93323 | 梁鹤贵 | 15050701288 | 1 |
| 93325 | 李杰 | 15050708139 | 1 |
| 93327 | 刘正娟 | 15062896288 | 1 |
### 合并后用户ID
- Excel45 人
- 手工补充30 人
- 重叠0 人
- 合并后75 人
```sql
SET @cleanup_user_ids = '92801,93011,93032,93073,93078,93120,93136,93142,93143,93147,93153,93155,93160,93185,93190,93193,93194,93200,93216,93217,93218,93228,93233,93238,93241,93248,93252,93253,93256,93260,93261,93262,93263,93265,93266,93267,93268,93269,93275,93277,93278,93280,93281,93282,93284,93285,93286,93287,93288,93290,93291,93292,93293,93295,93297,93298,93301,93302,93304,93305,93306,93307,93308,93310,93311,93312,93315,93317,93318,93320,93321,93322,93323,93325,93327';
```
实际执行建议使用临时表承载 ID
```sql
DROP TEMPORARY TABLE IF EXISTS tmp_bosenyuan_cleanup_users;
CREATE TEMPORARY TABLE tmp_bosenyuan_cleanup_users (
id INT PRIMARY KEY
);
INSERT INTO tmp_bosenyuan_cleanup_users (id) VALUES
(92801),(93011),(93032),(93073),(93078),(93120),(93136),(93142),(93143),(93147),
(93153),(93155),(93160),(93185),(93190),(93193),(93194),(93200),(93216),(93217),
(93218),(93228),(93233),(93238),(93241),(93248),(93252),(93253),(93256),(93260),
(93261),(93262),(93263),(93265),(93266),(93267),(93268),(93269),(93275),(93277),
(93278),(93280),(93281),(93282),(93284),(93285),(93286),(93287),(93288),(93290),
(93291),(93292),(93293),(93295),(93297),(93298),(93301),(93302),(93304),(93305),
(93306),(93307),(93308),(93310),(93311),(93312),(93315),(93317),(93318),(93320),
(93321),(93322),(93323),(93325),(93327);
```
## 当前库只读统计
统计时间2026-06-04`miao80 / yangtangyoupin`
| 表 / 范围 | 命中行数 |
| --- | ---: |
| `wa_users` | 75 |
| `eb_user` | 74 |
| `wa_merchandise` | 1698 |
| `wa_order` seller 或 buyer 命中 | 2609 |
| `wa_selfbonus_log` | 1627 |
| `wa_sharebonus_log` | 1545 |
| `wa_coupon_log` | 198 |
| `wa_withdraw` | 44 |
| `wa_money_log` | 0 |
| `wa_address` | 80 |
| `wa_alipay` | 65 |
| `wa_bank` | 1 |
| `eb_user_integral_record` | 1666 |
| `eb_user_address` | 73 |
| `eb_user_bill` | 47 |
| `eb_user_brokerage_record` | 0 |
| `eb_user_experience_record` | 47 |
| `eb_user_extract` | 0 |
| `eb_user_level` | 0 |
| `eb_user_recharge` | 0 |
| `eb_user_sign` | 0 |
| `eb_user_token` | 0 |
| `eb_user_visit_record` | 12 |
| `eb_store_cart` | 0 |
| `eb_store_coupon_user` | 0 |
| `eb_store_order` | 47 |
| `eb_sms_record` | 0 |
## 特殊检查
### `wa_users` 与 `eb_user` 不一致
`wa_users` 命中 75 人,`eb_user` 命中 74 人。缺失的 `eb_user`
| 用户ID | 昵称 | 联系方式 |
| --- | --- | --- |
| 93305 | 王素琴 | 13092025465 |
### 删除名单外仍指向待删用户的推荐关系
删除前需要决定是否置空为 `0`,或改挂到指定上级。
`wa_users.pid` 外部引用 1 条:
| 用户ID | 昵称 | 联系方式 | 当前上级ID |
| --- | --- | --- | --- |
| 93036 | 赵玉文 | 18091856709 | 92801 |
`eb_user.spread_uid` 外部引用 14 条:
| uid | account | nickname | phone | spread_uid |
| --- | --- | --- | --- | --- |
| 92881 | 18115115512 | 成明强 | 18115115512 | 92801 |
| 92903 | 18036263863 | 徐丹 | 18036263863 | 92801 |
| 92940 | 13773342930 | 朱友华 | 13773342930 | 92801 |
| 92976 | 13773334985 | 何军健 | 13773334985 | 92801 |
| 92983 | 15052568923 | 柴秉丹 | 15052568923 | 92801 |
| 93009 | 13092025465 | 王素琴 | 13092025465 | 92801 |
| 93030 | 15298470085 | 张琴 | 15298470085 | 93011 |
| 93036 | 18091856709 | 赵玉文 | 18091856709 | 92801 |
| 93094 | 15952533800 | 朱鹤峰 | 15952533800 | 92801 |
| 93105 | 18626221249 | 姚春峰 | 18626221249 | 93078 |
| 93133 | 19352900319 | 193****0319 | 19352900319 | 93011 |
| 93138 | 18952533228 | 189****3228 | 18952533228 | 93011 |
| 93146 | 15252502175 | 艾保兄 | 15252502175 | 93011 |
| 93148 | 13601446282 | 许梅 | 13601446282 | 93011 |
建议处理方式:
```sql
UPDATE wa_users
SET pid = 0
WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
AND id NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
UPDATE eb_user
SET spread_uid = 0, spread_time = NULL
WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
AND uid NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
```
如业务要求保留推荐关系,需要先确认新的承接上级 ID再把上面 SQL 的 `0` 替换为指定 ID。
## 执行前校验 SQL
```sql
SELECT 'wa_users', COUNT(*) FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user', COUNT(*) FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_merchandise', COUNT(*) FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_order_seller_or_buyer', COUNT(*) FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_selfbonus_log', COUNT(*) FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_sharebonus_log', COUNT(*) FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_coupon_log', COUNT(*) FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_withdraw', COUNT(*) FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_address', COUNT(*) FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_alipay', COUNT(*) FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_bank', COUNT(*) FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_integral_record', COUNT(*) FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_address', COUNT(*) FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_bill', COUNT(*) FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_experience_record', COUNT(*) FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_visit_record', COUNT(*) FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_store_order', COUNT(*) FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
```
## 备份方案
执行删除前,先在同库创建带日期后缀的备份表。备份表名建议固定使用本次任务时间戳:`20260604`
```sql
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_users AS
SELECT * FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user AS
SELECT * FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_merchandise AS
SELECT * FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_order AS
SELECT * FROM wa_order
WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_selfbonus_log AS
SELECT * FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_sharebonus_log AS
SELECT * FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_coupon_log AS
SELECT * FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_withdraw AS
SELECT * FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_address AS
SELECT * FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_alipay AS
SELECT * FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_bank AS
SELECT * FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_integral_record AS
SELECT * FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_address AS
SELECT * FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_bill AS
SELECT * FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_experience_record AS
SELECT * FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_visit_record AS
SELECT * FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_store_order AS
SELECT * FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
```
## 删除执行方案
建议用事务执行;执行前确认业务低峰,并暂停相关同步任务或后台定时任务。
```sql
START TRANSACTION;
-- 1. 先解除删除名单外用户对待删用户的推荐引用
UPDATE wa_users
SET pid = 0
WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
AND id NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
UPDATE eb_user
SET spread_uid = 0, spread_time = NULL
WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
AND uid NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
-- 2. 删除寄卖业务关联数据
DELETE FROM wa_order
WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_merchandise
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_selfbonus_log
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_sharebonus_log
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_coupon_log
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_withdraw
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_money_log
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_address
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_alipay
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_bank
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
-- 3. 删除积分商城用户关联数据
DELETE FROM eb_user_integral_record
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_address
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_bill
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_brokerage_record
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_experience_record
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_extract
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_level
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_recharge
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_sign
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_token
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_user_visit_record
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_store_cart
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_store_coupon_user
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_store_order
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM eb_sms_record
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
-- 4. 最后删除用户主表
DELETE FROM eb_user
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
DELETE FROM wa_users
WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
-- 5. 事务内复核,确认结果符合预期后再提交
SELECT 'wa_users_remaining', COUNT(*) FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_remaining', COUNT(*) FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_merchandise_remaining', COUNT(*) FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_order_remaining', COUNT(*) FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_selfbonus_log_remaining', COUNT(*) FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_sharebonus_log_remaining', COUNT(*) FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'wa_coupon_log_remaining', COUNT(*) FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'eb_user_integral_record_remaining', COUNT(*) FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'external_wa_pid_refs_remaining', COUNT(*) FROM wa_users WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
UNION ALL SELECT 'external_eb_spread_refs_remaining', COUNT(*) FROM eb_user WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
-- 确认无误后:
COMMIT;
-- 如结果异常:
-- ROLLBACK;
```
## 执行后复核
```sql
SELECT COUNT(*) AS wa_users_remaining
FROM wa_users
WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
SELECT COUNT(*) AS eb_user_remaining
FROM eb_user
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
SELECT COUNT(*) AS merchandise_remaining
FROM wa_merchandise
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
SELECT COUNT(*) AS order_remaining
FROM wa_order
WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
SELECT COUNT(*) AS wa_pid_refs_remaining
FROM wa_users
WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
SELECT COUNT(*) AS eb_spread_refs_remaining
FROM eb_user
WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
```
## 回滚思路
如果已经 `COMMIT`,只能通过备份表恢复。恢复时应优先恢复用户主表,再恢复关联表:
1. `wa_users`
2. `eb_user`
3. `wa_*` 业务表
4. `eb_user_*` / `eb_store_*` 关联表
示例:
```sql
INSERT INTO wa_users
SELECT * FROM bak_20260604_bsy_wa_users;
INSERT INTO eb_user
SELECT * FROM bak_20260604_bsy_eb_user;
```
恢复前需要先确认目标主键是否已经被重新占用。
## 注意事项
- 本文档仅为清理方案,尚未执行删除。
- `wa_merchandise` 中手工补充名单此前核查到的 35 条未售商品均为隐藏状态:`status = 1``is_show = 0`
- `wa_order` 删除条件必须同时覆盖 `seller_id``buyer_id`
- 删除主表前必须先处理名单外用户对待删用户的 `pid` / `spread_uid` 引用。
- 执行完成后,如系统使用 Redis 缓存用户、配置或统计数据,需要按线上运维流程清理相关缓存或重启服务。
## 执行结果
- 执行时间2026-06-04
- 执行库:`miao80 / yangtangyoupin`
- 清理 ID 表:`bak_20260604_bsy_cleanup_users`
- 清理用户数75
- 状态:已执行并 `COMMIT`
### 备份表实际行数
| 备份表 | 行数 |
| --- | ---: |
| `bak_20260604_bsy_cleanup_users` | 75 |
| `bak_20260604_bsy_wa_users` | 75 |
| `bak_20260604_bsy_eb_user` | 74 |
| `bak_20260604_bsy_wa_merchandise` | 1698 |
| `bak_20260604_bsy_wa_order` | 2609 |
| `bak_20260604_bsy_wa_selfbonus_log` | 1627 |
| `bak_20260604_bsy_wa_sharebonus_log` | 1545 |
| `bak_20260604_bsy_wa_coupon_log` | 198 |
| `bak_20260604_bsy_wa_withdraw` | 44 |
| `bak_20260604_bsy_wa_address` | 80 |
| `bak_20260604_bsy_wa_alipay` | 65 |
| `bak_20260604_bsy_wa_bank` | 1 |
| `bak_20260604_bsy_wa_money_log` | 0 |
| `bak_20260604_bsy_eb_user_integral_record` | 1666 |
| `bak_20260604_bsy_eb_user_address` | 73 |
| `bak_20260604_bsy_eb_user_bill` | 47 |
| `bak_20260604_bsy_eb_user_brokerage_record` | 0 |
| `bak_20260604_bsy_eb_user_experience_record` | 47 |
| `bak_20260604_bsy_eb_user_extract` | 0 |
| `bak_20260604_bsy_eb_user_level` | 0 |
| `bak_20260604_bsy_eb_user_recharge` | 0 |
| `bak_20260604_bsy_eb_user_sign` | 0 |
| `bak_20260604_bsy_eb_user_token` | 0 |
| `bak_20260604_bsy_eb_user_visit_record` | 12 |
| `bak_20260604_bsy_eb_store_cart` | 0 |
| `bak_20260604_bsy_eb_store_coupon_user` | 0 |
| `bak_20260604_bsy_eb_store_order` | 47 |
| `bak_20260604_bsy_eb_sms_record` | 0 |
### 独立复核结果
| 复核项 | 剩余行数 |
| --- | ---: |
| `wa_users` | 0 |
| `eb_user` | 0 |
| `wa_merchandise` | 0 |
| `wa_order` seller 或 buyer 命中 | 0 |
| `wa_selfbonus_log` | 0 |
| `wa_sharebonus_log` | 0 |
| `wa_coupon_log` | 0 |
| `wa_withdraw` | 0 |
| `wa_address` | 0 |
| `wa_alipay` | 0 |
| `wa_bank` | 0 |
| `eb_user_integral_record` | 0 |
| `eb_user_address` | 0 |
| `eb_user_bill` | 0 |
| `eb_user_experience_record` | 0 |
| `eb_user_visit_record` | 0 |
| `eb_store_order` | 0 |
| 删除名单外 `wa_users.pid` 指向待删用户 | 0 |
| 删除名单外 `eb_user.spread_uid` 指向待删用户 | 0 |
说明:`information_schema.TABLES.TABLE_ROWS` 对 InnoDB 表可能是估算值;本节备份行数以执行时 `COUNT(*)` 输出为准。