Beispiel #1
0
        /// <summary>
        /// 按用户名登录(LDAP专用)
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userName">用户名</param>
        /// <param name="statusCode">返回状态码</param>
        /// <param name="statusMessage">返回状消息</param>
        /// <returns>用户实体</returns>
        public BaseUserInfo LogOnByUserName(BaseUserInfo userInfo, string userName, out string statusCode, out string statusMessage)
        {
            var parameter = ServiceParameter.CreateWithLog(userInfo
                                                           , MethodBase.GetCurrentMethod());
            BaseUserInfo returnUserInfo = null;
            string       returnCode     = string.Empty;
            string       returnMessage  = string.Empty;

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                // 先侦测是否在线
                userLogOnManager.CheckOnLine();
                // 然后获取用户密码
                var userManager = new BaseUserManager(userInfo);
                // 是否从角色判断管理员
                userManager.CheckIsAdministrator    = true;
                BaseUserEntity userEntity           = userManager.GetByUserName(userName);
                BaseUserLogOnEntity userLogOnEntity = userLogOnManager.GetObject(userEntity.Id);
                string password = userLogOnEntity.UserPassword;
                // 再进行登录
                returnUserInfo = userManager.LogOnByUserName(userName, password, null, false, userInfo.IPAddress, userInfo.MACAddress, false);
                returnCode     = userManager.StatusCode;
                returnMessage  = userManager.GetStateMessage();
                // 登录时会自动记录进行日志记录,所以不需要进行重复日志记录
                // BaseLogManager.Instance.Add(userInfo, this.serviceName, MethodBase.GetCurrentMethod());
            });
            statusCode    = returnCode;
            statusMessage = returnMessage;
            return(returnUserInfo);
        }
        /// <summary>
        /// 缓存预热,强制重新缓存
        /// </summary>
        /// <returns>影响行数</returns>
        public static int CachePreheating()
        {
            int result = 0;

            // 把所有的数据都缓存起来的代码
            BaseUserLogOnManager manager = new BaseUserLogOnManager();
            // 基础用户的登录信息重新缓存起来
            string commandText = "SELECT * FROM baseuserlogon t WHERE t.userpassword IS NOT NULL AND t.openidtimeout IS NOT NULL AND t.enabled = 1 AND t.openidtimeout - sysdate < 0.5";

            using (IDataReader dataReader = manager.ExecuteReader(commandText))
            {
                using (var redisClient = PooledRedisHelper.GetClient())
                {
                    while (dataReader.Read())
                    {
                        BaseUserLogOnEntity entity = BaseEntity.Create <BaseUserLogOnEntity>(dataReader, false);
# if Redis
                        Utilities.SetUserOpenId(redisClient, entity.Id, entity.OpenId);
#else
                        Utilities.SetUserOpenId(entity.Id, entity.OpenId);
# endif
                        result++;
                        System.Console.WriteLine(result.ToString() + " : User : " + entity.Id);
                    }
                    dataReader.Close();
                }
        public string UpdateVisitDate(BaseUserLogOnEntity userLogOnEntity, bool createOpenId = false)
        {
            string result = string.Empty;

            // 不管要不要生成、先默认不生成,超过8个小时的再生成
            // 2016-03-18 吉日嘎拉 让强制生成新OpneId生肖。
            // createOpenId = false;

            if (userLogOnEntity.OpenIdTimeout.HasValue)
            {
                //TimeSpan timeSpan = DateTime.Now - userLogOnEntity.OpenIdTimeout.Value;
                TimeSpan timeSpan = userLogOnEntity.OpenIdTimeout.Value - DateTime.Now;
                if ((timeSpan.TotalHours) < 0)
                {
                    createOpenId = true;
                }
            }
            else
            {
                createOpenId = true;
            }
            if (createOpenId)
            {
                result = Guid.NewGuid().ToString("N");
            }
            else
            {
                result = userLogOnEntity.OpenId;
            }
            // 抛出一个线程
            UpdateVisitDateTask(userLogOnEntity, createOpenId, result);
            // new Thread(UpdateVisitDateTask).Start(new Tuple<BaseUserLogOnEntity, bool, string>(userLogOnEntity, createOpenId, result));

            return(result);
        }
Beispiel #4
0
        public static BaseUserLogOnEntity GetUserLogOnObject(BaseUserInfo userInfo, string id)
        {
            BaseUserLogOnEntity result = null;

            string              url        = BaseSystemInfo.UserCenterHost + "/UserCenterV42/UserService.ashx";
            WebClient           webClient  = new WebClient();
            NameValueCollection postValues = new NameValueCollection();

            postValues.Add("system", BaseSystemInfo.SoftFullName);
            postValues.Add("systemCode", BaseSystemInfo.SystemCode);
            postValues.Add("securityKey", BaseSystemInfo.SecurityKey);
            // 2015-11-25 吉日嘎拉,这个要看看,有没有必要设置缓存?
            postValues.Add("function", "GetUserLogOnObject");
            postValues.Add("userInfo", userInfo.Serialize());
            postValues.Add("encrypted", true.ToString());
            postValues.Add("id", SecretUtil.Encrypt(id));
            // 向服务器发送POST数据
            byte[] responseArray = webClient.UploadValues(url, postValues);
            string response      = Encoding.UTF8.GetString(responseArray);

            if (!string.IsNullOrEmpty(response))
            {
                result = JsonConvert.DeserializeObject <BaseUserLogOnEntity>(response);
            }

            return(result);
        }
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="entity">实体</param>
 private void SetObject(SQLBuilder sqlBuilder, BaseUserLogOnEntity entity)
 {
     // 2016-03-02 吉日嘎拉 增加按公司可以区别数据的功能。
     if (this.DbHelper.CurrentDbType == CurrentDbType.MySql)
     {
         sqlBuilder.SetValue(BaseUserContactEntity.FieldCompanyId, entity.CompanyId);
     }
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldUserPassword, entity.UserPassword);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldPasswordErrorCount, entity.PasswordErrorCount);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldMultiUserLogin, entity.MultiUserLogin);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldOpenId, entity.OpenId);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldQuestion, entity.Question);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldAnswerQuestion, entity.AnswerQuestion);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldChangePasswordDate, entity.ChangePasswordDate);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldSystemCode, entity.SystemCode);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldEnabled, entity.Enabled);
     //sqlBuilder.SetValue(BaseUserLogOnEntity.FieldCommunicationPassword, entity.CommunicationPassword);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldAllowStartTime, entity.AllowStartTime);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldAllowEndTime, entity.AllowEndTime);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldLockStartDate, entity.LockStartDate);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldLockEndDate, entity.LockEndDate);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldFirstVisit, entity.FirstVisit);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldPreviousVisit, entity.PreviousVisit);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldLastVisit, entity.LastVisit);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldCheckIPAddress, entity.CheckIPAddress);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldShowCount, entity.ShowCount);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldLogOnCount, entity.LogOnCount);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldUserOnLine, entity.UserOnLine);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldIPAddress, entity.IPAddress);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldIPAddressName, entity.IPAddressName);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldMACAddress, entity.MACAddress);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldSalt, entity.Salt);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldPasswordStrength, entity.PasswordStrength);
     sqlBuilder.SetValue(BaseUserLogOnEntity.FieldNeedModifyPassword, entity.NeedModifyPassword);
 }
