20260723225202

This commit is contained in:
oneao committed 2026-07-23 22:52:02 +08:00
1 parent 5f73b54802
commit 4d118a0037
22 files changed
+1403 -259

No files matched your search

@@ -0,0 +1,79 @@
/*
新增「多语言类型」表 dbo.b_i18n_type,并注册独立模块 m_i18n_type 与其权限、管理员授权。
用于维护系统支持的语言清单(简称、名称、是否默认、是否启用、排序),默认中文为内置默认语言。
本脚本可重复执行:表、模块、权限均通过存在性判断避免重复播种;
配合 000_reset_metadata.sql 使用(先跑 000 重置,再跑本脚本)即可重建。
注意:b_user 表由 000 脚本保留,本脚本依赖其中 g3soft 管理员账号授于权限。
*/
SET NOCOUNT ON;
BEGIN TRANSACTION;
-- 管理员账号(与 000 脚本保持一致)
DECLARE @AdminId bigint = (
SELECT TOP (1) b_id
FROM dbo.b_user
WHERE b_account = N'g3soft' AND b_canuse = 1
);
-- 系统管理目录(000 脚本播种)
DECLARE @SystemId bigint = (
SELECT TOP (1) b_id FROM dbo.b_module WHERE b_code = N'm_system'
);
-- 1. 多语言类型表
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = N'b_i18n_type')
BEGIN
CREATE TABLE dbo.b_i18n_type (
b_id bigint NOT NULL,
b_code varchar(20) NOT NULL,
b_name nvarchar(100) NOT NULL,
b_canuse int NOT NULL CONSTRAINT DF_b_i18n_type_canuse DEFAULT (1),
b_default int NOT NULL CONSTRAINT DF_b_i18n_type_default DEFAULT (0),
b_xh int NOT NULL CONSTRAINT DF_b_i18n_type_xh DEFAULT (0),
CONSTRAINT PK_b_i18n_type PRIMARY KEY (b_id),
CONSTRAINT UQ_b_i18n_type_code UNIQUE (b_code),
CONSTRAINT CK_b_i18n_type_canuse CHECK (b_canuse IN (0, 1)),
CONSTRAINT CK_b_i18n_type_default CHECK (b_default IN (0, 1))
);
CREATE INDEX IX_b_i18n_type_xh ON dbo.b_i18n_type (b_xh, b_id);
-- 预置数据:默认中文不可删除,可选英文
INSERT INTO dbo.b_i18n_type (b_id, b_code, b_name, b_canuse, b_default, b_xh) VALUES
(920000000000000001, N'zh-CN', N'简体中文', 1, 1, 0),
(920000000000000002, N'en-US', N'English', 1, 0, 10);
END
-- 2. 注册模块与管理员权限(仅在模块不存在时播种)
IF NOT EXISTS (SELECT 1 FROM dbo.b_module WHERE b_code = N'm_i18n_type')
BEGIN
DECLARE @I18nTypeId bigint = 910000000000000003;
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 (
@I18nTypeId, N'm_i18n_type', @SystemId, N'多语言类型', 'module.m_i18n_type',
'page', N'/system/i18n-type', 1, 1, 20
);
INSERT INTO dbo.b_module_power (b_id, b_module_id, b_code, b_name, b_i18n, b_xh, b_canuse) VALUES
(910000000000000105, @I18nTypeId, 'create', N'新增', 'power.m_i18n_type.create', 10, 1),
(910000000000000106, @I18nTypeId, 'update', N'保存', 'power.m_i18n_type.update', 20, 1),
(910000000000000107, @I18nTypeId, 'delete', N'删除', 'power.m_i18n_type.delete', 30, 1);
IF @AdminId IS NOT NULL
BEGIN
INSERT INTO dbo.b_user_module (b_id, b_user_id, b_module_id, b_inputuser_id) VALUES
(910000000000000202, @AdminId, @I18nTypeId, @AdminId);
INSERT INTO dbo.b_user_power (b_id, b_user_id, b_power_id, b_inputuser_id)
SELECT 910000000000000303 + ROW_NUMBER() OVER (ORDER BY b_id), @AdminId, b_id, @AdminId
FROM dbo.b_module_power
WHERE b_module_id = @I18nTypeId;
END
END
COMMIT TRANSACTION;
@@ -0,0 +1,36 @@
/*
新增「系统管理」目录(m_system),并将「多语言类型」模块(m_i18n_type)挂到其下。
本脚本可重复执行:
- m_system 仅在其不存在时创建;
- m_i18n_type 仅在其父级未指向系统管理目录时才更新。
依赖:b_module 表已存在(由 001_add_i18n_type.sql 或业务库结构保证)。
*/
SET NOCOUNT ON;
BEGIN TRANSACTION;
-- 系统管理目录(若不存在则创建)
DECLARE @SystemId bigint = (SELECT TOP (1) b_id FROM dbo.b_module WHERE b_code = N'm_system');
IF @SystemId IS NULL
BEGIN
SET @SystemId = 911000000000000001;
INSERT INTO dbo.b_module (
b_id, b_code, b_parent_id, b_name, b_i18n, b_module_type,
b_canmenu, b_canuse, b_xh
) VALUES (
@SystemId, N'm_system', NULL, N'系统管理', 'module.m_system',
'directory', 1, 1, 10
);
END
-- 多语言类型挂到系统管理目录
UPDATE dbo.b_module
SET b_parent_id = @SystemId
WHERE b_code = N'm_i18n_type'
AND (b_parent_id IS NULL OR b_parent_id <> @SystemId);
COMMIT TRANSACTION;