feat: add invite user binding

This commit is contained in:
richjohnrambo
2026-09-11 10:46:20 +08:00
parent 68d9bafbdd
commit 2fb5102add
18 changed files with 452 additions and 73 deletions
@@ -81,6 +81,7 @@ CREATE TABLE IF NOT EXISTS im_registration_invite_batches (
id BIGINT NOT NULL,
tenant_id BIGINT NOT NULL,
quantity INT UNSIGNED NOT NULL,
max_uses_per_code INT UNSIGNED NOT NULL DEFAULT 0,
idempotency_key VARCHAR(128) NOT NULL,
expires_at DATETIME(3) NOT NULL,
created_by BIGINT NOT NULL,
@@ -99,6 +100,9 @@ CREATE TABLE IF NOT EXISTS im_registration_invite_codes (
code CHAR(5) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
status VARCHAR(16) NOT NULL,
expires_at DATETIME(3) NOT NULL,
max_uses INT UNSIGNED NOT NULL DEFAULT 0,
bound_user_id BIGINT NULL,
bound_user_label VARCHAR(128) NOT NULL DEFAULT '',
usage_count INT UNSIGNED NOT NULL DEFAULT 0,
last_used_at DATETIME(3) NULL,
created_by BIGINT NOT NULL,
@@ -107,6 +111,7 @@ CREATE TABLE IF NOT EXISTS im_registration_invite_codes (
updated_at DATETIME(3) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_im_registration_invite_code_tenant (tenant_id, code),
KEY idx_im_registration_invite_tenant_bound_user (tenant_id, bound_user_id),
KEY idx_im_registration_invite_tenant_status_expires (tenant_id, status, expires_at),
KEY idx_im_registration_invite_tenant_batch (tenant_id, batch_id),
KEY idx_im_registration_invite_tenant_created (tenant_id, created_at)
@@ -166,8 +171,9 @@ FROM (
SELECT '批量生成邀请码', 'imInviteBatchCreate', '/imInvite/batchCreate', 20 UNION ALL
SELECT '批次详情', 'imInviteBatchView', '/imInvite/batchView', 30 UNION ALL
SELECT '撤销邀请码', 'imInviteRevoke', '/imInvite/revoke', 40 UNION ALL
SELECT '批量撤销邀请码', 'imInviteBatchRevoke', '/imInvite/batchRevoke', 50 UNION ALL
SELECT '导出邀请码', 'imInviteExport', '/imInvite/export', 60
SELECT '绑定用户', 'imInviteBindUser', '/imInvite/bindUser', 50 UNION ALL
SELECT '批量撤销邀请码', 'imInviteBatchRevoke', '/imInvite/batchRevoke', 60 UNION ALL
SELECT '导出邀请码', 'imInviteExport', '/imInvite/export', 70
) p
WHERE NOT EXISTS (SELECT 1 FROM hg_admin_menu m WHERE m.name = p.name);