Beispiel #6
0
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="entity">用户实体</param>
        /// <returns>主键</returns>
        public string Add(BaseUserEntity entity)
        {
            string result = string.Empty;

            this.BeforeAdd(entity);

            if (this.StatusCode == Status.OKAdd.ToString())
            {
                result = this.AddObject(entity);

                // 用户访问表里,插入一条记录
                BaseUserLogOnEntity userLogOnEntity = new BaseUserLogOnEntity();
                userLogOnEntity.Id        = entity.Id;
                userLogOnEntity.CompanyId = entity.CompanyId;
                // 把一些默认值读取到,系统的默认值,这样增加用户时可以把系统的默认值带入
                userLogOnEntity.MultiUserLogin = BaseSystemInfo.CheckOnLine ? 0 : 1;
                userLogOnEntity.CheckIPAddress = BaseSystemInfo.CheckIPAddress ? 1 : 0;
                //此处设置密码强度级别
                userLogOnEntity.PasswordStrength = SecretUtil.GetUserPassWordRate(userLogOnEntity.UserPassword);
                // 若是系统需要用加密的密码,这里需要加密密码。
                if (BaseSystemInfo.ServerEncryptPassword)
                {
                    userLogOnEntity.UserPassword = this.EncryptUserPassword(entity.UserPassword);
                    // 安全通讯密码、交易密码也生成好
                    // userLogOnEntity.UserPassword = this.EncryptUserPassword(entity.CommunicationPassword);
                }

                new BaseUserLogOnManager(this.DbHelper, this.UserInfo).Add(userLogOnEntity);

                this.AfterAdd(entity);
            }

            return(result);
        }
Beispiel #7
0
        /// <summary>
        /// 保存实体修改记录
        /// </summary>
        /// <param name="newEntity">修改前的实体对象</param>
        /// <param name="oldEntity">修改后的实体对象</param>
        /// <param name="tableName">表名称</param>
        public void UpdateEntityLog(BaseUserLogOnEntity newEntity, BaseUserLogOnEntity oldEntity, string tableName = null)
        {
            if (string.IsNullOrEmpty(tableName))
            {
                tableName = BaseUserEntity.TableName + "_LOG";
            }
            BaseModifyRecordManager manager = new BaseModifyRecordManager(this.UserInfo, tableName);

            foreach (var property in typeof(BaseUserLogOnEntity).GetProperties())
            {
                var oldValue         = Convert.ToString(property.GetValue(oldEntity, null));
                var newValue         = Convert.ToString(property.GetValue(newEntity, null));
                var fieldDescription = property.GetCustomAttributes(typeof(FieldDescription), false).FirstOrDefault() as FieldDescription;
                //不记录创建人、修改人、没有修改的记录
                if (!fieldDescription.NeedLog || oldValue == newValue)
                {
                    continue;
                }
                var record = new BaseModifyRecordEntity();
                record.ColumnCode        = property.Name.ToUpper();
                record.ColumnDescription = fieldDescription.Text;
                record.NewValue          = newValue;
                record.OldValue          = oldValue;
                record.TableCode         = this.CurrentTableName.ToUpper();
                record.TableDescription  = FieldExtensions.ToDescription(typeof(BaseUserLogOnEntity), "TableName");
                record.RecordKey         = oldEntity.Id.ToString();
                record.IPAddress         = Utilities.GetIPAddress(true);
                manager.Add(record, true, false);
            }
        }
Beispiel #8
0
        public virtual bool CommunicationPassword(string communicationPassword)
        {
            bool result = false;

            // 密码强度检查
            if (BaseSystemInfo.CheckPasswordStrength)
            {
                if (String.IsNullOrEmpty(communicationPassword))
                {
                    return(result);
                }
            }
            // 加密密码
            if (BaseSystemInfo.ServerEncryptPassword)
            {
                communicationPassword = this.EncryptUserPassword(communicationPassword);
            }
            // 判断输入原始密码是否正确
            BaseUserLogOnEntity entity = new BaseUserLogOnEntity();

            entity.GetSingle(this.GetDataTableById(UserInfo.Id));
            if (entity.CommunicationPassword == null)
            {
                entity.CommunicationPassword = string.Empty;
            }
            if (entity.CommunicationPassword.Equals(communicationPassword))
            {
                result = true;
            }
            return(result);
        }
Beispiel #9
0
        /// <summary>
        /// 锁定用户
        /// </summary>
        /// <param name="taskId">任务标识</param>
        /// <param name="userInfo">用户</param>
        /// <param name="userName">用户名</param>
        /// <returns>是否成功锁定</returns>
        public bool LockUser(string taskId, BaseUserInfo userInfo, string userName)
        {
            bool result = false;

            var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                // BaseLogManager.Instance.Add(result, this.serviceName, AppMessage.LogOnService_LockUser, MethodBase.GetCurrentMethod());
                var userManager = new BaseUserManager(userInfo);
                List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();
                parameters.Add(new KeyValuePair <string, object>(BaseUserEntity.FieldUserName, userName));
                parameters.Add(new KeyValuePair <string, object>(BaseUserEntity.FieldEnabled, 1));
                parameters.Add(new KeyValuePair <string, object>(BaseUserEntity.FieldDeletionStateCode, 0));
                BaseUserEntity userEntity = BaseEntity.Create <BaseUserEntity>(userManager.GetDataTable(parameters));
                // 判断是否为空的
                if (userEntity != null && !string.IsNullOrEmpty(userEntity.Id))
                {
                    // 被锁定15分钟,不允许15分钟内登录,这时间是按服务器的时间来的。
                    var userLogOnManager = new BaseUserLogOnManager();
                    BaseUserLogOnEntity userLogOnEntity = userLogOnManager.GetObject(userEntity.Id);
                    userLogOnEntity.LockStartDate       = DateTime.Now;
                    userLogOnEntity.LockEndDate         = DateTime.Now.AddMinutes(BaseSystemInfo.PasswordErrorLockCycle);
                    result = userLogOnManager.UpdateObject(userLogOnEntity) > 0;
                }
            });

            return(result);
        }
        public static bool CheckIPAddressByCache(string userId, string ipAddress, bool autoAdd = false)
        {
            // 判断用户是否限制ip访问,有的是不限制访问的
            BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager();
            BaseUserLogOnEntity  userLogOnEntity  = userLogOnManager.GetObject(userId);

            return(CheckIPAddressByCache(userLogOnEntity, ipAddress, autoAdd));
        }
        /// <summary>
        /// 离职处理
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>影响行数</returns>
        public int Leave(BaseUserEntity userEntity, BaseUserLogOnEntity userLogOnEntity, string comment)
        {
            int result = 0;

            if (userEntity != null)
            {
                // 更新用户实体
                this.UpdateObject(userEntity);
            }

            // 更新登录信息
            if (userLogOnEntity != null)
            {
                BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager(this.UserInfo);
                userLogOnManager.UpdateObject(userLogOnEntity);
            }

            // 填写评论
            if (!string.IsNullOrWhiteSpace(comment))
            {
                SQLBuilder sqlBuilder = new SQLBuilder(BaseSystemInfo.ServerDbType);
                sqlBuilder.BeginInsert(BaseCommentEntity.TableName);
                sqlBuilder.SetValue(BaseCommentEntity.FieldId, System.Guid.NewGuid().ToString("N"));
                sqlBuilder.SetValue(BaseCommentEntity.FieldCategoryCode, BaseUserEntity.TableName);
                sqlBuilder.SetValue(BaseCommentEntity.FieldObjectId, userEntity.Id);
                sqlBuilder.SetValue(BaseCommentEntity.FieldContents, comment);
                sqlBuilder.SetValue(BaseCommentEntity.FieldWorked, 1);
                sqlBuilder.SetValue(BaseCommentEntity.FieldDepartmentId, userEntity.DepartmentId);
                sqlBuilder.SetValue(BaseCommentEntity.FieldDepartmentName, userEntity.DepartmentName);
                sqlBuilder.SetValue(BaseCommentEntity.FieldCreateUserId, this.UserInfo.Id);
                sqlBuilder.SetValue(BaseCommentEntity.FieldCreateBy, this.UserInfo.RealName);
                sqlBuilder.SetDBNow(BaseCommentEntity.FieldCreateOn);
                sqlBuilder.SetValue(BaseCommentEntity.FieldIPAddress, this.UserInfo.IPAddress);
                sqlBuilder.SetValue(BaseCommentEntity.FieldEnabled, 1);
                sqlBuilder.SetValue(BaseCommentEntity.FieldDeletionStateCode, 0);
                sqlBuilder.EndInsert();
            }

            // 2016-03-17 吉日嘎拉 停止吉信的号码
            if (userEntity != null && !string.IsNullOrEmpty(userEntity.NickName))
            {
                AfterLeaveStopIM(userEntity);
            }

            // 2016-03-17 吉日嘎拉 停止吉信的号码
            if (userEntity != null && !string.IsNullOrEmpty(userEntity.Id))
            {
                BaseUserContactEntity userContactEntity = BaseUserContactManager.GetObjectByCache(userEntity.Id);
                {
                    if (userContactEntity != null && !string.IsNullOrEmpty(userContactEntity.CompanyMail))
                    {
                        ChangeUserMailStatus(userContactEntity.CompanyMail, true);
                    }
                }
            }

            return(result);
        }
        public void UpdateVisitDateTask(object param)
        {
            var tuple = param as Tuple <BaseUserLogOnEntity, bool, string>;
            BaseUserLogOnEntity userLogOnEntity = tuple.Item1;
            bool   createOpenId = tuple.Item2;
            string openId       = tuple.Item3;

            UpdateVisitDateTask(userLogOnEntity, createOpenId, openId);
        }
