/// <summary>
 /// 重新基类在Action执行之前的事情
 /// </summary>
 /// <param name="filterContext">重写方法的参数</param>
 protected override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     base.OnActionExecuting(filterContext);
     //得到用户登录的信息
     CurrentUserInfo = Session["UserInfo"] as BaseUser;
     //判断用户是否为空
     if (CurrentUserInfo == null)
     {
         Response.Redirect("/Login/Index");
     }
 }
 /// <summary>
 /// 添加用户信息
 /// </summary>
 /// <param name="userInfo">实体类(用户)</param>
 /// <returns>用户是否添加成功的标志</returns>
 public ActionResult RegisterUser(BaseUser userInfo)
 {
     //首先保存一些需要录入数据库的信息
     userInfo.Code = Guid.NewGuid().ToString();  //随机产生的一些数据
     userInfo.QuickQuery = userInfo.UserName;   //获取数据的查询码
     userInfo.UserFrom = "添加";               //用户来源
     userInfo.Lang = "汉语";                   //默认系统识别的是汉语
     userInfo.IsStaff = (Int32?)StaffEnum.OK;         //默认是职员
     userInfo.IsVisible = (Int32?)VisibleEnum.OK;     //默认显示信息
     userInfo.Enabled = (Int32?)EnabledEnum.OK;       //默认用户有效
     userInfo.AuditStatus = "已审核";         //默认添加的用户已经经过审核
     userInfo.DeletionStateCode = (Int32?)DeletionStateCodeEnum.Normal;    //默认没有伪删除
     userInfo.CreateOn = DateTime.Parse(DateTime.Now.ToString());     //默认创建用户日期
     BaseUser user = Session["UserInfo"] as BaseUser;
     userInfo.CreateUserID = user.Code;   //获取添加此用户的管理者的ID
     userInfo.CreateBy = user.UserName;//获取添加此用户的管理者的名称
     //执行添加用户的代码
     _userInfoService.AddEntity(userInfo);
     return Content("OK");
 }
        /// <summary>
        /// 根据用户ID信息修改用户的信息
        /// </summary>
        /// <param name="userInfo">用户的实体类</param>
        /// <returns>返回是否修改成功的标志</returns>
        public ActionResult UpdateUserInfo(BaseUser userInfo)
        {
            //首先根据传递过来的参数查询出要修改的信息
            var editUserInfo = _userInfoService.LoadEntities(c => c.ID == userInfo.ID).FirstOrDefault();
            if (editUserInfo == null)
            {
                return Content("错误信息,请您检查");
            }
            //对用户的信息进行修改
            editUserInfo.UserName = userInfo.UserName;
            editUserInfo.RealName = userInfo.RealName;
            editUserInfo.QuickQuery = userInfo.UserName;
            editUserInfo.Email = userInfo.Email;
            editUserInfo.SecurityLevel = userInfo.SecurityLevel;
            editUserInfo.Gender = userInfo.Gender;
            editUserInfo.Birthday = userInfo.Birthday;
            editUserInfo.Mobile = userInfo.Mobile;
            editUserInfo.Telephone = userInfo.Telephone;
            editUserInfo.QICQ = userInfo.QICQ;
            editUserInfo.SortCode = userInfo.SortCode;
            editUserInfo.IsStaff = userInfo.IsStaff;
            editUserInfo.IsVisible = userInfo.IsVisible;
            editUserInfo.Enabled = userInfo.Enabled;
            editUserInfo.AuditStatus = userInfo.AuditStatus;
            editUserInfo.Description = userInfo.Description;
            editUserInfo.ModifirdOn = DateTime.Parse(DateTime.Now.ToString());
            BaseUser user = Session["UserInfo"] as BaseUser;
            editUserInfo.ModifiedUserID = user.Code;  //获取修改信息的ID
            editUserInfo.ModifiedBy = user.UserName;//获取修改此用户的用户名

            if (_userInfoService.UpdateEntity() > 0)
            {
                return Content("OK");
            }
            return Content("Error");
        }
 /// <summary>
 /// 直接删除用户的信息
 /// </summary>
 /// <param name="userInfo">实体类</param>
 /// <param name="ID">主键ID</param>
 /// <param name="UserName">用户名</param>
 /// <param name="Not">标志是否伪删除还有还原</param>
 /// <returns>返回执行成功的标志</returns>
 public ActionResult DeleteUsers(BaseUser userInfo, string ID, string UserName, string Not)
 {
     //首先判断是那个用户登录进入的,如果此用户正在使用这个系统,则不允许用户删除
     userInfo = Session["UserInfo"] as BaseUser;
     var userName = userInfo.UserName; //登录用户的信息
     var uIDsName = UserName.Split(',');  //将传递过来的用户名分割成一个一个的显示
     List<string> listUserInfo = new List<string>();
     foreach (var Name in uIDsName)
     {
         listUserInfo.Add(Name);
     }
     if (listUserInfo.Contains(userName))
     {
         return Content("含有正在使用的用户,禁止删除");
     }
     //下面我们开始删除用户的信息
     //首先判断确认是否从前台传递过来了信息
     if (string.IsNullOrEmpty(ID))
     {
         return Content("请选择需要删除的数据");
     }
     var idStrs = ID.Split(',');  //截取传递过来的字符串
     List<int> deleteIDList = new List<int>();
     foreach (var idStr in idStrs)
     {
         deleteIDList.Add(int.Parse(idStr));
     }
     if (Not == "not")
     {
         //伪删除,也就是根据用户的ID修改信息,首先查询出实体信息
         foreach (var deleteId in deleteIDList)
         {
             var EditUserDeleteIsNot = _userInfoService.LoadEntities(c => c.ID == deleteId).FirstOrDefault();
             EditUserDeleteIsNot.DeletionStateCode = 1;
             _userInfoService.UpdateEntity(userInfo);
         }
         return Content("OK");
     }
     else if (Not == "back")
     {
         foreach (var deleteID in deleteIDList)
         {
             var BackUserDelete = _userInfoService.LoadEntities(c => c.ID == deleteID).FirstOrDefault();
             BackUserDelete.DeletionStateCode = 0;
             _userInfoService.UpdateEntity(userInfo);
         }
         return Content("OK");
     }
     else
     {
         //最后执行批量删除数据的方法
         if (_userInfoService.DeleteUsers(deleteIDList) > 0)
         {
             return Content("OK");
         }
     }
     return Content("删除失败,请您检查");
 }
        /// <summary>
        /// 判断用户输入的信息是否正确,[HttpPost]
        /// </summary>
        /// <param name="UserName">用户名</param>
        /// <param name="userInfo">用户的实体类</param>
        /// <param name="Code">验证码</param>
        /// <returns>返回是否执行成功的标志</returns>
        public ActionResult CheckUserInfo(string UserName, BaseUser userInfo, string Code)
        {
            //如果用户信息存在的话讲用户信息保存到session中
            if (UserName != null)
            {
                //首先根据用户名的信息获取到用户详细的信息
                BaseUser userInfoShow = _userInfoService.LoadEntities(c => c.UserName == UserName).FirstOrDefault();
                Session["UserInfo"] = userInfoShow;
            }

            //首先我们拿到系统的验证码
            string sessionCode = this.TempData["ValidateCode"] == null
                                     ? new Guid().ToString()
                                     : this.TempData["ValidateCode"].ToString();
            //然后我们就将验证码去掉,避免了暴力破解
            this.TempData["ValidateCode"] = new Guid();
            //判断用户输入的验证码是否正确
            if (sessionCode != Code)
            {
                return Content("验证码输入不正确");
            }

            //调用业务逻辑层(BLL)去校验用户是否正确,,,定义变量存取获取到的用户的错误信息
            string UserInfoError = "";
            var loginUserInfo = _userInfoService.CheckUserInfo(userInfo);
            switch (loginUserInfo)
            {
                case LoginResult.PwdError:
                    UserInfoError = "密码输入错误";
                    break;
                case LoginResult.UserNotExist:
                    UserInfoError = "用户名输入错误或者您已经被禁用";
                    break;
                case LoginResult.UserIsNull:
                    UserInfoError = "用户名不能为空";
                    break;
                case LoginResult.PwdIsNUll:
                    UserInfoError = "密码不能为空";
                    break;
                case LoginResult.OK:
                    UserInfoError = "OK";
                    break;
                default:
                    UserInfoError = "未知错误,请您检查您的数据库";
                    break;
            }

            #region ----使用if else来判断信息----
            //if (loginUserInfo == LoginResult.UserIsNull)
            //{
            //    UserInfoError = "用户名不能为空";
            //}
            //else if (loginUserInfo == LoginResult.PwdIsNUll)
            //{
            //    UserInfoError = "密码不能为空";
            //}
            //else if (loginUserInfo == LoginResult.UserNotExist)
            //{
            //    UserInfoError = "用户名输入错误";
            //}
            //else if (loginUserInfo == LoginResult.PwdError)
            //{
            //    UserInfoError = "密码输入错误";
            //}
            //else if (loginUserInfo == LoginResult.OK)
            //{
            //    UserInfoError = "OK";
            //}
            //else
            //{
            //    UserInfoError = "未知错误,请您检查您的数据库";
            //} 
            #endregion

            return Content(UserInfoError);
        }