子系统的配置管理参考界面,通用权限管理系统组件可以同时集中管理控制多个子系统,提高同时开发多个项目的效率。每个系统都可以独立,互相不干涉,灵活性高,部署开发方便,管理规范。
数据库里每个独立的子系统的参考效果图
创建子系统的相关代码,批量执行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
转载于:https://my.oschina.net/iwenr/blog/227897