Beispiel #13
0
        /// <summary>
        /// 更新数字签名密码
        /// </summary>
        /// <param name="oldPassword">原密码</param>
        /// <param name="newPassword">新密码</param>
        /// <param name="statusCode">返回状态码</param>
        /// <returns>影响行数</returns>
        public virtual int ChangeSignedPassword(string oldPassword, string newPassword, out string statusCode)
        {
            #if (DEBUG)
            int milliStart = Environment.TickCount;
            #endif

            int result = 0;
            // 密码强度检查
            if (BaseSystemInfo.CheckPasswordStrength)
            {
                if (String.IsNullOrEmpty(newPassword))
                {
                    statusCode = Status.PasswordCanNotBeNull.ToString();
                    return(result);
                }
            }
            // 加密密码
            if (BaseSystemInfo.ServerEncryptPassword)
            {
                oldPassword = this.EncryptUserPassword(oldPassword);
                newPassword = this.EncryptUserPassword(newPassword);
            }
            // 判断输入原始密码是否正确
            BaseUserLogOnEntity entity = new BaseUserLogOnEntity();
            entity.GetSingle(this.GetDataTableById(UserInfo.Id));
            if (entity.SignedPassword == null)
            {
                entity.SignedPassword = string.Empty;
            }
            // 密码错误
            if (!entity.SignedPassword.Equals(oldPassword))
            {
                statusCode = Status.OldPasswordError.ToString();
                return(result);
            }
            // 更改密码
            result = this.SetProperty(UserInfo.Id, new KeyValuePair <string, object>(BaseUserLogOnEntity.FieldSignedPassword, newPassword));
            if (result == 1)
            {
                statusCode = Status.ChangePasswordOK.ToString();
            }
            else
            {
                // 数据可能被删除
                statusCode = Status.ErrorDeleted.ToString();
            }

            // 写入调试信息
            #if (DEBUG)
            BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);
            BaseUserEntity  userEntity  = userManager.GetObject(this.UserInfo.Id);
            int             milliEnd    = Environment.TickCount;
            Trace.WriteLine(DateTime.Now.ToString(BaseSystemInfo.TimeFormat) + " Ticks: " + TimeSpan.FromMilliseconds(milliEnd - milliStart).ToString() + " " + " BaseUserManager.ChangePassword(" + userEntity.Id + ")");
            #endif

            return(result);
        }
        /// <summary>
        /// 检查用户的登录许可信息
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <returns>用户登录信息</returns>
        public UserLogOnResult CheckUser(string userId)
        {
            // 这个从缓存获取,效率高,一般不会有经常在修改的事情,缓存的时间很短才可以,否则读取脏数据了
            BaseUserEntity userEntity = this.GetObject(userId);

            // 获取登录状态表
            BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager(this.UserInfo, this.UserLogOnTable);
            BaseUserLogOnEntity  userLogOnEntity  = userLogOnManager.GetObject(userId);

            return(CheckUser(userEntity, userLogOnEntity));
        }
Beispiel #15
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity">实体</param>
        public int Update(BaseUserLogOnEntity entity)
        {
            int result = 0;
            // 获取原始实体信息
            var entityOld = this.GetObject(entity.Id);

            // 保存修改记录
            this.UpdateEntityLog(entity, entityOld);
            // 更新数据
            result = this.UpdateObject(entity);
            // 重新缓存

            return(result);
        }
Beispiel #16
0
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="taskId">任务标识</param>
        /// <param name="userInfo">用户</param>
        /// <param name="entity">实体</param>
        /// <returns>影响行数</returns>
        public int Update(string taskId, BaseUserInfo userInfo, BaseUserLogOnEntity entity)
        {
            int result = 0;

            var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                // 调用方法,并且返回运行结果
                BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager();
                result = userLogOnManager.Update(entity);
            });

            return(result);
        }
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="entity">实体</param>
        public int UpdateObject(BaseUserLogOnEntity entity)
        {
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);

            sqlBuilder.BeginUpdate(this.CurrentTableName);
            this.SetObject(sqlBuilder, entity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BaseUserLogOnEntity.FieldModifiedOn);
            sqlBuilder.SetWhere(BaseUserLogOnEntity.FieldId, entity.Id);
            return(sqlBuilder.EndUpdate());
        }
