feat: use six-digit numeric member invite codes
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
-- 将现有会员邀请码迁移为唯一的六位数字,保留原码映射供核查和回退。
|
||||
-- 执行前确认每个租户会员数不超过 900000,且没有占用 100000 起始区间的六位数字码。
|
||||
-- 本迁移只调整邀请码;团队关系由 parent_id 和 tree 保存,不受影响。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `hg_app_member_invite_code_backup_20261015` (
|
||||
`tenant_id` bigint unsigned NOT NULL,
|
||||
`member_id` bigint unsigned NOT NULL,
|
||||
`old_code` varchar(32) NOT NULL,
|
||||
`new_code` char(6) NOT NULL,
|
||||
`migrated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`tenant_id`, `member_id`),
|
||||
UNIQUE KEY `uk_invite_code_backup_new` (`tenant_id`, `new_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员邀请码六位数字迁移备份';
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
INSERT INTO `hg_app_member_invite_code_backup_20261015`
|
||||
(`tenant_id`, `member_id`, `old_code`, `new_code`)
|
||||
SELECT `tenant_id`, `id`, `invite_code`,
|
||||
LPAD(100000 + ROW_NUMBER() OVER (PARTITION BY `tenant_id` ORDER BY `id`) - 1, 6, '0')
|
||||
FROM `hg_app_member`;
|
||||
|
||||
UPDATE `hg_app_member` AS m
|
||||
JOIN `hg_app_member_invite_code_backup_20261015` AS b
|
||||
ON b.`tenant_id` = m.`tenant_id` AND b.`member_id` = m.`id`
|
||||
SET m.`invite_code` = b.`new_code`;
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user