chore: seed migration objects batch 5
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
-- IM registration SMS switch and registration invite admin migration.
|
||||
-- This file is idempotent for MySQL deployments using HotGo's default hg_ prefix.
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- im_tenant is the only tenant registry. Admin identities reference it directly.
|
||||
SET @tenant_column_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
@@ -77,6 +75,48 @@ CREATE TABLE IF NOT EXISTS im_admin_operation_audit (
|
||||
UNIQUE KEY uk_im_admin_audit_request_action (request_id, action)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- Invitation definitions belong to the HotGo control database. Tenant
|
||||
-- databases retain only im_registration_invite_uses.
|
||||
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,
|
||||
remark VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at DATETIME(3) NOT NULL,
|
||||
updated_at DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_im_registration_invite_batch_tenant_idempotency (tenant_id, idempotency_key),
|
||||
KEY idx_im_registration_invite_batch_tenant_created (tenant_id, created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS im_registration_invite_codes (
|
||||
id BIGINT NOT NULL,
|
||||
tenant_id BIGINT NOT NULL,
|
||||
batch_id BIGINT NULL,
|
||||
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,
|
||||
remark VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at DATETIME(3) NOT NULL,
|
||||
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)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO hg_sys_config
|
||||
(`group`, `name`, `type`, `key`, `value`, `default_value`, `sort`, `tip`, `is_default`, `status`, `created_at`, `updated_at`)
|
||||
SELECT
|
||||
@@ -104,6 +144,25 @@ WHERE NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'imRegistrationInvite
|
||||
SET @invitePage := (SELECT id FROM hg_admin_menu WHERE name = 'imRegistrationInviteIndex' LIMIT 1);
|
||||
UPDATE hg_admin_menu SET tree = CONCAT('tr_', id, ' tr_', @imRoot, ' ') WHERE id = @invitePage;
|
||||
|
||||
SET @imTenantPage := (SELECT id FROM hg_admin_menu WHERE name = 'imTenantIndex' LIMIT 1);
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @imTenantPage, 4, CONCAT('tr_', @imTenantPage, ' '), '租户用量与健康', 'imTenantUsage', '', '', 3,
|
||||
'/imTenant/usage', '', 1, 40, 1, NOW(), NOW()
|
||||
WHERE @imTenantPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'imTenantUsage');
|
||||
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @imTenantPage, 4, CONCAT('tr_', @imTenantPage, ' '), title, name, '', '', 3, permissions, '', 1, sort, 1, NOW(), NOW()
|
||||
FROM (
|
||||
SELECT '租户删除前检查' title, 'imTenantDeletionCheck' name, '/imTenant/deletionCheck' permissions, 50 sort UNION ALL
|
||||
SELECT '租户进入删除流程', 'imTenantEnterDeleting', '/imTenant/enterDeleting', 60 UNION ALL
|
||||
SELECT '恢复租户', 'imTenantRestore', '/imTenant/restore', 70
|
||||
) p
|
||||
WHERE @imTenantPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu m WHERE m.name = p.name);
|
||||
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, sort, status, created_at, updated_at)
|
||||
SELECT @invitePage, 3, CONCAT('tr_', @invitePage, ' tr_', @imRoot, ' '), title, name, '', '', 3, permissions, '', sort, 1, NOW(), NOW()
|
||||
@@ -112,7 +171,48 @@ 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);
|
||||
|
||||
SET @systemConfigPage := (SELECT id FROM hg_admin_menu WHERE name = 'system_config' LIMIT 1);
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @systemConfigPage, 3, CONCAT('tr_', @systemConfigPage, ' '), title, name, '', '', 3, permissions, '', 1, sort, 1, NOW(), NOW()
|
||||
FROM (
|
||||
SELECT '查看IM注册配置' title, 'imRegistrationConfigGet' name, '/imRegistration/config/get' permissions, 80 sort UNION ALL
|
||||
SELECT '更新IM注册配置', 'imRegistrationConfigUpdate', '/imRegistration/config/update', 90
|
||||
) p
|
||||
WHERE @systemConfigPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu m WHERE m.name = p.name);
|
||||
|
||||
SET @imUserPage := (SELECT id FROM hg_admin_menu WHERE name = 'imUserIndex' LIMIT 1);
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @imUserPage, 4, CONCAT('tr_', @imUserPage, ' '), '重置用户密码', 'imUserResetPassword', '', '', 3,
|
||||
'/imUser/resetPassword', '', 1, 20, 1, NOW(), NOW()
|
||||
WHERE @imUserPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'imUserResetPassword');
|
||||
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @imUserPage, 4, CONCAT('tr_', @imUserPage, ' '), '用户设备列表', 'imUserDevices', '', '', 3,
|
||||
'/imUser/devices', '', 1, 30, 1, NOW(), NOW()
|
||||
WHERE @imUserPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'imUserDevices');
|
||||
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @imUserPage, 4, CONCAT('tr_', @imUserPage, ' '), '撤销用户会话', 'imUserRevokeSessions', '', '', 3,
|
||||
'/imUser/revokeSessions', '', 1, 40, 1, NOW(), NOW()
|
||||
WHERE @imUserPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'imUserRevokeSessions');
|
||||
|
||||
INSERT INTO hg_admin_menu
|
||||
(pid, level, tree, title, name, path, icon, type, permissions, component, hidden, sort, status, created_at, updated_at)
|
||||
SELECT @imUserPage, 4, CONCAT('tr_', @imUserPage, ' '), '更新用户状态', 'imUserStatus', '', '', 3,
|
||||
'/imUser/status', '', 1, 50, 1, NOW(), NOW()
|
||||
WHERE @imUserPage IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'imUserStatus');
|
||||
|
||||
Reference in New Issue
Block a user