Beispiel #18
0
        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="taskId">任务标识</param>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <returns>实体</returns>
        public BaseUserLogOnEntity GetObject(string taskId, BaseUserInfo userInfo, string id)
        {
            BaseUserLogOnEntity result = null;

            var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var userManager = new BaseUserManager(dbHelper, userInfo);
                // 判断是否已经登录的用户?
                if (userManager.UserIsLogOn(userInfo))
                {
                    BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager();
                    result = userLogOnManager.GetObject(id);
                }
            });

            return(result);
        }
        public int ChangeEnabled(string id)
        {
            BaseUserEntity userEntity = this.GetObject(id);

            if (userEntity.Enabled != 1)
            {
                // 若用户要生效了,那就需要修改锁定的时间了,否则被锁定的用户有效后也无法登录系统了
                BaseUserLogOnManager manager = new BaseUserLogOnManager(this.DbHelper, this.UserInfo);
                BaseUserLogOnEntity  entity  = manager.GetObject(id);
                entity.LockStartDate = null;
                entity.LockEndDate   = null;
                manager.Update(entity);
                userEntity.AuditStatus       = string.Empty;
                userEntity.DeletionStateCode = 0;
                userEntity.Enabled           = 1;
            }
            else
            {
                // 若是有效的用户直接修改为无效的用户
                userEntity.Enabled = 0;
            }

            return(this.UpdateObject(userEntity));
        }
        public int ImportStaff(System.Data.IDataReader dataReader, BaseStaffManager staffManager, BaseUserExpressManager sTAFF_EXPRESSManager, BaseUserManager userManager, BaseUserLogOnManager userLogOnManager)
        {
            int result = 0;

            /*
             * BaseStaffEntity staffEntity = staffManager.GetObject(dataReader["Id"].ToString());
             * if (staffEntity == null)
             * {
             *  staffEntity = new BaseStaffEntity();
             * }
             * staffEntity.Id = int.Parse(dataReader["Id"].ToString());
             * staffEntity.Code = dataReader["EMPLOYEE_CODE"].ToString();
             * staffEntity.RealName = dataReader["EMPLOYEE_NAME"].ToString();
             * staffEntity.Telephone = dataReader["PHONE"].ToString();
             * staffEntity.HomeAddress = dataReader["ADDRESS"].ToString();
             * staffEntity.IDCard = dataReader["ID_CARD"].ToString();
             *
             * // staffEntity.CompanyId = dataReader["OWNER_SITE"].ToString();
             * staffEntity.CompanyName = dataReader["OWNER_SITE"].ToString();
             * // staffEntity.DepartmentId = dataReader["DEPT_NAME"].ToString();
             * staffEntity.DepartmentName = dataReader["DEPT_NAME"].ToString();
             * // staffEntity.WorkgroupId = dataReader["GROUP_NAME"].ToString();
             * staffEntity.WorkgroupName = dataReader["GROUP_NAME"].ToString();
             *
             * System.Console.WriteLine("ImportK8Staff:" + staffEntity.Id + ":" + staffEntity.RealName);
             * // 02:可以把读取到的数据能写入到用户中心的。
             * result = staffManager.UpdateObject(staffEntity);
             * if (result == 0)
             * {
             *  staffManager.AddObject(staffEntity);
             * }
             */

            /*
             * BaseUserExpressEntity sTAFF_EXPRESSEntity = sTAFF_EXPRESSManager.GetObject(dataReader["Id"].ToString());
             * if (sTAFF_EXPRESSEntity == null)
             * {
             *  sTAFF_EXPRESSEntity = new BaseUserExpressEntity();
             * }
             * sTAFF_EXPRESSEntity.Id = int.Parse(dataReader["Id"].ToString());
             * sTAFF_EXPRESSEntity.OWNER_RANGE = dataReader["OWNER_RANGE"].ToString();
             * Decimal tRANSFER_ADD_FEE = 0;
             * if (!string.IsNullOrEmpty(dataReader["TRANSFER_ADD_FEE"].ToString()) && ValidateUtil.IsDouble(dataReader["TRANSFER_ADD_FEE"].ToString()))
             * {
             *  tRANSFER_ADD_FEE = Decimal.Parse(dataReader["TRANSFER_ADD_FEE"].ToString());
             * }
             * sTAFF_EXPRESSEntity.TRANSFER_ADD_FEE = tRANSFER_ADD_FEE;
             * Decimal dISPATCH_ADD_FEE = 0;
             * if (!string.IsNullOrEmpty(dataReader["DISPATCH__ADD_FEE"].ToString()) && ValidateUtil.IsDouble(dataReader["DISPATCH__ADD_FEE"].ToString()))
             * {
             *  dISPATCH_ADD_FEE = Decimal.Parse(dataReader["DISPATCH__ADD_FEE"].ToString());
             * }
             * sTAFF_EXPRESSEntity.DISPATCH_ADD_FEE = dISPATCH_ADD_FEE;
             *
             * System.Console.WriteLine("ImportK8Staffexpress:" + staffEntity.Id + ":" + staffEntity.RealName);
             * // 02:可以把读取到的数据能写入到用户中心的。
             * result = sTAFF_EXPRESSManager.Update(sTAFF_EXPRESSEntity);
             * if (result == 0)
             * {
             *  sTAFF_EXPRESSManager.Add(sTAFF_EXPRESSEntity);
             * }
             */

            BaseUserEntity userEntity = new BaseUserEntity();

            userEntity.Id = dataReader["ID"].ToString();

            userEntity.UserFrom    = "PDA";
            userEntity.Code        = dataReader["EMPLOYEE_CODE"].ToString();
            userEntity.UserName    = dataReader["EMPLOYEE_NAME"].ToString();
            userEntity.RealName    = dataReader["REAL_NAME"].ToString();
            userEntity.Description = dataReader["PHONE"].ToString();
            userEntity.CompanyName = dataReader["OWNER_SITE"].ToString();
            if (string.IsNullOrEmpty(userEntity.CompanyId))
            {
                userEntity.CompanyId = BaseOrganizeManager.GetObjectByNameByCache(userEntity.CompanyName).Id.ToString();
                if (string.IsNullOrEmpty(userEntity.CompanyId))
                {
                    System.Console.WriteLine("无CompanyId " + userEntity.Id + ":" + userEntity.UserName + ":" + userEntity.RealName);
                    return(0);
                }
            }
            userEntity.DepartmentName = dataReader["DEPT_NAME"].ToString();
            userEntity.WorkgroupName  = dataReader["GROUP_NAME"].ToString();
            userEntity.HomeAddress    = dataReader["ADDRESS"].ToString();
            userEntity.IDCard         = dataReader["ID_CARD"].ToString();
            if (!string.IsNullOrEmpty(dataReader["cardnum"].ToString()))
            {
                userEntity.IDCard = dataReader["cardnum"].ToString();
            }
            userEntity.Signature = dataReader["EMPLOYEE_TYPE"].ToString();
            userEntity.SortCode  = int.Parse(dataReader["ID"].ToString());
            if (!userEntity.ModifiedOn.HasValue)
            {
                userEntity.ModifiedOn = DateTime.Parse(dataReader["UPDATETIME"].ToString());
            }
            else
            {
                if (userEntity.ModifiedOn.Value < DateTime.Parse(dataReader["UPDATETIME"].ToString()))
                {
                    userEntity.ModifiedOn = DateTime.Parse(dataReader["UPDATETIME"].ToString());
                }
            }
            // 修改日期需要同步
            // result = userManager.UpdateObject(userEntity);
            if (result == 0)
            {
                userManager.AddObject(userEntity);

                BaseUserContactEntity userContactEntity = new BaseUserContactEntity();
                userContactEntity.Id        = dataReader["ID"].ToString();
                userContactEntity.Telephone = dataReader["PHONE"].ToString();
                new BaseUserContactManager().AddObject(userContactEntity);

                BaseUserLogOnEntity userLogOnEntity = new BaseUserLogOnEntity();
                userLogOnEntity.Id           = dataReader["ID"].ToString();
                userLogOnEntity.UserPassword = dataReader["BAR_PASSWORD"].ToString();
                userLogOnManager.AddObject(userLogOnEntity);
            }

            // 处理角色

            /*
             * string roleName = dataReader["EMPLOYEE_TYPE"].ToString();
             * // 看是否在这个角色里,若没有增加上去。
             * userManager.AddToRole("PDA", userEntity.Id, roleName);
             *
             * // 添加用户密码表
             * BaseUserLogOnEntity userLogOnEntity = userLogOnManager.GetObject(userEntity.Id);
             * if (userLogOnEntity == null)
             * {
             *  userLogOnEntity = new BaseUserLogOnEntity();
             *  userLogOnEntity.Id = userEntity.Id;
             *  userLogOnEntity.UserPassword = dataReader["BAR_PASSWORD"].ToString();
             *  //userLogOnEntity.Salt = dataReader["SALT"].ToString();
             *  //if (!string.IsNullOrEmpty(dataReader["CHANGEPASSWORDDATE"].ToString()))
             *  //{
             *  //    userLogOnEntity.ChangePasswordDate = DateTime.Parse(dataReader["CHANGEPASSWORDDATE"].ToString());
             *  //}
             *  userLogOnManager.AddObject(userLogOnEntity);
             * }
             * else
             * {
             *  userLogOnEntity.Id = userEntity.Id;
             *  userLogOnEntity.UserPassword = dataReader["BAR_PASSWORD"].ToString();
             *  //userLogOnEntity.Salt = dataReader["SALT"].ToString();
             *  //if (!string.IsNullOrEmpty(dataReader["CHANGEPASSWORDDATE"].ToString()))
             *  //{
             *  //    userLogOnEntity.ChangePasswordDate = DateTime.Parse(dataReader["CHANGEPASSWORDDATE"].ToString());
             *  //}
             *  result = userLogOnManager.UpdateObject(userLogOnEntity);
             * }
             */

            return(result);
        }
        /// <summary>
        /// 更新K8员工后,同步到中天baseuser表
        /// 传入dbhelper 方法调用使用事务 避免部分同步成功
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="userCenterDbHelper"></param>
        public void AfterUpdateEmployee(TAB_EMPLOYEEEntity entity, IDbHelper userCenterDbHelper)
        {
            int            count      = 0;
            BaseUserEntity userEntity = new BaseUserEntity();

            userEntity.Id           = entity.ID.ToString();
            userEntity.UserFrom     = "PDA";
            userEntity.UserPassword = entity.BAR_PASSWORD;
            userEntity.Code         = entity.EMPLOYEE_CODE;
            userEntity.UserName     = entity.EMPLOYEE_NAME;
            userEntity.RealName     = entity.EMPLOYEE_NAME;
            userEntity.Description  = entity.PHONE;
            userEntity.CompanyName  = entity.OWNER_SITE;
            // 1、更新baseuser中的所属网点
            if (string.IsNullOrEmpty(userEntity.CompanyId))
            {
                BaseOrganizeEntity organizeEntity = new BaseOrganizeManager(userCenterDbHelper).GetObjectByName(userEntity.CompanyName);
                if (organizeEntity != null)
                {
                    userEntity.CompanyId = organizeEntity.Id.ToString();
                }
            }
            userEntity.DepartmentName = entity.DEPT_NAME;
            userEntity.WorkgroupName  = entity.GROUP_NAME;
            userEntity.HomeAddress    = entity.ADDRESS;
            userEntity.IDCard         = entity.ID_CARD;

            // 2、员工操作类型,按签名处理
            userEntity.Signature  = entity.EMPLOYEE_TYPE;
            userEntity.SortCode   = int.Parse(entity.ID.ToString());
            userEntity.ModifiedOn = entity.UPDATETIME;
            BaseUserManager userManager = new BaseUserManager(userCenterDbHelper, Utilities.UserInfo);

            // if (!userManager.Exists(userEntity.Id))
            count = userManager.UpdateObject(userEntity);
            if (count == 0)
            {
                userManager.AddObject(userEntity);
            }
            // 3、如果有电话,同步到baseusercontact中
            BaseUserContactEntity userContactEntity = new BaseUserContactEntity();

            userContactEntity.Id        = entity.ID.ToString();
            userContactEntity.Telephone = entity.PHONE;
            BaseUserContactManager userContactManager = new DotNet.Business.BaseUserContactManager(userCenterDbHelper, Utilities.UserInfo);

            count = userContactManager.UpdateObject(userContactEntity);
            if (count == 0)
            {
                userContactManager.AddObject(userContactEntity);
            }
            // 4、新增员工时,同步baseuser员工的密码
            BaseUserLogOnEntity userLogOnEntity = new BaseUserLogOnEntity();

            userLogOnEntity.Id           = entity.ID.ToString();
            userLogOnEntity.UserPassword = entity.BAR_PASSWORD;
            BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager(userCenterDbHelper, Utilities.UserInfo);

            count = userLogOnManager.UpdateObject(userLogOnEntity);
            if (count == 0)
            {
                userLogOnManager.AddObject(userLogOnEntity);
            }
            // 5、中转附加费和派件附加费,再确认
            BaseUserExpressManager userExpressManager = new BaseUserExpressManager(userCenterDbHelper, Utilities.UserInfo);
            BaseUserExpressEntity  userExpressEntity  = new BaseUserExpressEntity();

            userExpressEntity.Id = entity.ID;
            userExpressEntity.DISPATCH_ADD_FEE = entity.DISPATCH__ADD_FEE;
            userExpressEntity.TRANSFER_ADD_FEE = entity.TRANSFER_ADD_FEE;
            userExpressEntity.OWNER_RANGE      = entity.OWNER_RANGE;
            count = userExpressManager.UpdateObject(userExpressEntity);
            if (count == 0)
            {
                userExpressManager.Add(userExpressEntity, false);
            }
        }
        /// <summary>
        /// 增加用户账号
        /// 传入dbhelper 方法调用使用事务 避免部分同步成功
        /// </summary>
        /// <param name="userEntity"></param>
        /// <param name="userContact"></param>
        /// <param name="userCenterDbHelper"></param>
        /// <param name="k8DbHelper"></param>
        /// <returns></returns>
        public bool AddUser(BaseUserEntity userEntity, BaseUserContactEntity userContact, IDbHelper userCenterDbHelper, IDbHelper k8DbHelper)
        {
            //1、先往中天里添加账号
            BaseUserManager userManager = new BaseUserManager(userCenterDbHelper);

            userEntity.UserFrom     = "Security";
            userEntity.CreateBy     = Utilities.UserInfo.RealName;
            userEntity.CreateUserId = Utilities.UserInfo.Id;
            bool identity = false;

            if (string.IsNullOrEmpty(userEntity.Id))
            {
                identity = true;
            }
            userEntity.Id = userManager.Add(userEntity, identity, true);
            //添加用户密码表
            BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager(userCenterDbHelper);
            BaseUserLogOnEntity  userLogOnEntity  = userLogOnManager.GetObject(userEntity.Id);

            userLogOnEntity    = new BaseUserLogOnEntity();
            userLogOnEntity.Id = userEntity.Id;
            //是否验证邦定mac地址,默认绑定
            userLogOnEntity.CheckIPAddress = 1;
            //产生盐
            var salt = BaseRandom.GetRandomString(20);

            userLogOnEntity.Salt         = salt;
            userLogOnEntity.UserPassword = userManager.EncryptUserPassword(userEntity.UserPassword, salt);
            //是否检查机器码MAC地址
            userLogOnManager.AddObject(userLogOnEntity);
            //添加用户的联系方式
            BaseUserContactManager userContactManager = new BaseUserContactManager(userCenterDbHelper);

            userContact.MobileValiated = 1;
            userContactManager.AddObject(userContact);

            //2、再往K8里加用户
            TAB_USERManager tabUserManager = new TAB_USERManager(k8DbHelper);
            TAB_USEREntity  tabUserEntity  = new TAB_USEREntity();

            tabUserEntity.OWNER_SITE        = userEntity.CompanyName;
            tabUserEntity.DEPT_NAME         = userEntity.DepartmentName;
            tabUserEntity.USER_NAME         = userEntity.UserName.ToLower();
            tabUserEntity.EMPLOYEE_CODE     = userEntity.Code;
            tabUserEntity.EMPLOYEE_NAME     = userEntity.RealName;
            tabUserEntity.REAL_NAME         = userEntity.RealName;
            tabUserEntity.ONLY_USER_NAME    = userEntity.NickName.ToLower();
            tabUserEntity.ID_CARD           = userEntity.IDCard;
            tabUserEntity.MOBILE            = userContact.Mobile;
            tabUserEntity.CREATE_SITE       = Utilities.UserInfo.CompanyName;
            tabUserEntity.CREATE_USER       = Utilities.UserInfo.RealName;
            tabUserEntity.CREATE_DATE       = DateTime.Now;
            tabUserEntity.BL_LOCK_FLAG      = 1;
            tabUserEntity.BL_TYPE           = 0;
            tabUserEntity.BL_CHECK_COMPUTER = 1;
            tabUserEntity.BL_CHECK_NAME     = 1;
            tabUserEntity.ID        = decimal.Parse(userEntity.Id);
            tabUserEntity.USER_DATE = DateTime.Now.AddYears(3);
            tabUserManager.Add(tabUserEntity, false, true);
            //更新密码和盐
            var sql = string.Format(" UPDATE TAB_USER SET USER_PASSWORD=NULL,USER_PASSWD='{0}',SALT ='{1}',  CHANGEPASSWORDDATE=to_date('{2}','yyyy-mm-dd-hh24:mi:ss')  WHERE ID = '{3}'",
                                    userEntity.UserPassword, salt, DateTime.Now, tabUserEntity.ID);

            tabUserManager.ExecuteNonQuery(sql);

            //3、新增账号的时候默认增加新员工的权限为网点员工
            var roleMenus = GetMenusByUserCode(k8DbHelper, "网点员工", "", "上海");
            TAB_USERPOPEDOMManager userMenuManager = new TAB_USERPOPEDOMManager(k8DbHelper);

            foreach (var roleMenu in roleMenus)
            {
                TAB_USERPOPEDOMEntity userPOPEDOM = new TAB_USERPOPEDOMEntity();
                userPOPEDOM.BL_INSERT  = roleMenu.BL_INSERT;
                userPOPEDOM.BL_UPDATE  = roleMenu.BL_UPDATE;
                userPOPEDOM.BL_DELETE  = roleMenu.BL_DELETE;
                userPOPEDOM.USER_NAME  = tabUserEntity.USER_NAME;
                userPOPEDOM.OWNER_SITE = tabUserEntity.OWNER_SITE;
                userPOPEDOM.MENU_GUID  = roleMenu.MENU_GUID;
                userMenuManager.Add(userPOPEDOM);
            }
            return(true);
        }
