20260722222510
This commit is contained in:
1 parent
d04fad24ed
commit
59b3ccfb1c
36 files changed
+2753
-3064
No files matched your search
@@ -0,0 +1,267 @@
|
||||
/*
|
||||
WARNING: This script removes every user table except dbo.b_user.
|
||||
Database views are intentionally preserved. Run it only against a selected
|
||||
organization database after confirming the target connection.
|
||||
*/
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = 1;
|
||||
DECLARE @AdminId bigint = (
|
||||
SELECT TOP (1) b_id
|
||||
FROM dbo.b_user
|
||||
WHERE b_account = N'g3soft' AND b_canuse = 1
|
||||
);
|
||||
IF @AdminId IS NULL
|
||||
THROW 51000, '未找到启用的 g3soft 用户,已取消重置。', 1;
|
||||
EXEC sys.sp_set_session_context @key = N'reset_admin_id', @value = @AdminId;
|
||||
|
||||
DECLARE @Sql nvarchar(max) = N'';
|
||||
SELECT @Sql = @Sql + N'ALTER TABLE '
|
||||
+ QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + N'.'
|
||||
+ QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT '
|
||||
+ QUOTENAME(name) + N';'
|
||||
FROM sys.foreign_keys
|
||||
WHERE OBJECT_NAME(parent_object_id) <> N'b_user'
|
||||
OR OBJECT_NAME(referenced_object_id) <> N'b_user';
|
||||
IF @Sql <> N'' EXEC sys.sp_executesql @Sql;
|
||||
|
||||
SET @Sql = N'';
|
||||
SELECT @Sql = @Sql + N'DROP TABLE '
|
||||
+ QUOTENAME(SCHEMA_NAME(schema_id)) + N'.' + QUOTENAME(name) + N';'
|
||||
FROM sys.tables
|
||||
WHERE is_ms_shipped = 0 AND name <> N'b_user';
|
||||
IF @Sql <> N'' EXEC sys.sp_executesql @Sql;
|
||||
|
||||
GO
|
||||
|
||||
DECLARE @AdminId bigint = TRY_CONVERT(bigint, SESSION_CONTEXT(N'reset_admin_id'));
|
||||
IF @AdminId IS NULL
|
||||
THROW 51001, '重置会话缺少管理员 ID。', 1;
|
||||
|
||||
CREATE TABLE dbo.b_module (
|
||||
b_id bigint NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_module_type varchar(20) NOT NULL,
|
||||
b_route varchar(200) NULL,
|
||||
b_viewtable varchar(128) NULL,
|
||||
b_savetable varchar(128) NULL,
|
||||
b_keyfield varchar(50) NULL,
|
||||
b_orderfield varchar(500) NULL,
|
||||
b_canmenu int NOT NULL CONSTRAINT DF_b_module_canmenu DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_canuse DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_xh DEFAULT (0),
|
||||
CONSTRAINT PK_b_module PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_parent FOREIGN KEY (b_parent_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_b_module_code CHECK (
|
||||
LEN(b_code) BETWEEN 2 AND 50
|
||||
AND b_code COLLATE Latin1_General_100_BIN2 LIKE '[a-z]%'
|
||||
AND b_code COLLATE Latin1_General_100_BIN2 NOT LIKE '%[^a-z0-9_]%'
|
||||
),
|
||||
CONSTRAINT CK_b_module_type CHECK (b_module_type IN ('directory', 'page', 'data')),
|
||||
CONSTRAINT CK_b_module_canmenu CHECK (b_canmenu IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_canuse CHECK (b_canuse IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_directory CHECK (b_module_type <> 'directory' OR (b_route IS NULL AND b_viewtable IS NULL AND b_savetable IS NULL)),
|
||||
CONSTRAINT CK_b_module_page CHECK (b_module_type <> 'page' OR b_route IS NOT NULL),
|
||||
CONSTRAINT CK_b_module_data CHECK (b_module_type <> 'data' OR b_canmenu = 0)
|
||||
);
|
||||
CREATE UNIQUE INDEX UX_b_module_route ON dbo.b_module (b_route) WHERE b_route IS NOT NULL;
|
||||
CREATE INDEX IX_b_module_parent ON dbo.b_module (b_parent_id, b_xh, b_id);
|
||||
|
||||
CREATE TABLE dbo.b_module_field (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_field_type varchar(30) NOT NULL,
|
||||
b_value nvarchar(500) NULL,
|
||||
b_dict_code varchar(100) NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_field_canuse DEFAULT (1),
|
||||
b_remark nvarchar(500) NULL,
|
||||
b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_module_field_inputdatetime DEFAULT (GETDATE()),
|
||||
CONSTRAINT PK_b_module_field PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_field_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_field UNIQUE (b_module_id, b_field),
|
||||
CONSTRAINT CK_b_module_field_type CHECK (b_field_type IN ('string', 'text', 'number', 'date', 'datetime', 'boolean', 'select_id', 'select_input')),
|
||||
CONSTRAINT CK_b_module_field_canuse CHECK (b_canuse IN (0, 1))
|
||||
);
|
||||
CREATE INDEX IX_b_module_field_module ON dbo.b_module_field (b_module_id, b_canuse, b_id);
|
||||
|
||||
CREATE TABLE dbo.b_module_field_list (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_kind varchar(20) NOT NULL,
|
||||
b_field_id bigint NULL,
|
||||
b_title nvarchar(100) NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_visible int NOT NULL CONSTRAINT DF_b_module_field_list_visible DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_field_list_xh DEFAULT (0),
|
||||
b_width int NULL,
|
||||
b_sortable int NOT NULL CONSTRAINT DF_b_module_field_list_sortable DEFAULT (0),
|
||||
b_display_type varchar(30) NULL,
|
||||
b_canedit int NOT NULL CONSTRAINT DF_b_module_field_list_canedit DEFAULT (0),
|
||||
CONSTRAINT PK_b_module_field_list PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_field_list_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT FK_b_module_field_list_parent FOREIGN KEY (b_parent_id) REFERENCES dbo.b_module_field_list (b_id),
|
||||
CONSTRAINT FK_b_module_field_list_field FOREIGN KEY (b_field_id) REFERENCES dbo.b_module_field (b_id),
|
||||
CONSTRAINT CK_b_module_field_list_kind CHECK (b_kind IN ('group', 'field')),
|
||||
CONSTRAINT CK_b_module_field_list_shape CHECK (
|
||||
(b_kind = 'group' AND b_field_id IS NULL AND b_width IS NULL AND b_display_type IS NULL AND b_canedit = 0)
|
||||
OR (b_kind = 'field' AND b_field_id IS NOT NULL AND b_display_type IS NOT NULL)
|
||||
),
|
||||
CONSTRAINT CK_b_module_field_list_visible CHECK (b_visible IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_list_sortable CHECK (b_sortable IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_list_canedit CHECK (b_canedit IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_list_width CHECK (b_width IS NULL OR b_width > 0)
|
||||
);
|
||||
CREATE UNIQUE INDEX UX_b_module_field_list_field ON dbo.b_module_field_list (b_module_id, b_field_id) WHERE b_field_id IS NOT NULL;
|
||||
CREATE INDEX IX_b_module_field_list_tree ON dbo.b_module_field_list (b_module_id, b_parent_id, b_xh, b_id);
|
||||
|
||||
CREATE TABLE dbo.b_module_field_edit_group (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_code varchar(100) NOT NULL,
|
||||
b_title nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_field_edit_group_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_field_edit_group_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_b_module_field_edit_group PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_field_edit_group_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_field_edit_group UNIQUE (b_module_id, b_code),
|
||||
CONSTRAINT CK_b_module_field_edit_group_canuse CHECK (b_canuse IN (0, 1))
|
||||
);
|
||||
CREATE INDEX IX_b_module_field_edit_group_module ON dbo.b_module_field_edit_group (b_module_id, b_canuse, b_xh, b_id);
|
||||
|
||||
CREATE TABLE dbo.b_module_field_edit (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field_id bigint NOT NULL,
|
||||
b_editor varchar(30) NOT NULL,
|
||||
b_edit_format varchar(100) NULL,
|
||||
b_editor_options nvarchar(max) NULL,
|
||||
b_required int NOT NULL CONSTRAINT DF_b_module_field_edit_required DEFAULT (0),
|
||||
b_readonly int NOT NULL CONSTRAINT DF_b_module_field_edit_readonly DEFAULT (0),
|
||||
b_disabled int NOT NULL CONSTRAINT DF_b_module_field_edit_disabled DEFAULT (0),
|
||||
b_placeholder nvarchar(200) NULL,
|
||||
b_canform int NOT NULL CONSTRAINT DF_b_module_field_edit_canform DEFAULT (1),
|
||||
b_edit_group varchar(100) NULL,
|
||||
b_edit_xh int NOT NULL CONSTRAINT DF_b_module_field_edit_xh DEFAULT (0),
|
||||
b_edit_span int NOT NULL CONSTRAINT DF_b_module_field_edit_span DEFAULT (24),
|
||||
CONSTRAINT PK_b_module_field_edit PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_field_edit_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT FK_b_module_field_edit_field FOREIGN KEY (b_field_id) REFERENCES dbo.b_module_field (b_id),
|
||||
CONSTRAINT UQ_b_module_field_edit UNIQUE (b_module_id, b_field_id),
|
||||
CONSTRAINT CK_b_module_field_edit_required CHECK (b_required IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_edit_readonly CHECK (b_readonly IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_edit_disabled CHECK (b_disabled IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_edit_canform CHECK (b_canform IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_edit_span CHECK (b_edit_span BETWEEN 1 AND 24),
|
||||
CONSTRAINT CK_b_module_field_edit_options CHECK (b_editor_options IS NULL OR ISJSON(b_editor_options) = 1)
|
||||
);
|
||||
CREATE INDEX IX_b_module_field_edit_module ON dbo.b_module_field_edit (b_module_id, b_edit_xh, b_id);
|
||||
|
||||
CREATE TABLE dbo.b_module_field_query (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field_id bigint NOT NULL,
|
||||
b_component varchar(30) NOT NULL,
|
||||
b_operator varchar(20) NOT NULL,
|
||||
b_default_value nvarchar(500) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_field_query_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_field_query_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_b_module_field_query PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_field_query_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT FK_b_module_field_query_field FOREIGN KEY (b_field_id) REFERENCES dbo.b_module_field (b_id),
|
||||
CONSTRAINT UQ_b_module_field_query UNIQUE (b_module_id, b_field_id),
|
||||
CONSTRAINT CK_b_module_field_query_operator CHECK (b_operator IN ('=', 'like', 'between', 'in')),
|
||||
CONSTRAINT CK_b_module_field_query_canuse CHECK (b_canuse IN (0, 1))
|
||||
);
|
||||
CREATE INDEX IX_b_module_field_query_module ON dbo.b_module_field_query (b_module_id, b_canuse, b_xh, b_id);
|
||||
|
||||
CREATE TABLE dbo.b_module_power (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_power_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_power_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_b_module_power PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_power_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_power UNIQUE (b_module_id, b_code),
|
||||
CONSTRAINT CK_b_module_power_canuse CHECK (b_canuse IN (0, 1))
|
||||
);
|
||||
|
||||
CREATE TABLE dbo.b_user_module (
|
||||
b_id bigint NOT NULL,
|
||||
b_user_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_inputuser_id bigint NOT NULL,
|
||||
b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_user_module_inputdatetime DEFAULT (GETDATE()),
|
||||
CONSTRAINT PK_b_user_module PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_user_module_user FOREIGN KEY (b_user_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT FK_b_user_module_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT FK_b_user_module_inputuser FOREIGN KEY (b_inputuser_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT UQ_b_user_module UNIQUE (b_user_id, b_module_id)
|
||||
);
|
||||
|
||||
CREATE TABLE dbo.b_user_power (
|
||||
b_id bigint NOT NULL,
|
||||
b_user_id bigint NOT NULL,
|
||||
b_power_id bigint NOT NULL,
|
||||
b_inputuser_id bigint NOT NULL,
|
||||
b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_user_power_inputdatetime DEFAULT (GETDATE()),
|
||||
CONSTRAINT PK_b_user_power PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_user_power_user FOREIGN KEY (b_user_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT FK_b_user_power_power FOREIGN KEY (b_power_id) REFERENCES dbo.b_module_power (b_id),
|
||||
CONSTRAINT FK_b_user_power_inputuser FOREIGN KEY (b_inputuser_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT UQ_b_user_power UNIQUE (b_user_id, b_power_id)
|
||||
);
|
||||
|
||||
CREATE TABLE dbo.b_i18n (
|
||||
b_id bigint NOT NULL,
|
||||
b_key varchar(150) NOT NULL,
|
||||
b_locale varchar(20) NOT NULL,
|
||||
b_value nvarchar(500) NOT NULL,
|
||||
CONSTRAINT PK_b_i18n PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_b_i18n UNIQUE (b_key, b_locale)
|
||||
);
|
||||
CREATE INDEX IX_b_i18n_key ON dbo.b_i18n (b_key, b_locale);
|
||||
|
||||
DECLARE @SystemId bigint = 910000000000000001;
|
||||
DECLARE @MetadataId bigint = 910000000000000002;
|
||||
DECLARE @I18nId bigint = 910000000000000003;
|
||||
DECLARE @AuthorizationId bigint = 910000000000000004;
|
||||
INSERT INTO dbo.b_module (b_id, b_code, b_parent_id, b_name, b_i18n, b_module_type, b_route, b_canmenu, b_canuse, b_xh) VALUES
|
||||
(@SystemId, 'm_system', NULL, N'系统管理', 'module.m_system', 'directory', NULL, 1, 1, 100),
|
||||
(@MetadataId, 'm_metadata', @SystemId, N'元数据配置', 'module.m_metadata', 'page', '/system/metadata', 1, 1, 10),
|
||||
(@I18nId, 'm_i18n', @SystemId, N'多语言管理', 'module.m_i18n', 'page', '/system/i18n', 1, 1, 20),
|
||||
(@AuthorizationId, 'm_authorization', @SystemId, N'用户授权', 'module.m_authorization', 'page', '/system/authorization', 1, 1, 30);
|
||||
|
||||
INSERT INTO dbo.b_module_power (b_id, b_module_id, b_code, b_name, b_i18n, b_xh, b_canuse) VALUES
|
||||
(910000000000000101, @MetadataId, 'create', N'新增', 'power.m_metadata.create', 10, 1),
|
||||
(910000000000000102, @MetadataId, 'update', N'保存', 'power.m_metadata.update', 20, 1),
|
||||
(910000000000000103, @MetadataId, 'delete', N'删除', 'power.m_metadata.delete', 30, 1),
|
||||
(910000000000000104, @MetadataId, 'sync', N'同步字段', 'power.m_metadata.sync', 40, 1),
|
||||
(910000000000000105, @I18nId, 'update', N'保存', 'power.m_i18n.update', 10, 1),
|
||||
(910000000000000106, @AuthorizationId, 'grant', N'授权', 'power.m_authorization.grant', 10, 1);
|
||||
|
||||
INSERT INTO dbo.b_user_module (b_id, b_user_id, b_module_id, b_inputuser_id) VALUES
|
||||
(910000000000000201, @AdminId, @MetadataId, @AdminId),
|
||||
(910000000000000202, @AdminId, @I18nId, @AdminId),
|
||||
(910000000000000203, @AdminId, @AuthorizationId, @AdminId);
|
||||
INSERT INTO dbo.b_user_power (b_id, b_user_id, b_power_id, b_inputuser_id)
|
||||
SELECT 910000000000000300 + ROW_NUMBER() OVER (ORDER BY b_id), @AdminId, b_id, @AdminId
|
||||
FROM dbo.b_module_power;
|
||||
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = NULL;
|
||||
EXEC sys.sp_set_session_context @key = N'reset_admin_id', @value = NULL;
|
||||
COMMIT TRANSACTION;
|
||||
@@ -1,219 +0,0 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_module', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_module (
|
||||
b_id bigint NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_type varchar(20) NOT NULL,
|
||||
b_route varchar(200) NULL,
|
||||
b_viewtable varchar(128) NULL,
|
||||
b_savetable varchar(128) NULL,
|
||||
b_keyfield varchar(50) NULL,
|
||||
b_orderfield varchar(500) NULL,
|
||||
b_canmenu int NOT NULL CONSTRAINT DF_b_module_canmenu DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_canuse DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_xh DEFAULT (0),
|
||||
CONSTRAINT PK_b_module PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_parent FOREIGN KEY (b_parent_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_b_module_code CHECK (
|
||||
LEN(b_code) BETWEEN 2 AND 50
|
||||
AND b_code COLLATE Latin1_General_100_BIN2 LIKE '[a-z]%'
|
||||
AND b_code COLLATE Latin1_General_100_BIN2 NOT LIKE '%[^a-z0-9_]%'
|
||||
),
|
||||
CONSTRAINT CK_b_module_type CHECK (b_type IN ('directory', 'page', 'data')),
|
||||
CONSTRAINT CK_b_module_canmenu CHECK (b_canmenu IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_canuse CHECK (b_canuse IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_directory CHECK (
|
||||
b_type <> 'directory'
|
||||
OR (b_route IS NULL AND b_viewtable IS NULL AND b_savetable IS NULL)
|
||||
),
|
||||
CONSTRAINT CK_b_module_data CHECK (b_type <> 'data' OR b_canmenu = 0)
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_module') AND name = N'UX_b_module_route')
|
||||
CREATE UNIQUE INDEX UX_b_module_route ON dbo.b_module (b_route) WHERE b_route IS NOT NULL AND b_route <> '';
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_module') AND name = N'IX_b_module_parent')
|
||||
CREATE INDEX IX_b_module_parent ON dbo.b_module (b_parent_id, b_xh, b_id);
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_module_field', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_module_field (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_type varchar(20) NOT NULL,
|
||||
b_canlist int NOT NULL CONSTRAINT DF_b_module_field_canlist DEFAULT (1),
|
||||
b_canform int NOT NULL CONSTRAINT DF_b_module_field_canform DEFAULT (1),
|
||||
b_must int NOT NULL CONSTRAINT DF_b_module_field_must DEFAULT (0),
|
||||
b_canquery int NOT NULL CONSTRAINT DF_b_module_field_canquery DEFAULT (0),
|
||||
b_readonly int NOT NULL CONSTRAINT DF_b_module_field_readonly DEFAULT (0),
|
||||
b_width int NULL,
|
||||
b_value nvarchar(500) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_field_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_field_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_b_module_field PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_field_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_field UNIQUE (b_module_id, b_field),
|
||||
CONSTRAINT CK_b_module_field_type CHECK (b_type IN ('string', 'text', 'number', 'select', 'date', 'boolean')),
|
||||
CONSTRAINT CK_b_module_field_canlist CHECK (b_canlist IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_canform CHECK (b_canform IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_must CHECK (b_must IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_canquery CHECK (b_canquery IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_readonly CHECK (b_readonly IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_canuse CHECK (b_canuse IN (0, 1)),
|
||||
CONSTRAINT CK_b_module_field_form_must CHECK (b_canform = 1 OR b_must = 0),
|
||||
CONSTRAINT CK_b_module_field_width CHECK (b_width IS NULL OR b_width > 0)
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_module_field') AND name = N'IX_b_module_field_module')
|
||||
CREATE INDEX IX_b_module_field_module ON dbo.b_module_field (b_module_id, b_xh, b_id);
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_module_power', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_module_power (
|
||||
b_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_b_module_power_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_b_module_power_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_b_module_power PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_power_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_power UNIQUE (b_module_id, b_code),
|
||||
CONSTRAINT CK_b_module_power_canuse CHECK (b_canuse IN (0, 1))
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_module_power') AND name = N'IX_b_module_power_module')
|
||||
CREATE INDEX IX_b_module_power_module ON dbo.b_module_power (b_module_id, b_xh, b_id);
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_user_module', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_user_module (
|
||||
b_id bigint NOT NULL,
|
||||
b_user_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_inputuser_id bigint NOT NULL,
|
||||
b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_user_module_inputdatetime DEFAULT (GETDATE()),
|
||||
CONSTRAINT PK_b_user_module PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_user_module_user FOREIGN KEY (b_user_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT FK_b_user_module_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT FK_b_user_module_inputuser FOREIGN KEY (b_inputuser_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT UQ_b_user_module UNIQUE (b_user_id, b_module_id)
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_user_module') AND name = N'IX_b_user_module_module')
|
||||
CREATE INDEX IX_b_user_module_module ON dbo.b_user_module (b_module_id, b_user_id);
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_user_power', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_user_power (
|
||||
b_id bigint NOT NULL,
|
||||
b_user_id bigint NOT NULL,
|
||||
b_power_id bigint NOT NULL,
|
||||
b_inputuser_id bigint NOT NULL,
|
||||
b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_user_power_inputdatetime DEFAULT (GETDATE()),
|
||||
CONSTRAINT PK_b_user_power PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_user_power_user FOREIGN KEY (b_user_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT FK_b_user_power_power FOREIGN KEY (b_power_id) REFERENCES dbo.b_module_power (b_id),
|
||||
CONSTRAINT FK_b_user_power_inputuser FOREIGN KEY (b_inputuser_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT UQ_b_user_power UNIQUE (b_user_id, b_power_id)
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_user_power') AND name = N'IX_b_user_power_power')
|
||||
CREATE INDEX IX_b_user_power_power ON dbo.b_user_power (b_power_id, b_user_id);
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_i18n', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_i18n (
|
||||
b_id bigint NOT NULL,
|
||||
b_key varchar(150) NOT NULL,
|
||||
b_locale varchar(20) NOT NULL,
|
||||
b_value nvarchar(500) NOT NULL,
|
||||
b_inputuser_id bigint NOT NULL,
|
||||
b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_i18n_inputdatetime DEFAULT (GETDATE()),
|
||||
b_updateuser_id bigint NULL,
|
||||
b_updatedatetime datetime NULL,
|
||||
CONSTRAINT PK_b_i18n PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_i18n_inputuser FOREIGN KEY (b_inputuser_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT FK_b_i18n_updateuser FOREIGN KEY (b_updateuser_id) REFERENCES dbo.b_user (b_id),
|
||||
CONSTRAINT UQ_b_i18n UNIQUE (b_key, b_locale)
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.b_i18n') AND name = N'IX_b_i18n_key')
|
||||
CREATE INDEX IX_b_i18n_key ON dbo.b_i18n (b_key, b_locale);
|
||||
|
||||
DECLARE @SystemModuleId bigint = 205000000000000011;
|
||||
DECLARE @ModuleManagementId bigint = 205000000000000012;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_module WHERE b_code = 'm_system')
|
||||
INSERT INTO dbo.b_module (b_id, b_code, b_parent_id, b_name, b_i18n, b_type, b_canmenu, b_canuse, b_xh)
|
||||
VALUES (@SystemModuleId, 'm_system', NULL, N'系统管理', 'module.m_system', 'directory', 1, 1, 100);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_module WHERE b_code = 'm_module')
|
||||
INSERT INTO dbo.b_module (b_id, b_code, b_parent_id, b_name, b_i18n, b_type, b_route, b_canmenu, b_canuse, b_xh)
|
||||
VALUES (@ModuleManagementId, 'm_module', @SystemModuleId, N'模块管理', 'module.m_module', 'page', '/system/modules', 1, 1, 10);
|
||||
|
||||
DECLARE @Powers TABLE (b_id bigint, b_code varchar(50), b_name nvarchar(100), b_xh int);
|
||||
INSERT INTO @Powers VALUES
|
||||
(205000000000000001, 'create', N'新增', 10),
|
||||
(205000000000000002, 'update', N'修改', 20),
|
||||
(205000000000000003, 'delete', N'删除', 30),
|
||||
(205000000000000004, 'grant', N'用户授权', 40);
|
||||
|
||||
INSERT INTO dbo.b_module_power (b_id, b_module_id, b_code, b_name, b_i18n, b_xh, b_canuse)
|
||||
SELECT p.b_id, @ModuleManagementId, p.b_code, p.b_name, 'power.m_module.' + p.b_code, p.b_xh, 1
|
||||
FROM @Powers p
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM dbo.b_module_power target
|
||||
WHERE target.b_module_id = @ModuleManagementId AND target.b_code = p.b_code
|
||||
);
|
||||
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = 1;
|
||||
DECLARE @AdminId bigint = (SELECT TOP (1) b_id FROM dbo.b_user WHERE b_account = N'g3soft' AND b_canuse = 1);
|
||||
IF @AdminId IS NULL
|
||||
THROW 51000, '未找到已启用的管理员账号 g3soft,模块管理初始化已取消。', 1;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_user_module WHERE b_user_id = @AdminId AND b_module_id = @ModuleManagementId)
|
||||
INSERT INTO dbo.b_user_module (b_id, b_user_id, b_module_id, b_inputuser_id, b_inputdatetime)
|
||||
VALUES (205000000000000101, @AdminId, @ModuleManagementId, @AdminId, GETDATE());
|
||||
|
||||
INSERT INTO dbo.b_user_power (b_id, b_user_id, b_power_id, b_inputuser_id, b_inputdatetime)
|
||||
SELECT 205000000000000200 + ROW_NUMBER() OVER (ORDER BY p.b_id), @AdminId, p.b_id, @AdminId, GETDATE()
|
||||
FROM dbo.b_module_power p
|
||||
WHERE p.b_module_id = @ModuleManagementId
|
||||
AND p.b_code IN ('create', 'update', 'delete', 'grant')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM dbo.b_user_power target
|
||||
WHERE target.b_user_id = @AdminId AND target.b_power_id = p.b_id
|
||||
);
|
||||
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = NULL;
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
||||
BEGIN TRY
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = NULL;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
END CATCH;
|
||||
THROW;
|
||||
END CATCH;
|
||||
@@ -1,44 +0,0 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_module', N'U') IS NOT NULL
|
||||
AND COL_LENGTH(N'dbo.b_module', N'b_orderfield') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.b_module ALTER COLUMN b_orderfield varchar(500) NULL;
|
||||
';
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_module', N'U') IS NOT NULL
|
||||
AND COL_LENGTH(N'dbo.b_module', N'b_ordertype') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE dbo.b_module
|
||||
SET b_orderfield =
|
||||
CASE
|
||||
WHEN NULLIF(LTRIM(RTRIM(b_orderfield)), '''') IS NULL THEN NULL
|
||||
WHEN UPPER(RIGHT(LTRIM(RTRIM(b_orderfield)), 4)) = '' ASC''
|
||||
OR UPPER(RIGHT(LTRIM(RTRIM(b_orderfield)), 5)) = '' DESC''
|
||||
THEN LTRIM(RTRIM(b_orderfield))
|
||||
WHEN UPPER(LTRIM(RTRIM(b_ordertype))) IN (''ASC'', ''DESC'')
|
||||
THEN LTRIM(RTRIM(b_orderfield)) + '' '' + UPPER(LTRIM(RTRIM(b_ordertype)))
|
||||
ELSE LTRIM(RTRIM(b_orderfield))
|
||||
END;
|
||||
';
|
||||
|
||||
IF OBJECT_ID(N'dbo.CK_b_module_ordertype', N'C') IS NOT NULL
|
||||
ALTER TABLE dbo.b_module DROP CONSTRAINT CK_b_module_ordertype;
|
||||
|
||||
ALTER TABLE dbo.b_module DROP COLUMN b_ordertype;
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
@@ -1,130 +0,0 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.columns c
|
||||
JOIN sys.types t ON t.user_type_id = c.user_type_id
|
||||
WHERE c.object_id = OBJECT_ID(N'dbo.b_module')
|
||||
AND c.name = N'b_id'
|
||||
AND t.name <> N'bigint'
|
||||
)
|
||||
BEGIN
|
||||
CREATE TABLE #ModuleIdMap (
|
||||
old_id varchar(50) NOT NULL PRIMARY KEY,
|
||||
new_id bigint NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
INSERT INTO #ModuleIdMap (old_id, new_id)
|
||||
SELECT
|
||||
b_id,
|
||||
CASE b_id
|
||||
WHEN 'M_SYSTEM' THEN 205000000000000011
|
||||
WHEN 'M_MODULE' THEN 205000000000000012
|
||||
ELSE 206000000000000000 + ROW_NUMBER() OVER (ORDER BY b_id)
|
||||
END
|
||||
FROM dbo.b_module;
|
||||
|
||||
ALTER TABLE dbo.b_module ADD
|
||||
b_new_id bigint NULL,
|
||||
b_code varchar(50) NULL,
|
||||
b_new_parent_id bigint NULL;
|
||||
ALTER TABLE dbo.b_module_field ADD b_new_module_id bigint NULL;
|
||||
ALTER TABLE dbo.b_module_power ADD b_new_module_id bigint NULL;
|
||||
ALTER TABLE dbo.b_user_module ADD b_new_module_id bigint NULL;
|
||||
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE target
|
||||
SET
|
||||
b_new_id = id_map.new_id,
|
||||
b_code = LOWER(target.b_id),
|
||||
b_new_parent_id = parent_map.new_id
|
||||
FROM dbo.b_module target
|
||||
JOIN #ModuleIdMap id_map ON id_map.old_id = target.b_id
|
||||
LEFT JOIN #ModuleIdMap parent_map ON parent_map.old_id = target.b_parent_id;
|
||||
|
||||
UPDATE target
|
||||
SET b_new_module_id = id_map.new_id
|
||||
FROM dbo.b_module_field target
|
||||
JOIN #ModuleIdMap id_map ON id_map.old_id = target.b_module_id;
|
||||
|
||||
UPDATE target
|
||||
SET b_new_module_id = id_map.new_id
|
||||
FROM dbo.b_module_power target
|
||||
JOIN #ModuleIdMap id_map ON id_map.old_id = target.b_module_id;
|
||||
|
||||
UPDATE target
|
||||
SET b_new_module_id = id_map.new_id
|
||||
FROM dbo.b_user_module target
|
||||
JOIN #ModuleIdMap id_map ON id_map.old_id = target.b_module_id;
|
||||
|
||||
ALTER TABLE dbo.b_module ALTER COLUMN b_new_id bigint NOT NULL;
|
||||
ALTER TABLE dbo.b_module ALTER COLUMN b_code varchar(50) NOT NULL;
|
||||
ALTER TABLE dbo.b_module_field ALTER COLUMN b_new_module_id bigint NOT NULL;
|
||||
ALTER TABLE dbo.b_module_power ALTER COLUMN b_new_module_id bigint NOT NULL;
|
||||
ALTER TABLE dbo.b_user_module ALTER COLUMN b_new_module_id bigint NOT NULL;
|
||||
';
|
||||
|
||||
ALTER TABLE dbo.b_module DROP CONSTRAINT FK_b_module_parent;
|
||||
ALTER TABLE dbo.b_module_field DROP CONSTRAINT FK_b_module_field_module;
|
||||
ALTER TABLE dbo.b_module_power DROP CONSTRAINT FK_b_module_power_module;
|
||||
ALTER TABLE dbo.b_user_module DROP CONSTRAINT FK_b_user_module_module;
|
||||
ALTER TABLE dbo.b_module_field DROP CONSTRAINT UQ_b_module_field;
|
||||
ALTER TABLE dbo.b_module_power DROP CONSTRAINT UQ_b_module_power;
|
||||
ALTER TABLE dbo.b_user_module DROP CONSTRAINT UQ_b_user_module;
|
||||
ALTER TABLE dbo.b_module DROP CONSTRAINT CK_b_module_id;
|
||||
ALTER TABLE dbo.b_module DROP CONSTRAINT PK_b_module;
|
||||
|
||||
DROP INDEX IX_b_module_parent ON dbo.b_module;
|
||||
DROP INDEX IX_b_module_field_module ON dbo.b_module_field;
|
||||
DROP INDEX IX_b_module_power_module ON dbo.b_module_power;
|
||||
DROP INDEX IX_b_user_module_module ON dbo.b_user_module;
|
||||
|
||||
ALTER TABLE dbo.b_module_field DROP COLUMN b_module_id;
|
||||
ALTER TABLE dbo.b_module_power DROP COLUMN b_module_id;
|
||||
ALTER TABLE dbo.b_user_module DROP COLUMN b_module_id;
|
||||
ALTER TABLE dbo.b_module DROP COLUMN b_parent_id, b_id;
|
||||
|
||||
EXEC sys.sp_rename N'dbo.b_module.b_new_id', N'b_id', N'COLUMN';
|
||||
EXEC sys.sp_rename N'dbo.b_module.b_new_parent_id', N'b_parent_id', N'COLUMN';
|
||||
EXEC sys.sp_rename N'dbo.b_module_field.b_new_module_id', N'b_module_id', N'COLUMN';
|
||||
EXEC sys.sp_rename N'dbo.b_module_power.b_new_module_id', N'b_module_id', N'COLUMN';
|
||||
EXEC sys.sp_rename N'dbo.b_user_module.b_new_module_id', N'b_module_id', N'COLUMN';
|
||||
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.b_module ADD
|
||||
CONSTRAINT PK_b_module PRIMARY KEY (b_id),
|
||||
CONSTRAINT FK_b_module_parent FOREIGN KEY (b_parent_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_b_module_code CHECK (
|
||||
LEN(b_code) BETWEEN 2 AND 50
|
||||
AND b_code COLLATE Latin1_General_100_BIN2 LIKE ''[a-z]%''
|
||||
AND b_code COLLATE Latin1_General_100_BIN2 NOT LIKE ''%[^a-z0-9_]%''
|
||||
);
|
||||
ALTER TABLE dbo.b_module_field ADD
|
||||
CONSTRAINT FK_b_module_field_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_field UNIQUE (b_module_id, b_field);
|
||||
ALTER TABLE dbo.b_module_power ADD
|
||||
CONSTRAINT FK_b_module_power_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_module_power UNIQUE (b_module_id, b_code);
|
||||
ALTER TABLE dbo.b_user_module ADD
|
||||
CONSTRAINT FK_b_user_module_module FOREIGN KEY (b_module_id) REFERENCES dbo.b_module (b_id),
|
||||
CONSTRAINT UQ_b_user_module UNIQUE (b_user_id, b_module_id);
|
||||
|
||||
CREATE INDEX IX_b_module_parent ON dbo.b_module (b_parent_id, b_xh, b_id);
|
||||
CREATE INDEX IX_b_module_field_module ON dbo.b_module_field (b_module_id, b_xh, b_id);
|
||||
CREATE INDEX IX_b_module_power_module ON dbo.b_module_power (b_module_id, b_xh, b_id);
|
||||
CREATE INDEX IX_b_user_module_module ON dbo.b_user_module (b_module_id, b_user_id);
|
||||
';
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
@@ -1,137 +0,0 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @SystemModuleId bigint = (SELECT TOP (1) b_id FROM dbo.b_module WHERE b_code = 'm_system');
|
||||
DECLARE @I18nModuleId bigint = 205000000000000013;
|
||||
|
||||
IF @SystemModuleId IS NULL
|
||||
THROW 51000, '未找到系统管理模块 m_system,多语言管理初始化已取消。', 1;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_module WHERE b_code = 'm_i18n')
|
||||
INSERT INTO dbo.b_module (
|
||||
b_id, b_code, b_parent_id, b_name, b_i18n, b_type, b_route,
|
||||
b_canmenu, b_canuse, b_xh
|
||||
)
|
||||
VALUES (
|
||||
@I18nModuleId, 'm_i18n', @SystemModuleId, N'多语言管理', 'module.m_i18n',
|
||||
'page', '/system/i18n', 1, 1, 20
|
||||
);
|
||||
ELSE
|
||||
SET @I18nModuleId = (SELECT TOP (1) b_id FROM dbo.b_module WHERE b_code = 'm_i18n');
|
||||
|
||||
DECLARE @Powers TABLE (
|
||||
b_id bigint,
|
||||
b_code varchar(50),
|
||||
b_name nvarchar(100),
|
||||
b_i18n varchar(150),
|
||||
b_xh int
|
||||
);
|
||||
INSERT INTO @Powers VALUES
|
||||
(205000000000000005, 'create', N'新增', 'power.m_i18n.create', 10),
|
||||
(205000000000000006, 'update', N'修改', 'power.m_i18n.update', 20),
|
||||
(205000000000000007, 'delete', N'删除', 'power.m_i18n.delete', 30);
|
||||
|
||||
INSERT INTO dbo.b_module_power (b_id, b_module_id, b_code, b_name, b_i18n, b_xh, b_canuse)
|
||||
SELECT source.b_id, @I18nModuleId, source.b_code, source.b_name, source.b_i18n, source.b_xh, 1
|
||||
FROM @Powers source
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.b_module_power target
|
||||
WHERE target.b_module_id = @I18nModuleId
|
||||
AND target.b_code = source.b_code
|
||||
);
|
||||
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = 1;
|
||||
DECLARE @AdminId bigint = (
|
||||
SELECT TOP (1) b_id
|
||||
FROM dbo.b_user
|
||||
WHERE b_account = N'g3soft'
|
||||
AND b_canuse = 1
|
||||
);
|
||||
IF @AdminId IS NULL
|
||||
THROW 51000, '未找到已启用的管理员账号 g3soft,多语言管理初始化已取消。', 1;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.b_user_module
|
||||
WHERE b_user_id = @AdminId
|
||||
AND b_module_id = @I18nModuleId
|
||||
)
|
||||
INSERT INTO dbo.b_user_module (
|
||||
b_id, b_user_id, b_module_id, b_inputuser_id, b_inputdatetime
|
||||
)
|
||||
VALUES (
|
||||
205000000000000102, @AdminId, @I18nModuleId, @AdminId, GETDATE()
|
||||
);
|
||||
|
||||
INSERT INTO dbo.b_user_power (b_id, b_user_id, b_power_id, b_inputuser_id, b_inputdatetime)
|
||||
SELECT
|
||||
CASE power.b_code
|
||||
WHEN 'create' THEN 205000000000000211
|
||||
WHEN 'update' THEN 205000000000000212
|
||||
WHEN 'delete' THEN 205000000000000213
|
||||
END,
|
||||
@AdminId,
|
||||
power.b_id,
|
||||
@AdminId,
|
||||
GETDATE()
|
||||
FROM dbo.b_module_power power
|
||||
WHERE power.b_module_id = @I18nModuleId
|
||||
AND power.b_code IN ('create', 'update', 'delete')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.b_user_power target
|
||||
WHERE target.b_user_id = @AdminId
|
||||
AND target.b_power_id = power.b_id
|
||||
);
|
||||
|
||||
DECLARE @Translations TABLE (
|
||||
b_id bigint,
|
||||
b_key varchar(150),
|
||||
b_locale varchar(20),
|
||||
b_value nvarchar(500)
|
||||
);
|
||||
INSERT INTO @Translations VALUES
|
||||
(205000000000000301, 'module.m_i18n', 'zh-CN', N'多语言管理'),
|
||||
(205000000000000302, 'module.m_i18n', 'en-US', N'Language Resources'),
|
||||
(205000000000000303, 'module.m_i18n', 'zh-TW', N'多語言管理'),
|
||||
(205000000000000304, 'power.m_i18n.create', 'zh-CN', N'新增'),
|
||||
(205000000000000305, 'power.m_i18n.create', 'en-US', N'Create'),
|
||||
(205000000000000306, 'power.m_i18n.create', 'zh-TW', N'新增'),
|
||||
(205000000000000307, 'power.m_i18n.update', 'zh-CN', N'修改'),
|
||||
(205000000000000308, 'power.m_i18n.update', 'en-US', N'Update'),
|
||||
(205000000000000309, 'power.m_i18n.update', 'zh-TW', N'修改'),
|
||||
(205000000000000310, 'power.m_i18n.delete', 'zh-CN', N'删除'),
|
||||
(205000000000000311, 'power.m_i18n.delete', 'en-US', N'Delete'),
|
||||
(205000000000000312, 'power.m_i18n.delete', 'zh-TW', N'刪除');
|
||||
|
||||
INSERT INTO dbo.b_i18n (
|
||||
b_id, b_key, b_locale, b_value, b_inputuser_id, b_inputdatetime,
|
||||
b_updateuser_id, b_updatedatetime
|
||||
)
|
||||
SELECT
|
||||
source.b_id, source.b_key, source.b_locale, source.b_value,
|
||||
@AdminId, GETDATE(), NULL, NULL
|
||||
FROM @Translations source
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.b_i18n target
|
||||
WHERE target.b_key = source.b_key
|
||||
AND target.b_locale = source.b_locale
|
||||
);
|
||||
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = NULL;
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
||||
BEGIN TRY
|
||||
EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = NULL;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
END CATCH;
|
||||
THROW;
|
||||
END CATCH;
|
||||
@@ -1,49 +0,0 @@
|
||||
-- 操作权限测试数据:生成 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;
|
||||
@@ -1,53 +0,0 @@
|
||||
-- 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