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;