Beispiel #23
0
        public BaseUserInfo ConvertToUserInfo(BaseUserInfo userInfo, BaseUserEntity userEntity, BaseUserLogOnEntity userLogOnEntity = null, bool validateUserOnly = false)
        {
            if (userEntity == null)
            {
                return(null);
            }
            userInfo.Id = userEntity.Id;
            userInfo.IsAdministrator = userEntity.IsAdministrator;
            userInfo.Code            = userEntity.Code;
            userInfo.UserName        = userEntity.UserName;
            userInfo.RealName        = userEntity.RealName;
            userInfo.NickName        = userEntity.NickName;
            if (userLogOnEntity != null)
            {
                userInfo.OpenId = userLogOnEntity.OpenId;
            }
            userInfo.CompanyId      = userEntity.CompanyId;
            userInfo.CompanyName    = userEntity.CompanyName;
            userInfo.DepartmentId   = userEntity.DepartmentId;
            userInfo.DepartmentName = userEntity.DepartmentName;

            BaseOrganizeEntity  organizeEntity  = null;
            BaseOrganizeManager organizeManager = null;

            if (!string.IsNullOrEmpty(userInfo.CompanyId))
            {
#if Redis
                try
                {
                    organizeEntity = BaseOrganizeManager.GetObjectByCache(userInfo.CompanyId);
                }
                catch (System.Exception ex)
                {
                    string writeMessage = "BaseOrganizeManager.GetObjectByCache:发生时间:" + DateTime.Now
                                          + System.Environment.NewLine + "CompanyId 无法缓存获取:" + userInfo.CompanyId
                                          + System.Environment.NewLine + "Message:" + ex.Message
                                          + System.Environment.NewLine + "Source:" + ex.Source
                                          + System.Environment.NewLine + "StackTrace:" + ex.StackTrace
                                          + System.Environment.NewLine + "TargetSite:" + ex.TargetSite
                                          + System.Environment.NewLine;

                    FileUtil.WriteMessage(writeMessage, BaseSystemInfo.StartupPath + "//Exception//Exception" + DateTime.Now.ToString(BaseSystemInfo.DateFormat) + ".txt");
                }
#endif

                if (organizeEntity == null)
                {
                    organizeManager = new BaseOrganizeManager();
                    organizeEntity  = organizeManager.GetObject(userInfo.CompanyId);
                    // 2015-12-06 吉日嘎拉 进行记录日志功能改进
                    if (organizeEntity == null)
                    {
                        string writeMessage = "BaseOrganizeManager.GetObject:发生时间:" + DateTime.Now
                                              + System.Environment.NewLine + "CompanyId 无法缓存获取:" + userInfo.CompanyId
                                              + System.Environment.NewLine + "BaseUserInfo:" + userInfo.Serialize();

                        FileUtil.WriteMessage(writeMessage, BaseSystemInfo.StartupPath + "Log//Log" + DateTime.Now.ToString(BaseSystemInfo.DateFormat) + ".txt");
                    }
                }
                if (organizeEntity != null)
                {
                    userInfo.CompanyCode = organizeEntity.Code;
                }
            }

            /*
             * 部门数据需要从部门表里读取
             *
             * if (!validateUserOnly && !string.IsNullOrEmpty(userInfo.DepartmentId))
             * {
             *  organizeEntity = BaseOrganizeManager.GetObjectByCache(userInfo.DepartmentId);
             * }
             * else
             * {
             *  if (organizeManager == null)
             *  {
             *      organizeManager = new Business.BaseOrganizeManager();
             *  }
             *  organizeEntity = organizeManager.GetObject(userInfo.DepartmentId);
             * }
             * if (organizeEntity != null)
             * {
             *  userInfo.DepartmentCode = organizeEntity.Code;
             * }
             */

            return(userInfo);
        }
