20260722173146
This commit is contained in:
1 parent
e9f099f044
commit
d04fad24ed
24 files changed
+1309
-422
No files matched your search
@@ -0,0 +1,49 @@
|
||||
-- 操作权限测试数据:生成 5000 条 b_user_power
|
||||
-- 注意:会删除 admin 用户的旧权限记录,并移除 (b_user_id,b_power_id) 唯一约束。
|
||||
-- 如需恢复约束,执行:
|
||||
-- ALTER TABLE dbo.b_user_power ADD CONSTRAINT UQ_b_user_power UNIQUE (b_user_id, b_power_id);
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @AdminUserId bigint = (SELECT TOP 1 b_id FROM dbo.b_user WHERE b_canuse = 1);
|
||||
IF @AdminUserId IS NULL BEGIN
|
||||
RAISERROR('b_user 中没有 b_canuse=1 的用户', 16, 1);
|
||||
ROLLBACK;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DROP TABLE IF EXISTS #powers;
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY b_id) AS rn, b_id AS pid
|
||||
INTO #powers
|
||||
FROM dbo.b_module_power WHERE b_canuse = 1;
|
||||
|
||||
DECLARE @powerCount int = @@ROWCOUNT;
|
||||
IF @powerCount = 0 BEGIN
|
||||
RAISERROR('b_module_power 中没有 b_canuse=1 的权限', 16, 1);
|
||||
ROLLBACK;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
-- 移除唯一约束以便灌入测试数据
|
||||
IF EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'UQ_b_user_power' AND object_id = OBJECT_ID('dbo.b_user_power'))
|
||||
ALTER TABLE dbo.b_user_power DROP CONSTRAINT UQ_b_user_power;
|
||||
|
||||
DELETE FROM dbo.b_user_power WHERE b_user_id = @AdminUserId;
|
||||
|
||||
WITH num AS (
|
||||
SELECT TOP 5000 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n
|
||||
FROM sys.all_columns a CROSS JOIN sys.all_columns b
|
||||
)
|
||||
INSERT INTO dbo.b_user_power (b_id, b_user_id, b_power_id, b_inputuser_id, b_inputdatetime)
|
||||
SELECT
|
||||
9000000000000000000 + n,
|
||||
@AdminUserId,
|
||||
(SELECT pid FROM #powers WHERE rn = ((n - 1) % @powerCount) + 1),
|
||||
@AdminUserId,
|
||||
GETDATE()
|
||||
FROM num;
|
||||
|
||||
PRINT '插入 ' + CAST(@@ROWCOUNT AS varchar) + ' 条';
|
||||
|
||||
DROP TABLE #powers;
|
||||
COMMIT;
|
||||
@@ -0,0 +1,53 @@
|
||||
-- 006_module_power_mock.sql
|
||||
-- 为「用户管理」模块(b_id = 829648877883461)插入 5000 条模拟操作权限(b_module_power)。
|
||||
-- 幂等:每次执行先删除该模块下 mock_ 前缀的旧数据,再重新插入 5000 条,
|
||||
-- 可重复运行而不会造成 (b_module_id, b_code) 或 b_id 冲突。
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @ModuleId bigint = 829648877883461;
|
||||
|
||||
-- 1) 校验目标模块存在
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_module WHERE b_id = @ModuleId)
|
||||
BEGIN
|
||||
DECLARE @msg nvarchar(200) = N'未找到用户管理模块 b_id=' + CAST(@ModuleId AS nvarchar);
|
||||
THROW 51001, @msg, 1;
|
||||
END
|
||||
|
||||
-- 2) 清理旧的 mock 数据(避免重复累积)
|
||||
DELETE FROM dbo.b_module_power WHERE b_module_id = @ModuleId AND b_code LIKE 'mock_%';
|
||||
|
||||
-- 4) 插入 5000 条模拟操作权限
|
||||
WITH num AS (
|
||||
SELECT TOP 5000 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n
|
||||
FROM sys.all_columns a CROSS JOIN sys.all_columns b
|
||||
)
|
||||
INSERT INTO dbo.b_module_power (b_id, b_module_id, b_code, b_name, b_i18n, b_xh, b_canuse)
|
||||
SELECT
|
||||
9100000000000000000 + n,
|
||||
@ModuleId,
|
||||
'mock_' + RIGHT('000000' + CAST(n AS varchar(10)), 6),
|
||||
N'模拟操作 ' + RIGHT('000000' + CAST(n AS varchar(10)), 6),
|
||||
'power.m_user.mock_' + RIGHT('000000' + CAST(n AS varchar(10)), 6),
|
||||
n,
|
||||
1
|
||||
FROM num
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM dbo.b_module_power p
|
||||
WHERE p.b_module_id = @ModuleId
|
||||
AND p.b_code = 'mock_' + RIGHT('000000' + CAST(n AS varchar(10)), 6)
|
||||
);
|
||||
|
||||
PRINT '插入 ' + CAST(@@ROWCOUNT AS varchar) + ' 条模拟操作权限(模块 b_id=' + CAST(@ModuleId AS varchar) + ')';
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
Reference in new issue
Block a user