子系统的配置管理参考界面,通用权限管理系统组件可以同时集中管理控制多个子系统,提高同时开发多个项目的效率。每个系统都可以独立,互相不干涉,灵活性高,部署开发方便,管理规范。
数据库里每个独立的子系统的参考效果图
创建子系统的相关代码,批量执行sql脚本,执行数据库事务的参考代码
/// <summary> /// 调用批量执行脚本的语句 /// 批量执行脚本 /// </summary> private void ExecuteScript(string[] lines) { using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType)) { String sqlQuery = String.Empty; String sqlLine = String.Empty; try { // 打开数据库连接 dbHelper.Open(BaseSystemInfo.UserCenterDbConnection); dbHelper.BeginTransaction(); // 循环读取文本文件 for (int i = 0; i < lines.Length; i++) { sqlLine = lines[i]; if (sqlLine != null && !string.IsNullOrEmpty(sqlLine)) { if (sqlLine.ToUpper().Equals("GO")) { // 执行数据库查询语句 dbHelper.ExecuteNonQuery(sqlQuery); sqlQuery = string.Empty; } else { sqlQuery += sqlLine + System.Environment.NewLine; } } } dbHelper.CommitTransaction(); // 成功的提示信息 MessageBox.Show(AppMessage.MSG3010, AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { dbHelper.RollbackTransaction(); // 在本地文件中记录系统异常信息 this.WriteException(ex); throw; } finally { // 关闭数据库库连接 dbHelper.Close(); } } } #region public bool CheckInputCreateSystem() 检查输入的有效性 /// <summary> /// 检查输入的有效性 /// </summary> public bool CheckInputCreateSystem() { // 是否没有输入系统编号 if (string.IsNullOrEmpty(this.txtSystemCode.Text)) { MessageBox.Show(AppMessage.Format(AppMessage.MSG0007, AppMessage.MSG9977), AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtUser.Focus(); return false; } // 是否没有输入系统名称 if (string.IsNullOrEmpty(this.txtSystemName.Text)) { MessageBox.Show(AppMessage.Format(AppMessage.MSG0007, AppMessage.MSG9978), AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtUser.Focus(); return false; } return true; } #endregion private void btnCreateSystem_Click(object sender, EventArgs e) { if (this.CheckInputCreateSystem()) { // 按系统的配置信息动态获取数据库连接 string file = Application.StartupPath + "//Resources/System.sql"; if (System.IO.File.Exists(file)) { // 读取指定的脚本文件 string[] lines = File.ReadAllLines(file); for (int i = 0; i < lines.Length; i++) { lines[i] = lines[i].Replace("{SystemCode}", this.txtSystemCode.Text).Replace("{SystemName}", this.txtSystemName.Text); } this.ExecuteScript(lines); } } }
创建子系统的脚本参考
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[{SystemCode}Items](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[ParentId] [
int
] NULL,
[Code] [nvarchar](50) NULL,
[FullName] [nvarchar](100) NULL,
[TargetTable] [nvarchar](50) NULL,
[IsTree] [
int
] NOT NULL,
[UseItemCode] [nvarchar](50) NOT NULL,
[UseItemName] [nvarchar](50) NOT NULL,
[UseItemValue] [nvarchar](50) NOT NULL,
[Enabled] [
int
] NOT NULL,
[AllowEdit] [
int
] NOT NULL,
[AllowDelete] [
int
] NOT NULL,
[DeletionStateCode] [
int
] NOT NULL,
[SortCode] [
int
] NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}Items] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsIsTree] DEFAULT ((0)) FOR [IsTree]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsUseItemCode] DEFAULT (N
'编号'
) FOR [UseItemCode]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsUseItemName] DEFAULT (N
'名称'
) FOR [UseItemName]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsUseItemValue] DEFAULT (N
'值'
) FOR [UseItemValue]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsEnabled] DEFAULT ((1)) FOR [Enabled]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsAllowEdit] DEFAULT ((1)) FOR [AllowEdit]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsAllowDelete] DEFAULT ((1)) FOR [AllowDelete]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsCreateOn] DEFAULT (getdate()) FOR [CreateOn]
GO
ALTER TABLE [dbo].[{SystemCode}Items] ADD CONSTRAINT [DF_{SystemCode}ItemsModifiedOn] DEFAULT (getdate()) FOR [ModifiedOn]
GO
CREATE TABLE [dbo].[{SystemCode}Module](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[ParentId] [
int
] NULL,
[Code] [nvarchar](100) NULL,
[FullName] [nvarchar](100) NULL,
[Category] [nvarchar](50) NULL,
[ImageIndex] [nvarchar](50) NULL,
[SelectedImageIndex] [nvarchar](50) NULL,
[NavigateUrl] [nvarchar](200) NULL,
[Target] [nvarchar](100) NULL,
[FormName] [nvarchar](100) NULL,
[AssemblyName] [nvarchar](100) NULL,
[PermissionItemCode] [nvarchar](50) NULL,
[PermissionScopeTables] [nvarchar](500) NULL,
[SortCode] [
int
] NULL,
[Enabled] [
int
] NOT NULL,
[DeletionStateCode] [
int
] NOT NULL,
[IsMenu] [
int
] NULL,
[IsPublic] [
int
] NOT NULL,
[Expand] [
int
] NOT NULL,
[AllowEdit] [
int
] NOT NULL,
[AllowDelete] [
int
] NOT NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}Module] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModulePermissionItemCode] DEFAULT (N
'Resource.AccessPermission'
) FOR [PermissionItemCode]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleEnabled] DEFAULT ((1)) FOR [Enabled]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleIsMenu] DEFAULT ((1)) FOR [IsMenu]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleIsPublic] DEFAULT ((0)) FOR [IsPublic]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleExpand] DEFAULT ((0)) FOR [Expand]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleAllowEdit] DEFAULT ((1)) FOR [AllowEdit]
GO
ALTER TABLE [dbo].[{SystemCode}Module] ADD CONSTRAINT [DF_{SystemCode}ModuleAllowDelete] DEFAULT ((1)) FOR [AllowDelete]
GO
CREATE TABLE [dbo].[{SystemCode}Permission](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[ResourceCategory] [nvarchar](50) NULL,
[ResourceId] [nvarchar](50) NULL,
[PermissionId] [nvarchar](50) NULL,
[PermissionConstraint] [nvarchar](200) NULL,
[Enabled] [
int
] NULL,
[DeletionStateCode] [
int
] NOT NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}Permission] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}Permission] ADD CONSTRAINT [DF_{SystemCode}PermissionDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}Permission] ADD CONSTRAINT [DF_{SystemCode}PermissionCreateOn] DEFAULT (getdate()) FOR [CreateOn]
GO
ALTER TABLE [dbo].[{SystemCode}Permission] ADD CONSTRAINT [DF_{SystemCode}PermissionModifiedOn] DEFAULT (getdate()) FOR [ModifiedOn]
GO
CREATE TABLE [dbo].[{SystemCode}PermissionItem](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[ParentId] [
int
] NULL,
[Code] [nvarchar](100) NULL,
[FullName] [nvarchar](200) NULL,
[CategoryCode] [nvarchar](50) NOT NULL,
[IsScope] [
int
] NOT NULL,
[IsPublic] [
int
] NOT NULL,
[IsVisible] [
int
] NOT NULL,
[AllowEdit] [
int
] NOT NULL,
[AllowDelete] [
int
] NOT NULL,
[LastCall] [smalldatetime] NULL,
[SortCode] [
int
] NULL,
[Enabled] [
int
] NOT NULL,
[DeletionStateCode] [
int
] NOT NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}PermissionItem] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemCategoryCode] DEFAULT (N
'Application'
) FOR [CategoryCode]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemIsScope] DEFAULT ((0)) FOR [IsScope]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemIsPublic] DEFAULT ((0)) FOR [IsPublic]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemIsVisible] DEFAULT ((1)) FOR [IsVisible]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemAllowEdit] DEFAULT ((1)) FOR [AllowEdit]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemAllowDelete] DEFAULT ((1)) FOR [AllowDelete]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemEnabled] DEFAULT ((1)) FOR [Enabled]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemCreateOn] DEFAULT (getdate()) FOR [CreateOn]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionItem] ADD CONSTRAINT [DF_{SystemCode}PermissionItemModifiedOn] DEFAULT (getdate()) FOR [ModifiedOn]
GO
CREATE TABLE [dbo].[{SystemCode}PermissionScope](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[ResourceCategory] [nvarchar](50) NULL,
[ResourceId] [nvarchar](50) NULL,
[TargetCategory] [nvarchar](50) NULL,
[TargetId] [nvarchar](50) NULL,
[PermissionId] [
int
] NULL,
[PermissionConstraint] [nvarchar](200) NULL,
[StartDate] [smalldatetime] NULL,
[EndDate] [smalldatetime] NULL,
[Enabled] [
int
] NOT NULL,
[DeletionStateCode] [
int
] NOT NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}PermissionScope] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionScope] ADD CONSTRAINT [DF_{SystemCode}PermissionScopeEnabled] DEFAULT ((1)) FOR [Enabled]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionScope] ADD CONSTRAINT [DF_{SystemCode}PermissionScopeDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionScope] ADD CONSTRAINT [DF_{SystemCode}PermissionScopeCreateOn] DEFAULT (getdate()) FOR [CreateOn]
GO
ALTER TABLE [dbo].[{SystemCode}PermissionScope] ADD CONSTRAINT [DF_{SystemCode}PermissionScopeModifiedOn] DEFAULT (getdate()) FOR [ModifiedOn]
GO
CREATE TABLE [dbo].[{SystemCode}Role](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[SystemId] [nvarchar](50) NULL,
[OrganizeId] [
int
] NULL,
[CategoryCode] [nvarchar](50) NULL,
[Code] [nvarchar](50) NULL,
[Realname] [nvarchar](200) NULL,
[AllowEdit] [
int
] NOT NULL,
[AllowDelete] [
int
] NOT NULL,
[IsVisible] [
int
] NOT NULL,
[SortCode] [
int
] NULL,
[DeletionStateCode] [
int
] NOT NULL,
[Enabled] [
int
] NOT NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}Role] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleAllowEdit] DEFAULT ((1)) FOR [AllowEdit]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleAllowDelete] DEFAULT ((1)) FOR [AllowDelete]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleIsVisible] DEFAULT ((1)) FOR [IsVisible]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleSortCode] DEFAULT ((0)) FOR [SortCode]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleEnabled] DEFAULT ((1)) FOR [Enabled]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleCreateOn] DEFAULT (getdate()) FOR [CreateOn]
GO
ALTER TABLE [dbo].[{SystemCode}Role] ADD CONSTRAINT [DF_{SystemCode}RoleModifiedOn] DEFAULT (getdate()) FOR [ModifiedOn]
GO
CREATE TABLE [dbo].[{SystemCode}UserRole](
[Id] [
int
] IDENTITY(1,1) NOT NULL,
[UserId] [
int
] NULL,
[RoleId] [
int
] NOT NULL,
[SortCode] [
int
] NULL,
[Enabled] [
int
] NOT NULL,
[DeletionStateCode] [
int
] NOT NULL,
[Description] [nvarchar](200) NULL,
[CreateOn] [smalldatetime] NULL,
[CreateUserId] [nvarchar](20) NULL,
[CreateBy] [nvarchar](20) NULL,
[ModifiedOn] [smalldatetime] NULL,
[ModifiedUserId] [nvarchar](20) NULL,
[ModifiedBy] [nvarchar](20) NULL,
CONSTRAINT [PK_{SystemCode}UserRole] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[{SystemCode}UserRole] ADD CONSTRAINT [DF_{SystemCode}UserRoleEnabled] DEFAULT ((1)) FOR [Enabled]
GO
ALTER TABLE [dbo].[{SystemCode}UserRole] ADD CONSTRAINT [DF_{SystemCode}UserRoleDeletionStateCode] DEFAULT ((0)) FOR [DeletionStateCode]
GO
ALTER TABLE [dbo].[{SystemCode}UserRole] ADD CONSTRAINT [DF_{SystemCode}UserRoleCreateOn] DEFAULT (getdate()) FOR [CreateOn]
GO
ALTER TABLE [dbo].[{SystemCode}UserRole] ADD CONSTRAINT [DF_{SystemCode}UserRoleModifiedOn] DEFAULT (getdate()) FOR [ModifiedOn]
GO
INSERT INTO [dbo].[{SystemCode}PermissionItem] ([Code],[FullName],[IsVisible]) VALUES(
'Resource.ManagePermission'
,
'资源管理权限[系统内置]'
, 0)
GO
INSERT INTO [dbo].[{SystemCode}PermissionItem] ([Code],[FullName],[IsVisible]) VALUES(
'Resource.AccessPermission'
,
'资源访问权限[系统内置]'
, 0)
GO
INSERT INTO [dbo].[{SystemCode}PermissionItem] ([Code],[FullName],[IsVisible]) VALUES(
'Column.Access'
,
'访问列权限[系统内置]'
, 0)
GO
INSERT INTO [dbo].[{SystemCode}PermissionItem] ([Code],[FullName],[IsVisible]) VALUES(
'Column.Edit'
,
'编辑列访问[系统内置]'
, 0)
GO
INSERT INTO [dbo].[{SystemCode}PermissionItem] ([Code],[FullName],[IsVisible]) VALUES(
'Column.Deney'
,
'拒绝访问列[系统内置]'
, 0)
GO
INSERT INTO [dbo].[ItemsSystem] ([ItemCode],[ItemName],[ItemValue]) VALUES(
'{SystemCode}'
,
'{SystemName}'
,
'{SystemCode}'
)
GO