权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程

2012-01-18 14:50  通用C#系统架构  阅读(1979)  评论(4编辑  收藏  举报

   系统初始化的运行效果如下:

   吉日嘎拉,通用权限管理系统组件

    参数表是为了防止反复被初始化的,防止关键数据丢失。

   吉日嘎拉,通用权限管理系统组件

   吉日嘎拉,通用权限管理系统组件

 

   其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下。

首先写了一个存储过程如下,把系统中的表都清理干净,存储过程的名字叫“SystemInitialize”

View Code
-- =============================================
-- Author:        <吉日嘎拉>
-- Create date: <2012.01.18>
-- Description:    <初始化系统>
-- =============================================
ALTER PROCEDURE [dbo].[SystemInitialize] 
AS
BEGIN
    SET NOCOUNT ON;
    
    -- 检查是否已经初始化过系统?只允许初始化一次
    DECLARE @Worked int;
    SELECT @Worked = Worked FROM Base_Parameter WHERE ID = 10000000 AND ParameterContent = 'None';
    
    IF @Worked > 0
    BEGIN
      RETURN;
    END

    -- 名片管理
    TRUNCATE TABLE Base_Businesscard;
    -- 评论表
    TRUNCATE TABLE Base_Comment;
    -- 联络单明细表
    TRUNCATE TABLE Base_ContactDetails;
    -- 联络单主表
    TRUNCATE TABLE Base_Contact;
    -- 系统异常表
    TRUNCATE TABLE Base_Exception;
    -- 文件表
    TRUNCATE TABLE Base_File;
    -- 文件夹表
    TRUNCATE TABLE Base_Folder;
    -- 数据字典主表(资源)
    -- Base_Items
    -- 工作流示例—请假单表
    TRUNCATE TABLE Base_Leave;
    -- 系统日志表
    TRUNCATE TABLE Base_Log;
    -- 消息表
    TRUNCATE TABLE Base_Message;
    -- 模块(菜单)表 通用权限以外的全删除
    DELETE FROM Base_Module WHERE AllowDelete = 1;
    -- 组织机构、部门表 删除的测试数据
    DELETE FROM Base_Organize WHERE IsInnerOrganize = 1;
    -- 新闻表
    TRUNCATE TABLE Base_News;
    -- 系统参数配置表
    DELETE FROM Base_Parameter WHERE (ID <> 10000000);
    -- 操作权限存储表
    TRUNCATE TABLE Base_Permission;
    -- 数据集权限存储表
    TRUNCATE TABLE Base_PermissionScope;
    -- 操作权限项定义 删除通用权限意外的全部权限定义
    DELETE FROM Base_PermissionItem WHERE AllowDelete = 1;
    -- 项目表
    TRUNCATE TABLE Base_Project;
    -- 员工(职员)表组织关系表
    TRUNCATE TABLE Base_StaffOrganize;
    -- 员工(职员)表
    TRUNCATE TABLE Base_Staff;
    -- 序列产生器表
    TRUNCATE TABLE Base_Sequence;
    -- 表字段结构定义说明
    TRUNCATE TABLE Base_TableColumns;
    -- 用户送货地址表
    TRUNCATE TABLE Base_UserAddress;
    -- 用户帐户组织关系表
    TRUNCATE TABLE Base_UserOrganize;
    -- 用户帐户角色关系表
    TRUNCATE TABLE Base_UserRole;
    -- 用户帐户表
    DELETE FROM Base_User WHERE UserName != 'Administrator';
    -- 系统角色表
    DELETE FROM Base_Role WHERE Code != 'Administrators';
    -- 工作日志表
    TRUNCATE TABLE Base_WorkReport;
    
    -- 设置已初始化标志,防止反复初始化系统
    UPDATE Base_Parameter SET Worked = 1, ParameterContent = 'Processed' WHERE ID = 10000000;

END

   在通用权限管理系统组件中调用存储过程的方法如下

View Code
        private void btnInitialize_Click(object sender, EventArgs e)
        {
            // 默认按钮放在第2个按钮上,尽量防止误操作。
            if (MessageBox.Show(AppMessage.MSG3000, AppMessage.MSG0000, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
            {
                // 按系统的配置信息动态获取数据库连接
                using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
                {
                    try
                    {
                        // 打开数据库连接
                        dbHelper.Open(BaseSystemInfo.UserCenterDbConnection);
                        // 执行存储过程
                        int returnValue = dbHelper.ExecuteNonQuery(CommandType.StoredProcedure, "SystemInitialize");
                        // 成功的提示信息
                        MessageBox.Show(AppMessage.MSG3010, AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.btnInitialize.Enabled = false;
                    }
                    catch (Exception ex)
                    {
                        // 在本地文件中记录系统异常信息
                        this.WriteException(ex);
                        throw ex;
                    }
                    finally
                    {
                        // 关闭数据库库连接
                        dbHelper.Close();
                    }
                }
            }
        }

    判断当前用户是否已经登录,当前用户是否超级管理员,当前连接的数据库类型等的参考代码如下

View Code
        public override void SetControlState()
        {
            // 已经登录了系统,并且是系统管理员才可以做这个服务器端的配置,第一次用时无法配置系统了
            /*
            if (!BaseSystemInfo.LogOned || !this.UserInfo.IsAdministrator)
            {
                this.tcConfirm.TabPages.Remove(tpServer);
            }
            
*/
            // 有并发数设置时,不允许重复登录。
            if (this.nupOnLineLimit.Value > 0)
            {
                this.chkCheckOnLine.Checked = false;
                this.chkCheckOnLine.Enabled = false;
            }
            else
            {
                this.chkCheckOnLine.Enabled = true;
            }
            // 只有系统管理员才可以初始化系统,并却是sqlserver数据库下才运行
            this.btnInitialize.Visible = BaseSystemInfo.LogOned && BaseSystemInfo.UserInfo.IsAdministrator;
            if (this.btnInitialize.Visible)
            {
                if (BaseSystemInfo.UserCenterDbType == DataBaseType.SqlServer)
                {
                    string parameter = DotNetService.Instance.ParameterService.GetParameter(UserInfo, "System""System""Initialize");
                    if (!string.IsNullOrEmpty(parameter) && parameter.Equals("None"))
                    {
                        this.btnInitialize.Enabled = true;
                    }
                }
            }
        }

    给大家分享一下比较强大的完整的数据库访问组件,经过了7-8年的考研,运行稳定,编码风格良好,完整源码下载地址如下:

    /Files/jirigala/DotNet.Utilities.rar 

  源码效果图如下:

   



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友