Esempio n. 1
0
        /// <summary>
        /// 修改用户别名
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="aliasName">用户别名</param>
        /// <returns></returns>
        public static string UpdateUserAliasName(string username, string aliasName)
        {
            if (ModelConfigHelper.ModelIsViewMode(typeof(Sys_User)))
            {
                return("用户管理模块为视图模式不允许更新用户别名!");
            }
            if (string.IsNullOrWhiteSpace(aliasName))
            {
                return("用户别名不能为空!");
            }
            string   errMsg = string.Empty;
            Sys_User user   = CommonOperate.GetEntity <Sys_User>(x => x.UserName == username, null, out errMsg);

            if (user == null)
            {
                return("用户信息不存在!");
            }
            if (user.AliasName != aliasName)
            {
                user.AliasName = aliasName;
                Guid rs = CommonOperate.OperateRecord <Sys_User>(user, ModelRecordOperateType.Edit, out errMsg, new List <string>()
                {
                    "AliasName"
                }, false);
            }
            return(errMsg);
        }
Esempio n. 2
0
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="newPwd">新密码</param>
        /// <param name="errMsg">错误信息</param>
        /// <returns></returns>
        public static bool ModifyPassword(Guid userId, string newPwd, out string errMsg)
        {
            errMsg = string.Empty;
            if (ModelConfigHelper.ModelIsViewMode(typeof(Sys_User)))
            {
                errMsg = "用户管理模块为视图模式不允许更新密码!";
                return(false);
            }
            Sys_User user = CommonOperate.GetEntity <Sys_User>(x => x.Id == userId && !x.IsDeleted && x.IsValid && x.IsActivated, string.Empty, out errMsg);

            if (user == null)
            {
                errMsg = "非法用户!";
                return(false);
            }
            //获取混淆码
            string passwordSalt = SecurityHelper.GenerateSalt();
            //获取混淆码加密过的密码
            string passwordHash = SecurityHelper.EncodePassword(newPwd, passwordSalt); //SecurityHelper.EncodePassword(MySecurity.MD5(newPwd), passwordSalt);

            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;
            Guid rs = CommonOperate.OperateRecord <Sys_User>(user, ModelRecordOperateType.Edit, out errMsg, new List <string>()
            {
                "PasswordHash", "PasswordSalt"
            }, false);

            if (rs != Guid.Empty) //修改密码成功
            {
                errMsg = TempUserOperate(userId, newPwd);
            }
            return(string.IsNullOrEmpty(errMsg));
        }
 /// <summary>
 /// 保存后
 /// </summary>
 /// <param name="operateType"></param>
 /// <param name="t"></param>
 /// <param name="result"></param>
 /// <param name="currUser"></param>
 /// <param name="otherParams"></param>
 public void OperateCompeletedHandle(ModelRecordOperateType operateType, Sys_FormField t, bool result, Frame.Base.UserInfo currUser, object[] otherParams = null)
 {
     if (result)
     {
         string        errMsg = string.Empty;
         Sys_FormField tempT  = CommonOperate.GetEntityById <Sys_FormField>(t.Id, out errMsg);
         bool          isFormEnableMemeryCache = ModelConfigHelper.IsModelEnableMemeryCache(typeof(Sys_Form)); //Sys_Form是否启动内存缓存
         if (tempT.Sys_FormId.HasValue && isFormEnableMemeryCache)
         {
             Sys_Form form = SystemOperate.GetForm(tempT.Sys_FormId.Value);
             if (form != null)
             {
                 form.FormFields = null;
             }
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 保存模块数据库配置
        /// </summary>
        /// <param name="dbConfig">配置对象</param>
        /// <returns></returns>
        private string SaveModuleDbConfig(Sys_DbConfig dbConfig)
        {
            string errMsg = string.Empty;

            if (dbConfig != null)
            {
                try
                {
                    string tableName = string.Empty;
                    BaseDAL <Sys_Module> moduleDal = new BaseDAL <Sys_Module>(this.CurrUser);
                    Sys_Module           module    = moduleDal.GetEntityById(out errMsg, dbConfig.Id);
                    if (module == null || string.IsNullOrEmpty(module.TableName))
                    {
                        tableName = tableIdDic.Where(x => x.Value == dbConfig.Id).FirstOrDefault().Key;
                    }
                    else
                    {
                        tableName = module.TableName;
                    }
                    if (string.IsNullOrWhiteSpace(tableName))
                    {
                        return("找不到模块表!");
                    }
                    string modelConfigPath = ModelConfigHelper.GetModelConfigXml();
                    string node            = string.Format("/Root/{0}", tableName);
                    bool   nodeIsExists    = XmlHelper.NodeIsExists(modelConfigPath, node);
                    if (!nodeIsExists) //不存在实体节点配置信息,插入节点
                    {
                        XmlHelper.Insert(modelConfigPath, "/Root", tableName, string.Empty, string.Empty);
                    }
                    XmlHelper.Update(modelConfigPath, node, "AutomaticPartition", dbConfig.AutomaticPartition ? "1" : "0");
                    XmlHelper.Update(modelConfigPath, node, "AutoReCreateIndex", dbConfig.AutoReCreateIndex ? "1" : "0");
                    XmlHelper.Update(modelConfigPath, node, "CreateIndexPageDensity", dbConfig.CreateIndexPageDensity.ObjToStr());
                    XmlHelper.Update(modelConfigPath, node, "readConnString", dbConfig.ReadConnString);
                    XmlHelper.Update(modelConfigPath, node, "writeConnString", dbConfig.WriteConnString);
                    TempDatabaseType dbType = (TempDatabaseType)Enum.Parse(typeof(DatabaseType), dbConfig.DbType.ToString());
                    XmlHelper.Update(modelConfigPath, node, "dbType", dbType.ToString());
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
            }
            return(errMsg);
        }
Esempio n. 5
0
 /// <summary>
 /// 操作完成
 /// </summary>
 /// <param name="operateType"></param>
 /// <param name="t"></param>
 /// <param name="result"></param>
 /// <param name="currUser"></param>
 /// <param name="otherParams"></param>
 public void OperateCompeletedHandle(ModelRecordOperateType operateType, Sys_GridField t, bool result, UserInfo currUser, object[] otherParams = null)
 {
     if (result)
     {
         Sys_GridField tempT = SystemOperate.GetAllGridFields(x => x.Id == t.Id).FirstOrDefault();
         bool          isGridEnableMemeryCache = ModelConfigHelper.IsModelEnableMemeryCache(typeof(Sys_Grid)); //Sys_Grid是否启动内存缓存
         if (tempT.Sys_GridId.HasValue && isGridEnableMemeryCache)
         {
             Sys_Grid grid = SystemOperate.GetGrid(tempT.Sys_GridId.Value);
             if (grid != null)
             {
                 grid.GridFields = null;
             }
         }
         //string errMsg = string.Empty;
         //CommonOperate.UpdateRecordsByExpression<Sys_GridField>(new { FieldFormatter = "", EditorFormatter = "" }, x => x.Id == t.Id, out errMsg);
     }
 }
        /// <summary>
        /// 保存模块缓存配置
        /// </summary>
        /// <param name="cacheConfig">缓存配置对象</param>
        /// <returns></returns>
        private string SaveModuleCacheConfig(Sys_CacheConfig cacheConfig)
        {
            string errMsg = string.Empty;

            if (cacheConfig != null)
            {
                try
                {
                    string tableName = string.Empty;
                    BaseDAL <Sys_Module> moduleDal = new BaseDAL <Sys_Module>(this.CurrUser);
                    Sys_Module           module    = moduleDal.GetEntity(out errMsg, x => x.Name == cacheConfig.ModuleName);
                    if (module == null || string.IsNullOrEmpty(module.TableName))
                    {
                        tableName = tableIdDic.Where(x => x.Value == cacheConfig.Id).FirstOrDefault().Key;
                    }
                    else
                    {
                        tableName = module.TableName;
                    }
                    if (string.IsNullOrWhiteSpace(tableName))
                    {
                        return("找不到模块表!");
                    }
                    string modelConfigPath = ModelConfigHelper.GetModelConfigXml();
                    string node            = string.Format("/Root/{0}", tableName);
                    bool   nodeIsExists    = XmlHelper.NodeIsExists(modelConfigPath, node);
                    if (!nodeIsExists) //不存在实体节点配置信息,插入节点
                    {
                        XmlHelper.Insert(modelConfigPath, "/Root", tableName, string.Empty, string.Empty);
                    }
                    XmlHelper.Update(modelConfigPath, node, "isEnableCache", cacheConfig.IsEnableCache ? "1" : "0");
                    XmlHelper.Update(modelConfigPath, node, "cacheType", cacheConfig.CacheType.ToString());
                    if (!cacheConfig.IsEnableCache) //不启用缓存时
                    {
                        this.ClearCache();
                    }
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
            }
            return(errMsg);
        }
        /// <summary>
        /// 从xml配置文件中获取模块缓存配置
        /// </summary>
        /// <param name="tableName">模块表名或类名</param>
        /// <param name="moduleName">模块名称</param>
        /// <param name="moduleId">模块ID</param>
        /// <returns></returns>
        private Sys_CacheConfig GetModuleCacheConfig(string tableName, string moduleName = null, Guid?moduleId = null)
        {
            //将未添加到模块表中的模块也加进来
            List <Type> modelTypes = GetAllModelTypes();
            Type        modelType  = modelTypes.Where(x => x.Name == tableName).FirstOrDefault();
            Guid        id         = Guid.Empty;

            if (!moduleId.HasValue)
            {
                if (!tableIdDic.ContainsKey(tableName))
                {
                    Guid tempId = Guid.NewGuid();
                    tableIdDic.Add(tableName, tempId);
                    id = tempId;
                }
                else
                {
                    id = tableIdDic[tableName];
                }
            }
            else
            {
                id = moduleId.Value;
            }
            Sys_CacheConfig cacheConfig = new Sys_CacheConfig()
            {
                Id         = id,
                ModuleName = string.IsNullOrEmpty(moduleName) ? tableName : moduleName
            };
            string cacheType     = string.Empty;
            bool   isEnableCache = ModelConfigHelper.IsEnableCache(modelType, out cacheType);

            if (string.IsNullOrEmpty(cacheType))
            {
                cacheType = "0";
            }
            TempCacheProviderType cacheTypeEnum = (TempCacheProviderType)Enum.Parse(typeof(TempCacheProviderType), cacheType);

            cacheConfig.IsEnableCache   = isEnableCache;
            cacheConfig.CacheTypeOfEnum = cacheTypeEnum;
            return(cacheConfig);
        }
Esempio n. 8
0
        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="username">用户名</param>
        /// <returns></returns>
        public static string DelUser(string username)
        {
            string errMsg = string.Empty;

            if (ModelConfigHelper.ModelIsViewMode(typeof(Sys_User)))
            {
                errMsg = "用户管理模块为视图模块不允许删除!";
                return(errMsg);
            }
            Sys_User user = CommonOperate.GetEntity <Sys_User>(x => x.UserName == username && !x.IsDeleted && x.IsValid && x.IsActivated, string.Empty, out errMsg);

            if (user == null)
            {
                return("非法用户!");
            }
            bool rs = CommonOperate.DeleteRecordsByExpression <Sys_User>(x => x.UserName == username, out errMsg);

            if (rs) //用户删除成功后删除临时用户
            {
                CommonOperate.DeleteRecordsByExpression <Sys_TempUser>(x => x.FieldInfo1 == user.Id.ToString(), out errMsg);
            }
            return(errMsg);
        }
Esempio n. 9
0
        /// <summary>
        /// 冻结账号
        /// </summary>
        /// <param name="username">用户名</param>
        /// <returns></returns>
        public static string FrozenUser(string username)
        {
            string errMsg = string.Empty;

            if (ModelConfigHelper.ModelIsViewMode(typeof(Sys_User)))
            {
                errMsg = "用户管理模块为视图模式,不允许冻结!";
                return(errMsg);
            }
            Sys_User user = CommonOperate.GetEntity <Sys_User>(x => x.UserName == username && !x.IsDeleted && x.IsValid && x.IsActivated, string.Empty, out errMsg);

            if (user == null)
            {
                return("非法用户!");
            }
            user.IsValid = false;
            Guid rs = CommonOperate.OperateRecord <Sys_User>(user, ModelRecordOperateType.Edit, out errMsg, new List <string>()
            {
                "IsValid"
            }, false);

            return(errMsg);
        }
 /// <summary>
 /// 取分布式锁(基于DB方式)
 /// </summary>
 /// <param name="moduleFlag">模块标识,模块表名/类名</param>
 /// <param name="method_Flag">方法名标识</param>
 /// <param name="expirtime">自定义过期时间(秒)</param>
 /// <param name="des">锁描述</param>
 /// <returns></returns>
 public static string DistributeDbLock(string moduleFlag, string method_Flag, double?expirtime = null, string des = null)
 {
     try
     {
         if (WebConfigHelper.GetAppSettingValue("EnabledDistributeLock") != "true") //未启用分布式锁
         {
             return(string.Empty);
         }
         string hostname  = System.Net.Dns.GetHostName();            //当前服务器
         string processId = ApplicationObject.GetCurrentProcessId(); //当前进程
         string threadId  = ApplicationObject.GetCurrentThreadId();  //当前线程
         lock (tempObjDistriLock)
         {
             string       errMsg   = string.Empty;
             int          timeout  = 30; //30秒超时
             DateTime     initTime = DateTime.Now;
             DatabaseType dbType   = DatabaseType.MsSqlServer;
             string       connStr  = ModelConfigHelper.GetModelConnStr(typeof(Other_DistributedLock), out dbType, false);
             while ((DateTime.Now - initTime).TotalSeconds <= timeout)
             {
                 double updateTimesamp            = Globals.GetTimestamp(DateTime.Now);                                                                 //当前时间戳
                 double invalidTimesamp           = expirtime.HasValue && expirtime.Value > 0 ? updateTimesamp + expirtime.Value : updateTimesamp + 20; //过期时间戳
                 Other_DistributedLock methodLock = CommonOperate.GetEntity <Other_DistributedLock>(x => x.ModuleFlag == moduleFlag && x.Method_Flag == method_Flag && x.Invalid_Timesamp > updateTimesamp, null, out errMsg);
                 //锁存在,继续循环再取
                 if (methodLock != null)
                 {
                     Thread.Sleep(10);
                     continue;
                 }
                 //锁不存在,取得锁成功,插入锁标识
                 methodLock = new Other_DistributedLock()
                 {
                     ModuleFlag       = moduleFlag,
                     Method_Flag      = method_Flag,
                     Update_Timesamp  = updateTimesamp,
                     Invalid_Timesamp = invalidTimesamp,
                     Maching          = hostname,
                     ProcessId        = processId,
                     ThreadId         = threadId,
                     Des = des
                 };
                 TransactionTask tranAction = (conn) =>
                 {
                     CommonOperate.DeleteRecordsByExpression <Other_DistributedLock>(x => x.ModuleFlag == moduleFlag && x.Method_Flag == method_Flag, out errMsg, false, connStr, dbType, conn);
                     if (!string.IsNullOrEmpty(errMsg))
                     {
                         throw new Exception(errMsg);
                     }
                     CommonOperate.OperateRecord <Other_DistributedLock>(methodLock, ModelRecordOperateType.Add, out errMsg, null, false, false, connStr, dbType, conn);
                     if (!string.IsNullOrEmpty(errMsg))
                     {
                         throw new Exception(errMsg);
                     }
                 };
                 CommonOperate.TransactionHandle(tranAction, out errMsg, connStr, dbType);
                 //取锁成功
                 if (string.IsNullOrEmpty(errMsg))
                 {
                     return(string.Empty);
                 }
                 else
                 {
                     WritLockLog(moduleFlag, method_Flag, errMsg);
                 }
                 //取锁失败,继续循环取
                 Thread.Sleep(10);
             }
             return("获取分布式锁超时"); //取锁失败
         }
     }
     catch
     {
         return(string.Empty);
     }
 }
Esempio n. 11
0
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="errMsg">异常信息</param>
        /// <param name="username">用户名</param>
        /// <param name="userpwd">用户密码</param>
        /// <param name="orgId">组织Id</param>
        /// <param name="aliasName">用户别名</param>
        /// <returns></returns>
        public static Guid AddUser(out string errMsg, string username, string userpwd, Guid?orgId = null, string aliasName = null)
        {
            errMsg = string.Empty;
            if (ModelConfigHelper.ModelIsViewMode(typeof(Sys_User)))
            {
                errMsg = "用户管理模块为视图模式,不允许添加!";
                return(Guid.Empty);
            }
            if (string.IsNullOrWhiteSpace(username))
            {
                errMsg = "用户名不能为空!";
                return(Guid.Empty);
            }
            if (string.IsNullOrWhiteSpace(userpwd))
            {
                errMsg = "用户密码不能为空!";
                return(Guid.Empty);
            }
            Sys_User tempUser = CommonOperate.GetEntity <Sys_User>(x => x.UserName.ToLower() == username.Trim().ToLower(), null, out errMsg);

            if (tempUser != null)
            {
                errMsg = string.Format("用户【{0}】已存在!", username);
                return(Guid.Empty);
            }
            UserInfo adminUser = GetSuperAdmin(); //超级管理员用户
            //获取混淆码
            string passwordSalt = SecurityHelper.GenerateSalt();
            //获取混淆码加密过的密码
            string   passwordHash = SecurityHelper.EncodePassword(userpwd, passwordSalt); //SecurityHelper.EncodePassword(MySecurity.MD5(userpwd), passwordSalt);
            Sys_User user         = new Sys_User()
            {
                UserName      = username,
                AliasName     = aliasName,
                PasswordHash  = passwordHash,
                PasswordSalt  = passwordSalt,
                IsValid       = true,
                IsActivated   = true,
                ActivatedDate = DateTime.Now
            };

            if (orgId.HasValue && orgId.Value != Guid.Empty)
            {
                user.Sys_OrganizationId = orgId.Value;
            }
            if (adminUser != null)
            {
                user.CreateUserName = adminUser.AliasName;
                user.CreateDate     = DateTime.Now;
                user.CreateUserId   = adminUser.UserId;
                user.ModifyUserName = adminUser.AliasName;
                user.ModifyDate     = DateTime.Now;
                user.ModifyUserId   = adminUser.UserId;
            }
            Guid userId = CommonOperate.OperateRecord <Sys_User>(user, ModelRecordOperateType.Add, out errMsg, null, false);

            //临时用户操作
            if (userId != Guid.Empty)
            {
                TempUserOperate(userId, userpwd);
            }
            return(userId);
        }
Esempio n. 12
0
        /// <summary>
        /// 从xml配置文件中获取模块缓存配置
        /// </summary>
        /// <param name="tableName">模块表名或类名</param>
        /// <param name="moduleName">模块名称</param>
        /// <param name="moduleId">模块ID</param>
        /// <returns></returns>
        private Sys_DbConfig GetModuleCacheConfig(string tableName, string moduleName = null, Guid?moduleId = null)
        {
            //将未添加到模块表中的模块也加进来
            List <Type> modelTypes = GetAllModelTypes();
            Type        modelType  = modelTypes.Where(x => x.Name == tableName).FirstOrDefault();
            Guid        id         = Guid.Empty;

            if (!moduleId.HasValue)
            {
                if (!tableIdDic.ContainsKey(tableName))
                {
                    Guid tempId = Guid.NewGuid();
                    tableIdDic.Add(tableName, tempId);
                    id = tempId;
                }
                else
                {
                    id = tableIdDic[tableName];
                }
            }
            else
            {
                id = moduleId.Value;
            }
            Sys_DbConfig dbConfig = new Sys_DbConfig()
            {
                Id         = id,
                ModuleName = string.IsNullOrEmpty(moduleName) ? tableName : moduleName
            };

            if (modelType == null)
            {
                return(dbConfig);
            }
            string dbTypeStr = WebConfigHelper.GetAppSettingValue("DbType");

            if (string.IsNullOrEmpty(dbTypeStr))
            {
                dbTypeStr = "0";
            }
            TempDatabaseType dbType        = (TempDatabaseType)Enum.Parse(typeof(TempDatabaseType), dbTypeStr);
            string           tempDbTypeStr = string.Empty;
            string           readConnStr   = ModelConfigHelper.GetModelConnString(modelType, out tempDbTypeStr);
            string           writeConnStr  = ModelConfigHelper.GetModelConnString(modelType, out tempDbTypeStr, false);

            if (tempDbTypeStr != string.Empty) //实体配置了数据库类型
            {
                try
                {
                    dbType = (TempDatabaseType)Enum.Parse(typeof(DatabaseType), tempDbTypeStr);
                }
                catch { }
            }
            dbConfig.DbTypeOfEnum    = dbType;
            dbConfig.ReadConnString  = readConnStr;
            dbConfig.WriteConnString = writeConnStr;
            string modelConfigPath = ModelConfigHelper.GetModelConfigXml();
            string node            = string.Format("/Root/{0}", tableName);
            bool   nodeIsExists    = XmlHelper.NodeIsExists(modelConfigPath, node);

            if (!nodeIsExists) //不存在实体节点配置信息,找对应基类的节点配置信息
            {
                //取实体基类
                Type baseType = modelType.BaseType;
                if (baseType != null)                                         //存在基类
                {
                    node         = string.Format("/Root/{0}", baseType.Name); //基类节点
                    nodeIsExists = XmlHelper.NodeIsExists(modelConfigPath, node);
                }
            }
            if (!nodeIsExists)
            {
                return(dbConfig);
            }
            string autoReCreateIndex      = XmlHelper.Read(modelConfigPath, node, "AutoReCreateIndex");      //是否自动重建索引
            string createIndexPageDensity = XmlHelper.Read(modelConfigPath, node, "CreateIndexPageDensity"); //重建索引页密度
            string automaticPartition     = XmlHelper.Read(modelConfigPath, node, "AutomaticPartition");     //是否自动分区
            string partitionInterval      = XmlHelper.Read(modelConfigPath, node, "PartitionInterval");      //分区间隔记录数

            dbConfig.AutoReCreateIndex      = autoReCreateIndex.ObjToInt() == 1;
            dbConfig.CreateIndexPageDensity = createIndexPageDensity.ObjToInt();
            dbConfig.AutomaticPartition     = automaticPartition.ObjToInt() == 1;
            dbConfig.PartitionInterval      = partitionInterval.ObjToInt();
            return(dbConfig);
        }