Beispiel #24
0
        public BaseUserInfo ConvertToUserInfo(BaseUserEntity userEntity, BaseUserLogOnEntity userLogOnEntity = null, bool validateUserOnly = false)
        {
            BaseUserInfo userInfo = new BaseUserInfo();

            return(ConvertToUserInfo(userInfo, userEntity, userLogOnEntity, validateUserOnly));
        }
        /// <summary>
        /// 更新访问当前访问状态
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <param name="createOpenId">是否每次都产生新的OpenId</param>
        /// <returns>OpenId</returns>
        public string UpdateVisitDate(string userId, bool createOpenId = false)
        {
            BaseUserLogOnEntity userLogOnEntity = this.GetObject(userId);

            return(UpdateVisitDate(userLogOnEntity, createOpenId));
        }
        // public async Task
        public void UpdateVisitDateTask(BaseUserLogOnEntity userLogOnEntity, bool createOpenId, string openId)
        {
            int errorMark = 0;

            string   sqlQuery      = string.Empty;
            DateTime?openIdTimeout = DateTime.Now.AddHours(16);

            try
            {
                using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType, BaseSystemInfo.UserCenterDbConnection))
                {
                    // 是否更新访问日期信息
                    List <IDbDataParameter> dbParameters = null;
                    // 若有一周没登录了,需要重新进行手机验证
                    bool mobileNeedValiated = false;
                    if (userLogOnEntity.PreviousVisit.HasValue || userLogOnEntity.FirstVisit.HasValue)
                    {
                        TimeSpan ts = new System.TimeSpan();
                        if (userLogOnEntity.LastVisit.HasValue)
                        {
                            ts = DateTime.Now.Subtract((DateTime)userLogOnEntity.LastVisit);
                            mobileNeedValiated = (ts.TotalDays > 7);
                        }
                        else if (userLogOnEntity.FirstVisit.HasValue)
                        {
                            ts = DateTime.Now.Subtract((DateTime)userLogOnEntity.FirstVisit);
                            mobileNeedValiated = (ts.TotalDays > 7);
                        }
                        if (mobileNeedValiated)
                        {
                            sqlQuery = " UPDATE " + BaseUserContactEntity.TableName
                                       + "    SET " + BaseUserContactEntity.FieldMobileValiated + " = 0 "
                                       + "  WHERE " + BaseUserContactEntity.FieldId + " = " + DbHelper.GetParameter(BaseUserContactEntity.FieldId)
                                       + "        AND " + BaseUserContactEntity.FieldMobileValiated + " = " + DbHelper.GetParameter(BaseUserContactEntity.FieldMobileValiated);

                            dbParameters = new List <IDbDataParameter>();
                            dbParameters.Add(DbHelper.MakeParameter(BaseUserContactEntity.FieldId, userLogOnEntity.Id));
                            dbParameters.Add(DbHelper.MakeParameter(BaseUserContactEntity.FieldMobileValiated, 1));

                            errorMark = 10;
                            dbHelper.ExecuteNonQuery(sqlQuery, dbParameters.ToArray());
                        }
                    }

                    if (BaseSystemInfo.UpdateVisit)
                    {
                        // 第一次登录时间
                        if (userLogOnEntity.FirstVisit == null)
                        {
                            sqlQuery = " UPDATE " + this.CurrentTableName
                                       + " SET " + BaseUserLogOnEntity.FieldPasswordErrorCount + " = 0 "
                                       + ", " + BaseUserLogOnEntity.FieldUserOnLine + " = 1 "
                                       + ", " + BaseUserLogOnEntity.FieldFirstVisit + " = " + dbHelper.GetDbNow()
                                       + ", " + BaseUserLogOnEntity.FieldLogOnCount + " = 1 "
                                       + ", " + BaseUserLogOnEntity.FieldSystemCode + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldSystemCode)
                                       + ", " + BaseUserLogOnEntity.FieldIPAddress + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldIPAddress)
                                       + ", " + BaseUserLogOnEntity.FieldIPAddressName + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldIPAddressName)
                                       + ", " + BaseUserLogOnEntity.FieldMACAddress + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldMACAddress)
                                       + ", " + BaseUserLogOnEntity.FieldComputerName + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldComputerName);

                            dbParameters = new List <IDbDataParameter>();
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldSystemCode, userLogOnEntity.SystemCode));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldIPAddress, userLogOnEntity.IPAddress));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldIPAddressName, userLogOnEntity.IPAddressName));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldMACAddress, userLogOnEntity.MACAddress));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldComputerName, userLogOnEntity.ComputerName));

                            if (createOpenId)
                            {
                                sqlQuery += ", " + BaseUserLogOnEntity.FieldOpenId + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldOpenId);
                                sqlQuery += ", " + BaseUserLogOnEntity.FieldOpenIdTimeout + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldOpenIdTimeout);
                                dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldOpenId, openId));
                                dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldOpenIdTimeout, openIdTimeout));
                            }

                            sqlQuery += "  WHERE " + BaseUserLogOnEntity.FieldId + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldId)
                                        + "      AND " + BaseUserLogOnEntity.FieldFirstVisit + " IS NULL";
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldId, userLogOnEntity.Id));

                            errorMark = 20;
                            dbHelper.ExecuteNonQuery(sqlQuery, dbParameters.ToArray());
                        }
                        else
                        {
                            // 最后一次登录时间
                            sqlQuery = " UPDATE " + this.CurrentTableName
                                       + " SET " + BaseUserLogOnEntity.FieldPasswordErrorCount + " = 0 "
                                       + ", " + BaseUserLogOnEntity.FieldPreviousVisit + " = " + BaseUserLogOnEntity.FieldLastVisit
                                       + ", " + BaseUserLogOnEntity.FieldUserOnLine + " = 1 "
                                       + ", " + BaseUserLogOnEntity.FieldLastVisit + " = " + dbHelper.GetDbNow()
                                       + ", " + BaseUserLogOnEntity.FieldLogOnCount + " = " + BaseUserLogOnEntity.FieldLogOnCount + " + 1 "
                                       + ", " + BaseUserLogOnEntity.FieldSystemCode + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldSystemCode)
                                       + ", " + BaseUserLogOnEntity.FieldIPAddress + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldIPAddress)
                                       + ", " + BaseUserLogOnEntity.FieldIPAddressName + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldIPAddressName)
                                       + ", " + BaseUserLogOnEntity.FieldMACAddress + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldMACAddress)
                                       + ", " + BaseUserLogOnEntity.FieldComputerName + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldComputerName);

                            dbParameters = new List <IDbDataParameter>();
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldSystemCode, userLogOnEntity.SystemCode));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldIPAddress, userLogOnEntity.IPAddress));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldIPAddressName, userLogOnEntity.IPAddressName));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldMACAddress, userLogOnEntity.MACAddress));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldComputerName, userLogOnEntity.ComputerName));

                            if (createOpenId)
                            {
                                sqlQuery += ", " + BaseUserLogOnEntity.FieldOpenId + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldOpenId);
                                sqlQuery += ", " + BaseUserLogOnEntity.FieldOpenIdTimeout + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldOpenIdTimeout);
                                dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldOpenId, openId));
                                dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldOpenIdTimeout, openIdTimeout));
                            }

                            sqlQuery += "  WHERE " + BaseUserLogOnEntity.FieldId + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldId);
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldId, userLogOnEntity.Id));

                            errorMark = 30;
                            dbHelper.ExecuteNonQuery(sqlQuery, dbParameters.ToArray());
                        }
                    }
                    else
                    {
                        // 2015-12-08 吉日嘎拉,更新时参数化,提高效率 实现单点登录功能,每次都更换Guid
                        if (createOpenId)
                        {
                            sqlQuery = " UPDATE  " + this.CurrentTableName
                                       + "    SET  " + BaseUserLogOnEntity.FieldPasswordErrorCount + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldPasswordErrorCount)
                                       + "       , " + BaseUserLogOnEntity.FieldSystemCode + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldSystemCode)
                                       + "       , " + BaseUserLogOnEntity.FieldOpenId + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldOpenId)
                                       + "       , " + BaseUserLogOnEntity.FieldOpenIdTimeout + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldOpenIdTimeout)
                                       + " WHERE " + BaseUserLogOnEntity.FieldId + " = " + dbHelper.GetParameter(BaseUserLogOnEntity.FieldId);
                            // sqlQuery += " AND " + BaseUserEntity.FieldOpenId + " IS NULL ";

                            dbParameters = new List <IDbDataParameter>();
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldPasswordErrorCount, 0));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldSystemCode, userLogOnEntity.SystemCode));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldOpenId, openId));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldOpenIdTimeout, openIdTimeout));
                            dbParameters.Add(dbHelper.MakeParameter(BaseUserLogOnEntity.FieldId, userLogOnEntity.Id));

                            errorMark = 40;
                            dbHelper.ExecuteNonQuery(sqlQuery, dbParameters.ToArray());
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                string writeMessage = "BaseUserLogOnManager.UpdateVisitDateTask:发生时间:" + DateTime.Now
                                      + System.Environment.NewLine + "errorMark = " + errorMark.ToString()
                                      + System.Environment.NewLine + "UserInfo:" + this.UserInfo.Serialize()
                                      + System.Environment.NewLine + "Message:" + ex.Message
                                      + System.Environment.NewLine + "Source:" + ex.Source
                                      + System.Environment.NewLine + "StackTrace:" + ex.StackTrace
                                      + System.Environment.NewLine + "TargetSite:" + ex.TargetSite
                                      + System.Environment.NewLine;

                FileUtil.WriteMessage(writeMessage, BaseSystemInfo.StartupPath + "//Exception//Exception" + DateTime.Now.ToString(BaseSystemInfo.DateFormat) + ".txt");
            }
        }
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="entity">实体</param>
        public string AddObject(BaseUserLogOnEntity entity)
        {
            string result = string.Empty;

            if (string.IsNullOrEmpty(entity.Id))
            {
                BaseSequenceManager manager = new BaseSequenceManager(DbHelper, this.Identity);
                result    = manager.Increment(this.CurrentTableName);
                entity.Id = result;
            }
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper, this.Identity, this.ReturnId);

            sqlBuilder.BeginInsert(this.CurrentTableName, BaseUserLogOnEntity.FieldId);
            if (!this.Identity)
            {
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldId, entity.Id);
            }
            else
            {
                if (!this.ReturnId && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
                {
                    if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
                    {
                        sqlBuilder.SetFormula(BaseUserLogOnEntity.FieldId, "SEQ_" + this.CurrentTableName.ToUpper() + ".NEXTVAL ");
                    }
                    if (DbHelper.CurrentDbType == CurrentDbType.DB2)
                    {
                        sqlBuilder.SetFormula(BaseUserLogOnEntity.FieldId, "NEXT VALUE FOR SEQ_" + this.CurrentTableName.ToUpper());
                    }
                }
                else
                {
                    if (this.Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
                    {
                        if (entity.Id == null)
                        {
                            if (string.IsNullOrEmpty(result))
                            {
                                BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
                                result = sequenceManager.Increment(this.CurrentTableName);
                            }
                            entity.Id = result;
                        }
                        sqlBuilder.SetValue(BaseUserLogOnEntity.FieldId, entity.Id);
                    }
                }
            }
            this.SetObject(sqlBuilder, entity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldCreateUserId, UserInfo.Id);
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldCreateBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BaseUserLogOnEntity.FieldCreateOn);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(BaseUserLogOnEntity.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BaseUserLogOnEntity.FieldModifiedOn);
            if (DbHelper.CurrentDbType == CurrentDbType.SqlServer && this.Identity)
            {
                result = sqlBuilder.EndInsert().ToString();
            }
            else
            {
                sqlBuilder.EndInsert();
                result = entity.Id;
            }
            return(result);
        }
        /// <summary>
        /// 检查用户的 IPAddress 绑定是否正常
        ///
        /// 防止重复多读数据?
        /// 是否判断正确?
        /// 可以按每个用户缓存?
        /// 若没有就自动化增加?
        /// IP 限制完善?
        /// IP 限制缓存预热?
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <param name="IPAddress">ip地址</param>
        /// <param name="autoAdd">没有在列表的IP是否自动增加</param>
        /// <returns>正确</returns>
        public static bool CheckIPAddressByCache(BaseUserLogOnEntity userLogOnEntity, string ipAddress, bool autoAdd = false)
        {
            // 默认是不成功的,防止出错误
            bool result = false;

            if (userLogOnEntity == null)
            {
                return(result);
            }

            string userId = userLogOnEntity.Id;

            // 检查参数的有效性
            if (string.IsNullOrEmpty(userId))
            {
                return(result);
            }
            if (string.IsNullOrEmpty(ipAddress))
            {
                return(result);
            }

            // 若用户是不限制登录的、那就可以返回真的
            if (!userLogOnEntity.CheckIPAddress.HasValue || userLogOnEntity.CheckIPAddress.Value == 0)
            {
                return(true);
            }

            // 提高效率,全小写转换
            ipAddress = ipAddress.ToLower();

            // 这里是处理,多个IP的问题
            string[] ip = ipAddress.Split(';');

            using (var redisClient = PooledRedisHelper.GetClient())
            {
                string key = "IP:" + userId;

                // 若是缓存里过期了?
                if (!redisClient.ContainsKey(key))
                {
                    // 重新缓存用户的限制数据
                    if (CachePreheatingIPAddressByUser(redisClient, userId) == 0)
                    {
                        // 若没有设置IP限制,需要把限制都自动加上来。
                        // 没有加到数据的,就是表明是新增加的用户、第一次登录的用户
                        BaseParameterManager parameterManager = new BaseParameterManager();
                        for (int i = 0; i < ip.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(ip[i]))
                            {
                                // 把收集过来的IP地址需要保存起来
                                BaseParameterEntity parameterEntity = new BaseParameterEntity();
                                parameterEntity.Id            = Guid.NewGuid().ToString("N");
                                parameterEntity.CategoryCode  = "IPAddress";
                                parameterEntity.ParameterCode = "Single";
                                parameterEntity.ParameterId   = userId;
                                // 这里之际保存小写、就效率也高,省事了
                                parameterEntity.ParameterContent = ip[i].Trim();
                                parameterManager.Add(parameterEntity);
                            }
                        }
                        result = true;
                    }
                }

                // 若还是没有?表示是新增的
                if (redisClient.ContainsKey(key))
                {
                    // 若已经存在,就需要进行缓存里的判断?
                    // 这里要提高效率,不能反复打开缓存
                    for (int i = 0; i < ip.Length; i++)
                    {
                        // 这里对数据还不放心,进行优化处理
                        if (!string.IsNullOrEmpty(ip[i]))
                        {
                            ip[i]  = ip[i].Trim();
                            result = redisClient.SetContainsItem(key, ip[i]);
                            if (result)
                            {
                                // 这里要提高判断的效率
                                break;
                            }
                        }
                    }
                    // 若没有验证成功、把当前的 IPAddress 保存起来, 方便后台管理的人加上去。
                    if (!result)
                    {
                        List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();
                        parameters.Add(new KeyValuePair <string, object>(BaseUserLogOnEntity.FieldIPAddress, ipAddress));
                        BaseUserLogOnManager userLogOnManager = new BaseUserLogOnManager();
                        userLogOnManager.SetProperty(userId, parameters);
                    }
                }
            }

            return(result);
        }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="entity">实体</param>
 /// <returns>主键</returns>
 public string Add(BaseUserLogOnEntity entity)
 {
     return(this.AddObject(entity));
 }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="entity">实体</param>
 /// <param name="identity">自增量方式</param>
 /// <param name="returnId">返回主鍵</param>
 /// <returns>主键</returns>
 public string Add(BaseUserLogOnEntity entity, bool identity, bool returnId)
 {
     this.Identity = identity;
     this.ReturnId = returnId;
     return(this.AddObject(entity));
 }