前端小程序
这个提交包含在:
@@ -0,0 +1,359 @@
|
||||
-- =============================================================================
|
||||
-- 会员数据清理脚本(保留白名单手机号)
|
||||
-- =============================================================================
|
||||
-- 保留以下 13 个手机号对应的会员及其数据,删除其余所有会员及相关数据
|
||||
--
|
||||
-- 13757629486, 13732177165, 13595350591, 18188532666, 19858299151,
|
||||
-- 13985723672, 13906609262, 18768436875, 13780074281, 18230780880,
|
||||
-- 18285358372, 13368531489, 15329832578
|
||||
--
|
||||
-- ⚠️ 执行前务必完整备份数据库!
|
||||
-- ⚠️ 默认种子会员 id=1 (13888888888) 不在白名单中,也会被删除
|
||||
-- ⚠️ 若某张表不存在(如未安装汇付插件),请注释对应 DELETE 语句
|
||||
--
|
||||
-- 用法:mysql -u用户名 -p 数据库名 < member_cleanup_keep_whitelist.sql
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- =============================================================================
|
||||
-- 0. 预览:执行删除前先跑这一段,确认保留/删除数量
|
||||
-- =============================================================================
|
||||
/*
|
||||
SELECT '保留会员' AS step, COUNT(*) AS cnt
|
||||
FROM fa_user
|
||||
WHERE mobile IN (
|
||||
'13757629486','13732177165','13595350591','18188532666','19858299151',
|
||||
'13985723672','13906609262','18768436875','13780074281','18230780880',
|
||||
'18285358372','13368531489','15329832578'
|
||||
);
|
||||
|
||||
SELECT '待删除会员' AS step, COUNT(*) AS cnt
|
||||
FROM fa_user
|
||||
WHERE mobile NOT IN (
|
||||
'13757629486','13732177165','13595350591','18188532666','19858299151',
|
||||
'13985723672','13906609262','18768436875','13780074281','18230780880',
|
||||
'18285358372','13368531489','15329832578'
|
||||
);
|
||||
*/
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- =============================================================================
|
||||
-- 1. 构建保留/删除用户 ID 集合
|
||||
-- 注意:MySQL 临时表在同一条 SQL 中不能引用两次,后续全部用 JOIN 写法
|
||||
-- =============================================================================
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_keep_users;
|
||||
CREATE TEMPORARY TABLE tmp_keep_users (id INT PRIMARY KEY);
|
||||
|
||||
INSERT INTO tmp_keep_users (id)
|
||||
SELECT id FROM fa_user
|
||||
WHERE mobile IN (
|
||||
'13757629486','13732177165','13595350591','18188532666','19858299151',
|
||||
'13985723672','13906609262','18768436875','13780074281','18230780880',
|
||||
'18285358372','13368531489','15329832578'
|
||||
);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_delete_users;
|
||||
CREATE TEMPORARY TABLE tmp_delete_users (id INT PRIMARY KEY);
|
||||
|
||||
INSERT INTO tmp_delete_users (id)
|
||||
SELECT u.id FROM fa_user u
|
||||
LEFT JOIN tmp_keep_users k ON u.id = k.id
|
||||
WHERE k.id IS NULL;
|
||||
|
||||
-- =============================================================================
|
||||
-- 2. 收集关联订单 ID
|
||||
-- =============================================================================
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_delete_orders;
|
||||
CREATE TEMPORARY TABLE tmp_delete_orders (order_id INT PRIMARY KEY);
|
||||
|
||||
INSERT INTO tmp_delete_orders (order_id)
|
||||
SELECT DISTINCT o.id
|
||||
FROM fa_shopro_order o
|
||||
INNER JOIN tmp_delete_users du ON o.user_id = du.id;
|
||||
|
||||
INSERT IGNORE INTO tmp_delete_orders (order_id)
|
||||
SELECT DISTINCT co.order_id
|
||||
FROM fa_shopro_commission_order co
|
||||
INNER JOIN tmp_delete_users du ON co.buyer_id = du.id;
|
||||
|
||||
INSERT IGNORE INTO tmp_delete_orders (order_id)
|
||||
SELECT DISTINCT co.order_id
|
||||
FROM fa_shopro_commission_order co
|
||||
INNER JOIN tmp_delete_users du ON co.agent_id = du.id;
|
||||
|
||||
INSERT IGNORE INTO tmp_delete_orders (order_id)
|
||||
SELECT DISTINCT rao.order_id
|
||||
FROM fa_shopro_regional_agent_order rao
|
||||
INNER JOIN tmp_delete_users du ON rao.buyer_id = du.id;
|
||||
|
||||
INSERT IGNORE INTO tmp_delete_orders (order_id)
|
||||
SELECT DISTINCT rao.order_id
|
||||
FROM fa_shopro_regional_agent_order rao
|
||||
INNER JOIN tmp_delete_users du ON rao.agent_user_id = du.id;
|
||||
|
||||
-- 收集待删区域代理记录 ID(用于分账接收方等)
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_delete_regional_agents;
|
||||
CREATE TEMPORARY TABLE tmp_delete_regional_agents (id INT PRIMARY KEY);
|
||||
|
||||
INSERT INTO tmp_delete_regional_agents (id)
|
||||
SELECT ra.id
|
||||
FROM fa_shopro_regional_agent ra
|
||||
INNER JOIN tmp_delete_users du ON ra.user_id = du.id;
|
||||
|
||||
-- 收集待删分账订单 ID
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_delete_split_orders;
|
||||
CREATE TEMPORARY TABLE tmp_delete_split_orders (id INT PRIMARY KEY);
|
||||
|
||||
INSERT INTO tmp_delete_split_orders (id)
|
||||
SELECT so.id
|
||||
FROM fa_shopro_split_order so
|
||||
INNER JOIN tmp_delete_orders d ON so.order_id = d.order_id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 3. 解除引用关系(避免外键/逻辑引用冲突)
|
||||
-- =============================================================================
|
||||
UPDATE fa_user u
|
||||
INNER JOIN tmp_delete_users d ON u.parent_user_id = d.id
|
||||
SET u.parent_user_id = 0;
|
||||
|
||||
UPDATE fa_shopro_commission_agent a
|
||||
INNER JOIN tmp_delete_users d ON a.parent_agent_id = d.id
|
||||
SET a.parent_agent_id = 0;
|
||||
|
||||
-- =============================================================================
|
||||
-- 4. 区域代理相关
|
||||
-- =============================================================================
|
||||
DELETE r FROM fa_shopro_regional_agent_reward r
|
||||
INNER JOIN tmp_delete_users du ON r.agent_user_id = du.id;
|
||||
|
||||
DELETE r FROM fa_shopro_regional_agent_reward r
|
||||
INNER JOIN tmp_delete_users du ON r.buyer_id = du.id;
|
||||
|
||||
DELETE r FROM fa_shopro_regional_agent_reward r
|
||||
INNER JOIN tmp_delete_orders o ON r.order_id = o.order_id;
|
||||
|
||||
DELETE r FROM fa_shopro_regional_agent_order r
|
||||
INNER JOIN tmp_delete_users du ON r.agent_user_id = du.id;
|
||||
|
||||
DELETE r FROM fa_shopro_regional_agent_order r
|
||||
INNER JOIN tmp_delete_users du ON r.buyer_id = du.id;
|
||||
|
||||
DELETE r FROM fa_shopro_regional_agent_order r
|
||||
INNER JOIN tmp_delete_orders o ON r.order_id = o.order_id;
|
||||
|
||||
DELETE ra FROM fa_shopro_regional_agent ra
|
||||
INNER JOIN tmp_delete_users du ON ra.user_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 5. 分销佣金相关
|
||||
-- =============================================================================
|
||||
DELETE r FROM fa_shopro_commission_reward r
|
||||
INNER JOIN tmp_delete_users du ON r.agent_id = du.id;
|
||||
|
||||
DELETE r FROM fa_shopro_commission_reward r
|
||||
INNER JOIN tmp_delete_users du ON r.buyer_id = du.id;
|
||||
|
||||
DELETE r FROM fa_shopro_commission_reward r
|
||||
INNER JOIN tmp_delete_orders o ON r.order_id = o.order_id;
|
||||
|
||||
DELETE co FROM fa_shopro_commission_order co
|
||||
INNER JOIN tmp_delete_users du ON co.agent_id = du.id;
|
||||
|
||||
DELETE co FROM fa_shopro_commission_order co
|
||||
INNER JOIN tmp_delete_users du ON co.buyer_id = du.id;
|
||||
|
||||
DELETE co FROM fa_shopro_commission_order co
|
||||
INNER JOIN tmp_delete_orders o ON co.order_id = o.order_id;
|
||||
|
||||
DELETE l FROM fa_shopro_commission_log l
|
||||
INNER JOIN tmp_delete_users du ON l.agent_id = du.id;
|
||||
|
||||
DELETE a FROM fa_shopro_commission_agent a
|
||||
INNER JOIN tmp_delete_users du ON a.user_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 6. 分账相关(若未安装分账模块,注释本节)
|
||||
-- =============================================================================
|
||||
DELETE sor FROM fa_shopro_split_order_receiver sor
|
||||
INNER JOIN tmp_delete_split_orders dso ON sor.split_order_id = dso.id;
|
||||
|
||||
DELETE so FROM fa_shopro_split_order so
|
||||
INNER JOIN tmp_delete_split_orders dso ON so.id = dso.id;
|
||||
|
||||
DELETE sr FROM fa_shopro_split_receiver sr
|
||||
INNER JOIN tmp_delete_users du ON sr.role_type = 'promoter' AND sr.role_id = du.id;
|
||||
|
||||
DELETE sr FROM fa_shopro_split_receiver sr
|
||||
INNER JOIN tmp_delete_regional_agents ra ON sr.role_type = 'regional_agent' AND sr.role_id = ra.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 7. 汇付进件(若未安装汇付插件,注释本节)
|
||||
-- =============================================================================
|
||||
DELETE ho FROM fa_shopro_huifu_onboard ho
|
||||
INNER JOIN tmp_delete_users du ON ho.user_id = du.id;
|
||||
|
||||
DELETE ho FROM fa_shopro_huifu_onboard ho
|
||||
INNER JOIN tmp_delete_regional_agents ra ON ho.role_type = 'regional_agent' AND ho.role_ref_id = ra.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 8. 商城订单及附属
|
||||
-- =============================================================================
|
||||
DELETE rl FROM fa_shopro_refund_log rl
|
||||
INNER JOIN fa_shopro_order o ON rl.order_sn = o.order_sn
|
||||
INNER JOIN tmp_delete_orders d ON o.id = d.order_id;
|
||||
|
||||
DELETE inv FROM fa_shopro_order_invoice inv
|
||||
INNER JOIN tmp_delete_orders o ON inv.order_id = o.order_id;
|
||||
|
||||
DELETE al FROM fa_shopro_order_aftersale_log al
|
||||
INNER JOIN tmp_delete_orders o ON al.order_id = o.order_id;
|
||||
|
||||
DELETE a FROM fa_shopro_order_aftersale a
|
||||
INNER JOIN tmp_delete_users du ON a.user_id = du.id;
|
||||
|
||||
DELETE a FROM fa_shopro_order_aftersale a
|
||||
INNER JOIN tmp_delete_orders o ON a.order_id = o.order_id;
|
||||
|
||||
DELETE el FROM fa_shopro_order_express_log el
|
||||
INNER JOIN tmp_delete_orders o ON el.order_id = o.order_id;
|
||||
|
||||
DELETE e FROM fa_shopro_order_express e
|
||||
INNER JOIN tmp_delete_users du ON e.user_id = du.id;
|
||||
|
||||
DELETE e FROM fa_shopro_order_express e
|
||||
INNER JOIN tmp_delete_orders o ON e.order_id = o.order_id;
|
||||
|
||||
DELETE act FROM fa_shopro_order_action act
|
||||
INNER JOIN tmp_delete_orders o ON act.order_id = o.order_id;
|
||||
|
||||
DELETE oi FROM fa_shopro_order_item oi
|
||||
INNER JOIN tmp_delete_users du ON oi.user_id = du.id;
|
||||
|
||||
DELETE oi FROM fa_shopro_order_item oi
|
||||
INNER JOIN tmp_delete_orders o ON oi.order_id = o.order_id;
|
||||
|
||||
DELETE ord FROM fa_shopro_order ord
|
||||
INNER JOIN tmp_delete_orders o ON ord.id = o.order_id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 9. 充值/拼团/活动
|
||||
-- =============================================================================
|
||||
DELETE t FROM fa_shopro_trade_order t
|
||||
INNER JOIN tmp_delete_users du ON t.user_id = du.id;
|
||||
|
||||
DELETE gl FROM fa_shopro_activity_groupon_log gl
|
||||
INNER JOIN tmp_delete_users du ON gl.user_id = du.id;
|
||||
|
||||
DELETE g FROM fa_shopro_activity_groupon g
|
||||
INNER JOIN tmp_delete_users du ON g.user_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 10. 用户商城附属数据
|
||||
-- =============================================================================
|
||||
DELETE s FROM fa_shopro_share s
|
||||
INNER JOIN tmp_delete_users du ON s.user_id = du.id;
|
||||
|
||||
DELETE s FROM fa_shopro_share s
|
||||
INNER JOIN tmp_delete_users du ON s.share_id = du.id;
|
||||
|
||||
DELETE c FROM fa_shopro_cart c
|
||||
INNER JOIN tmp_delete_users du ON c.user_id = du.id;
|
||||
|
||||
DELETE f FROM fa_shopro_feedback f
|
||||
INNER JOIN tmp_delete_users du ON f.user_id = du.id;
|
||||
|
||||
DELETE gc FROM fa_shopro_goods_comment gc
|
||||
INNER JOIN tmp_delete_users du ON gc.user_id = du.id;
|
||||
|
||||
DELETE v FROM fa_shopro_verify v
|
||||
INNER JOIN tmp_delete_users du ON v.user_id = du.id;
|
||||
|
||||
DELETE st FROM fa_shopro_startup st
|
||||
INNER JOIN tmp_delete_users du ON st.user_id = du.id;
|
||||
|
||||
DELETE uc FROM fa_shopro_user_coupons uc
|
||||
INNER JOIN tmp_delete_users du ON uc.user_id = du.id;
|
||||
|
||||
DELETE fav FROM fa_shopro_user_favorite fav
|
||||
INNER JOIN tmp_delete_users du ON fav.user_id = du.id;
|
||||
|
||||
DELETE sig FROM fa_shopro_user_sign sig
|
||||
INNER JOIN tmp_delete_users du ON sig.user_id = du.id;
|
||||
|
||||
DELETE vw FROM fa_shopro_user_view vw
|
||||
INNER JOIN tmp_delete_users du ON vw.user_id = du.id;
|
||||
|
||||
DELETE wl FROM fa_shopro_user_wallet_log wl
|
||||
INNER JOIN tmp_delete_users du ON wl.user_id = du.id;
|
||||
|
||||
DELETE wa FROM fa_shopro_user_wallet_apply wa
|
||||
INNER JOIN tmp_delete_users du ON wa.user_id = du.id;
|
||||
|
||||
DELETE b FROM fa_shopro_user_bank b
|
||||
INNER JOIN tmp_delete_users du ON b.user_id = du.id;
|
||||
|
||||
DELETE addr FROM fa_shopro_user_address addr
|
||||
INNER JOIN tmp_delete_users du ON addr.user_id = du.id;
|
||||
|
||||
DELETE oauth FROM fa_shopro_user_oauth oauth
|
||||
INNER JOIN tmp_delete_users du ON oauth.user_id = du.id;
|
||||
|
||||
DELETE us FROM fa_shopro_user_store us
|
||||
INNER JOIN tmp_delete_users du ON us.user_id = du.id;
|
||||
|
||||
DELETE sa FROM fa_shopro_store_apply sa
|
||||
INNER JOIN tmp_delete_users du ON sa.user_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 11. 客服聊天
|
||||
-- =============================================================================
|
||||
DELETE cl FROM fa_shopro_chat_log cl
|
||||
INNER JOIN tmp_delete_users du ON cl.user_id = du.id;
|
||||
|
||||
DELETE cc FROM fa_shopro_chat_connection cc
|
||||
INNER JOIN tmp_delete_users du ON cc.user_id = du.id;
|
||||
|
||||
DELETE cu FROM fa_shopro_chat_user cu
|
||||
INNER JOIN tmp_delete_users du ON cu.user_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 12. 消息通知
|
||||
-- =============================================================================
|
||||
DELETE n FROM fa_shopro_notification n
|
||||
INNER JOIN tmp_delete_users du ON n.notifiable_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 13. 会员基础日志 & Token
|
||||
-- =============================================================================
|
||||
DELETE t FROM fa_user_token t
|
||||
INNER JOIN tmp_delete_users du ON t.user_id = du.id;
|
||||
|
||||
DELETE ml FROM fa_user_money_log ml
|
||||
INNER JOIN tmp_delete_users du ON ml.user_id = du.id;
|
||||
|
||||
DELETE sl FROM fa_user_score_log sl
|
||||
INNER JOIN tmp_delete_users du ON sl.user_id = du.id;
|
||||
|
||||
-- =============================================================================
|
||||
-- 14. 删除会员主表(最后执行)
|
||||
-- =============================================================================
|
||||
DELETE u FROM fa_user u
|
||||
INNER JOIN tmp_delete_users d ON u.id = d.id;
|
||||
|
||||
COMMIT;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- =============================================================================
|
||||
-- 15. 清理结果验证
|
||||
-- =============================================================================
|
||||
SELECT '保留会员数' AS info, COUNT(*) AS cnt FROM fa_user;
|
||||
|
||||
SELECT id, nickname, mobile, createtime
|
||||
FROM fa_user
|
||||
ORDER BY id;
|
||||
|
||||
SELECT '清理完成' AS info;
|
||||
在新工单中引用
屏蔽一个用户