Example #1
0
        /// <summary>
        /// 企业设置
        /// </summary>
        /// <param name="requestObject"></param>
        /// <param name="UserID"></param>
        /// <returns></returns>
        public async Task <ResponseObject <TSMCompanyAllEditModel, bool> > ModifyCurentCompany(RequestObject <TSMCompanyAllEditModel> requestObject, int UserID)
        {
            //执行结果
            var result = false;

            //没有修改信息,返回错误信息
            if (requestObject.PostDataList == null && requestObject.PostData == null)
            {
                return(ResponseUtil <TSMCompanyAllEditModel, bool> .FailResult(requestObject, result, "PostData不能都为null"));
            }

            var curentDb = _db.Instance;

            int        id         = requestObject.PostData.ID;
            SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(UserID, curentDb);


            if (sMUserInfo.CompanyId != id)
            {
                return(ResponseUtil <TSMCompanyAllEditModel, bool> .FailResult(requestObject, result, "只能修改自己公司"));
            }

            var companyDb = curentDb.Queryable <TSMCompanyDbModel>().Where(p => p.ID == id).First();

            if (companyDb.AdminId != UserID)
            {
                return(ResponseUtil <TSMCompanyAllEditModel, bool> .FailResult(requestObject, result, "您不是公司管理员"));
            }

            try
            {
                curentDb.BeginTran();

                var curentData = requestObject.PostData;
                var mainDb     = ExpressionGenericMapper <TSMCompanyAllEditModel, TSMCompanyDbModel> .Trans(curentData);


                await curentDb.Updateable <TSMCompanyDbModel>(mainDb).UpdateColumns(p => new { p.CompanyName, p.LegalPerson, p.ContactNumber, p.EnterpriseType }).ExecuteCommandAsync();

                var cDb = ExpressionGenericMapper <TSMCompanyAllEditModel, TTenantsModel> .Trans(curentData);

                cDb.ID = curentData.CId;

                await curentDb.Updateable <TTenantsModel>(cDb).UpdateColumns(p => new { p.TenantShortName, p.TenantEngName, p.TenantLogo, p.BusinessLogo }).ExecuteCommandAsync();

                curentDb.CommitTran();

                return(ResponseUtil <TSMCompanyAllEditModel, bool> .SuccessResult(requestObject, true));
            }
            catch (Exception ex)
            {
                curentDb.RollbackTran();
                return(ResponseUtil <TSMCompanyAllEditModel, bool> .FailResult(requestObject, result, ex.ToString()));
            }
        }
Example #2
0
        /// <summary>
        /// 根据用户ID获取账户信息
        /// </summary>
        /// <param name="iUserId"></param>
        /// <returns></returns>
        public ResponseObject <int, UserInfo> GetInfo(int iUserId)
        {
            try
            {
                UserInfo   userModel  = new UserInfo();
                SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(iUserId, _db.Instance);
                if (sMUserInfo == null)
                {
                    return(ResponseUtil <int, UserInfo> .FailResult(new RequestObject <int>(), null, "未找到该用户信息"));
                }

                userModel.Roles = sMUserInfo.RoleName;
                userModel.Name  = sMUserInfo.AccountName;

                RequestObject <TRolePermissionsModel> roleQuery = new RequestObject <TRolePermissionsModel>()
                {
                    IsPaging = false, QueryConditions = new List <QueryCondition>()
                };
                roleQuery.QueryConditions.Add(new QueryCondition()
                {
                    Column = "roleID", Content = userModel.RoleId.ToString(), Condition = ConditionEnum.Equal
                });
                userModel.Permissions = LoadMenuByRoles(sMUserInfo.UserID, sMUserInfo.CompanyId.Value);

                var company = _db.Instance.Queryable <TSMCompanyDbModel, TTenantsModel>(

                    (t1, t2) => new object[]
                {
                    JoinType.Left, t1.CompanyInfoId == t2.ID
                }).Where((t1, t2) => t1.ID == sMUserInfo.CompanyId).Select((t1, t2) => new { t1.CompanyName, t2.TenantLogo, t2.TenantEngName }).First();

                if (company != null)
                {
                    userModel.CompanyID     = sMUserInfo.CompanyId.Value;
                    userModel.TenantLogo    = company.TenantLogo;
                    userModel.CompanyName   = company.CompanyName;
                    userModel.TenantEngName = company.TenantEngName;
                }

                var userInfo = _db.Instance.Queryable <TSMUserAccountDbModel, TSMUserInfoDbModel>((t, t1) => new object[] {
                    JoinType.Inner, t.UserInfoId == t1.ID
                }).Where((t, t1) => t.ID == iUserId).Select((t, t1) => new { main = t, deatail = t1 }).First();

                userModel.Avatar = userInfo.deatail.HeadPicPath;



                return(ResponseUtil <int, UserInfo> .SuccessResult(new RequestObject <int>(), userModel));
            }
            catch (Exception ex)
            {
                return(ResponseUtil <int, UserInfo> .FailResult(new RequestObject <int>(), null, $"获取权限发生异常{Environment.NewLine} {ex.Message}"));
            }
        }
Example #3
0
        /// <summary>
        /// 修改T_BM_WarehouseFile数据
        /// </summary>
        /// <param name="requestObject">返回响应结果对象,包括响应代码,修改操作结果</param>
        /// <param name="userID"></param>
        /// <returns></returns>
        public async Task <ResponseObject <TBMWarehouseFileEditModel, bool> > PutAsync(RequestObject <TBMWarehouseFileEditModel> requestObject, int userID)
        {
            try
            {
                var curentDB = _db.Instance;

                SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(userID, curentDB);
                //执行结果
                var result = false;
                //没有修改信息,返回错误信息
                if (requestObject.PostDataList == null && requestObject.PostData == null)
                {
                    return(ResponseUtil <TBMWarehouseFileEditModel, bool> .FailResult(requestObject, false, "PostData不能都为null"));
                }
                //批量更新优先级高于单记录更新
                if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0)
                {
                    //批量更新
                    var editList = _mapper.Map <List <TBMWarehouseFileEditModel>, List <TBMWarehouseFileDbModel> >(requestObject.PostDataList);
                    result = await _db.Instance.Updateable <TBMWarehouseFileDbModel>(editList).IgnoreColumns(p => new { p.DeleteFlag, p.Code, p.CompanyId }).ExecuteCommandAsync() > 0;
                }
                else
                {
                    //单记录更新
                    var editModel = _mapper.Map <TBMWarehouseFileDbModel>(requestObject.PostData);

                    var oldModel = _db.Instance.Queryable <TBMWarehouseFileDbModel>().Where(p => SqlFunc.IsNull(p.DeleteFlag, false) == false &&
                                                                                            p.WarehouseName == editModel.WarehouseName &&
                                                                                            p.CompanyId == sMUserInfo.CompanyId.Value &&
                                                                                            p.ID != editModel.ID
                                                                                            ).First();

                    if (oldModel != null)
                    {
                        return(ResponseUtil <TBMWarehouseFileEditModel, bool> .FailResult(requestObject, false, editModel.WarehouseName + " 已经存在"));
                    }

                    result = await _db.Instance.Updateable(editModel).IgnoreColumns(p => new { p.DeleteFlag, p.Code, p.CompanyId }).ExecuteCommandAsync() > 0;
                }

                //返回执行结果
                if (result)
                {
                    return(ResponseUtil <TBMWarehouseFileEditModel, bool> .SuccessResult(requestObject, true));
                }
                return(ResponseUtil <TBMWarehouseFileEditModel, bool> .FailResult(requestObject, false, "修改数据失败!"));
            }
            catch (Exception ex)
            {
                //返回异常结果
                return(ResponseUtil <TBMWarehouseFileEditModel, bool> .FailResult(requestObject, false, ex.Message));
            }
        }
Example #4
0
        /// <summary>
        /// 获取企业信息
        /// </summary>
        /// <param name="UserID"></param>
        /// <returns></returns>
        public async Task <ResponseObject <int, TSMCompanyQueryAllModel> > PersonalGet(int UserID)
        {
            RequestObject <int>     request = new RequestObject <int>();
            TSMCompanyQueryAllModel result  = null;

            try
            {
                SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(UserID, _db.Instance);

                result = await _db.Instance.Queryable <TSMCompanyDbModel, TTenantsModel>(

                    (t1, t2) => new object[]
                {
                    JoinType.Left, t1.CompanyInfoId == t2.ID
                }).Where((t1, t2) => t1.ID == sMUserInfo.CompanyId).Select((t1, t2) =>
                                                                           new TSMCompanyQueryAllModel
                {
                    ID                = t1.ID,
                    CompanyName       = t1.CompanyName,
                    LegalPerson       = t1.LegalPerson,
                    ContactNumber     = t1.ContactNumber,
                    ContactEmail      = t1.ContactEmail,
                    CompanyInfoId     = t1.CompanyInfoId,
                    CId               = t2.ID,
                    TenantShortName   = t2.TenantShortName,
                    TenantEngName     = t2.TenantEngName,
                    IsTrial           = t2.IsTrial,
                    TrialDate         = t2.TrialDate,
                    TemplateId        = t2.TemplateId,
                    ValidityPeriod    = t2.ValidityPeriod,
                    Area              = t2.Area,
                    Industry          = t2.Industry,
                    TenantScale       = t2.TenantScale,
                    RegisteredCapital = t2.RegisteredCapital,
                    MainBusiness      = t2.MainBusiness,
                    FixedTele         = t2.FixedTele,
                    Address           = t2.Address,
                    TenantLogo        = t2.TenantLogo,
                    BusinessLogo      = t2.BusinessLogo,
                    IsAdmin           = t1.AdminId == UserID ? true : false
                }).FirstAsync();

                return(ResponseUtil <int, TSMCompanyQueryAllModel> .SuccessResult(request, result));
            }
            catch (Exception ex)
            {
                return(ResponseUtil <int, TSMCompanyQueryAllModel> .FailResult(request, result, ex.Message));
            }
        }
Example #5
0
        public static SMUserInfo GetCurentUserID(IHeaderDictionary heads, SqlSugarClient Instance)
        {
            int UserID = TokenManager.GetUserIDbyToken(heads);

            SMUserInfo result = new SMUserInfo();

            string Key = string.Format(CacheKeyString.UserAccount, UserID);

            //var redis = CacheFactory.Instance(CacheType.Redis);
            //result = redis.GetValueByKey<SMUserInfo>(Key);

            if (result == null)
            {
                var dbModel = Instance.Queryable <TSMUserAccountDbModel>()
                              .Where(p => p.ID == UserID).First();


                var dbUserInfo = Instance.Queryable <TSMUserInfoDbModel>()
                                 .Where(p => p.ID == dbModel.UserInfoId)
                                 .First();

                var rolesDbModel = Instance.Queryable <TSMRoleUserRelationDbModel, TSMRolesDbModel>(
                    (t1, t2) => new object[]
                {
                    JoinType.Left, t1.RoleId == t2.Id
                }).Where((t1, t2) => t1.UserId == dbModel.ID).Select((t1, t2) => t2).First();

                SMUserInfo sMUserInfo = new SMUserInfo();
                sMUserInfo.UserID       = dbModel.ID;
                sMUserInfo.CompanyId    = dbModel.CompanyId;
                sMUserInfo.EmailAccount = dbModel.EmailAccount;
                sMUserInfo.TelAccount   = dbModel.TelAccount;
                sMUserInfo.AccountName  = dbModel.AccountName;
                sMUserInfo.RealName     = dbUserInfo?.RealName;
                sMUserInfo.RoleName     = rolesDbModel?.RoleName;

                //redis.AddKey<SMUserInfo>(Key, sMUserInfo, 60 * 60 * 24);

                result = sMUserInfo;
            }

            return(result);
        }
        public async Task <ResponseObject <TSMUserLoginResult> > LoginPost(RequestPost <TSMUserAccountAddModel> requestObject)
        {
            ResponseObject <TSMUserLoginResult> result;

            result = await _service.LoginAsync(requestObject);



            var task = Task.Factory.StartNew(() =>
            {
                try
                {
                    bool isSucess = string.IsNullOrEmpty(result.Data.Token) ? false : true;

                    if (isSucess == true)
                    {
                        string token  = result.Data.Token.Split('.')[1];
                        var payLoad   = JsonConvert.DeserializeObject <Dictionary <string, object> >(Base64UrlEncoder.Decode(token));
                        int userID    = Convert.ToInt32(payLoad["UserID"]);
                        string ID     = payLoad["ID"].ToString();
                        int CompanyID = Convert.ToInt32(payLoad["CompanyID"]);
                        if (CompanyID == 0)   //没有加入公司的员工不保存登陆日志
                        {
                            return;
                        }


                        //写 登陆状态到redis
                        var redis             = CacheFactory.Instance(CacheType.Redis);
                        UserStatus userStatus = new UserStatus()
                        {
                            ID = ID, LastRefreshTime = DateTime.Now
                        };
                        string redisKey = string.Format(CacheKeyString.UserLoginAllKey, userID, CompanyID, ID);
                        redis.AddOrUpdateKey <UserStatus>(redisKey, userStatus, 90);


                        //写登陆日志到 MangoDB
                        SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(userID, _db.Instance);
                        string ipAddress      = Request.HttpContext.Connection.RemoteIpAddress.ToString();

                        LoginLog loginLog    = new LoginLog();
                        loginLog.LoginID     = ID;
                        loginLog.Account     = sMUserInfo.AccountName;
                        loginLog.CompanyID   = sMUserInfo.CompanyId.Value;
                        loginLog.Description = isSucess ? LoginTypeEum.LoginSuccess : LoginTypeEum.LoginFail;
                        loginLog.IpAddress   = ipAddress;
                        loginLog.LoginTime   = DateTime.Now;
                        loginLog.RealName    = sMUserInfo == null ? "" : sMUserInfo.RealName;
                        loginLog.RoleName    = sMUserInfo == null ? "" : sMUserInfo.RoleName;
                        loginLog.Status      = isSucess ? LoginStatusEum.Logining : LoginStatusEum.LogOut;

                        MongoDbUtil.AddDoc(loginLog);
                    }
                    else
                    {
                        //LoginLog loginLog = new LoginLog();
                        //loginLog.ID = Guid.NewGuid().ToString();
                        //loginLog.Account = sMUserInfo.AccountName;
                        //loginLog.CompanyID = sMUserInfo.CompanyId.Value;
                        //loginLog.Description = isSucess ? LoginTypeEum.LoginSuccess : LoginTypeEum.LoginFail;
                        //loginLog.IpAddress = ipAddress;
                        //loginLog.LoginTime = DateTime.Now;
                        //loginLog.RealName = sMUserInfo?.RealName;
                        //loginLog.RoleName = sMUserInfo?.RoleName;
                        //loginLog.Status = isSucess ? LoginStatusEum.Logining : LoginStatusEum.LogOut;

                        //MongoDbUtil.AddDoc(loginLog);
                    }
                }
                catch (Exception EX)
                {
                }
            });

            return(result);
        }
Example #7
0
        /// <summary>
        /// 新增T_BM_WarehouseFile数据
        /// </summary>
        /// <param name="requestObject">返回响应结果对象,包括响应代码,新增操作结果</param>
        /// <param name="UserID">操作人ID</param>
        /// <returns></returns>
        public async Task <ResponseObject <TBMWarehouseFileAddModel, bool> > PostAsync(RequestObject <TBMWarehouseFileAddModel> requestObject, int UserID)
        {
            try
            {
                var curentDB = _db.Instance;

                SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(UserID, curentDB);
                //如果没有新增数据,返回错误信息
                if (requestObject.PostData == null && requestObject.PostDataList == null)
                {
                    return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, "PostData,PostDataList不能都为null"));
                }
                var result = false;
                //批量新增的优先级高于单条数据新增,且只会执行一个新增操作
                if (requestObject.PostDataList != null && requestObject.PostDataList.Count > 0)
                {
                    var addList = _mapper.Map <List <TBMWarehouseFileAddModel>, List <TBMWarehouseFileDbModel> >(requestObject.PostDataList);
                    foreach (var item in addList)
                    {
                        item.CompanyId = sMUserInfo.CompanyId.Value;
                    }

                    result = await curentDB.Insertable(addList).ExecuteCommandAsync() > 0;
                }
                else
                {
                    var addModel = _mapper.Map <TBMWarehouseFileDbModel>(requestObject.PostData);
                    addModel.CompanyId  = sMUserInfo.CompanyId.Value;
                    addModel.DeleteFlag = false;

                    var oldModel = curentDB.Queryable <TBMWarehouseFileDbModel>().Where(p => SqlFunc.IsNull(p.DeleteFlag, false) == false && p.WarehouseName == addModel.WarehouseName &&
                                                                                        p.CompanyId == sMUserInfo.CompanyId.Value).First();

                    if (oldModel != null)
                    {
                        return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, addModel.WarehouseName + " 已经存在"));
                    }

                    var oldModelCode = curentDB.Queryable <TBMWarehouseFileDbModel>().Where(p => SqlFunc.IsNull(p.DeleteFlag, false) == false && p.Code == addModel.Code &&
                                                                                            p.CompanyId == sMUserInfo.CompanyId.Value).First();

                    if (oldModelCode != null)
                    {
                        return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, "编号:" + addModel.Code + " 已经存在"));
                    }

                    addModel.CompanyId = sMUserInfo.CompanyId.Value;

                    result = await _db.Instance.Insertable(addModel).ExecuteCommandAsync() > 0;
                }
                //返回执行结果
                if (result)
                {
                    return(ResponseUtil <TBMWarehouseFileAddModel, bool> .SuccessResult(requestObject, true));
                }
                return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, "新增数据失败!"));
            }
            catch (Exception ex)
            {
                //返回异常结果
                return(ResponseUtil <TBMWarehouseFileAddModel, bool> .FailResult(requestObject, false, ex.Message));
            }
        }
Example #8
0
        /// <summary>
        /// 查询日志
        /// </summary>
        /// <param name="requestObject"></param>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public ResponseObject <LogQueryModel, List <OperateLog> > Get(RequestObject <LogQueryModel> requestObject, int UserId)
        {
            try
            {
                long       totalNum   = -1;
                SMUserInfo sMUserInfo = SMCurentUserManager.GetCurentUserID(UserId, _db.Instance);

                List <OperateLog> result = new List <OperateLog>();

                Expression <Func <OperateLog, bool> > pression = p => p.CompanyID == sMUserInfo.CompanyId.Value;

                var queryEntiy = requestObject.PostData;
                if (queryEntiy != null)
                {
                    if (!string.IsNullOrEmpty(queryEntiy.Account))
                    {
                        pression = pression.And(p => p.Account.Contains(queryEntiy.Account));
                    }
                    if (!string.IsNullOrEmpty(queryEntiy.Path))
                    {
                        pression = pression.And(p => p.Path.Contains(queryEntiy.Path));
                    }

                    if (!string.IsNullOrEmpty(queryEntiy.RealName))
                    {
                        pression = pression.And(p => p.RealName.Contains(queryEntiy.RealName));
                    }

                    if (!string.IsNullOrEmpty(queryEntiy.IpAddress))
                    {
                        pression = pression.And(p => p.IpAddress == queryEntiy.IpAddress);
                    }

                    if (queryEntiy.CreateTimeBg != null)
                    {
                        pression = pression.And(p => p.CreateTime >= queryEntiy.CreateTimeBg.Value);
                    }

                    if (queryEntiy.CreateTimeEd != null)
                    {
                        DateTime eg = queryEntiy.CreateTimeEd.Value.AddDays(1);
                        pression = pression.And(p => p.CreateTime < eg);
                    }
                }
                var sort = Builders <OperateLog> .Sort.Descending(y => y.CreateTime);

                if (requestObject.IsPaging == true)
                {
                    result = MongoDbUtil.GetDoc <OperateLog>(pression, requestObject.PageIndex, requestObject.PageSize, sort, ref totalNum);
                }
                else
                {
                    result = MongoDbUtil.GetDoc <OperateLog>(pression, sort).ToList();
                }


                return(ResponseUtil <LogQueryModel, List <OperateLog> > .SuccessResult(requestObject, result, totalNum));
            }
            catch (Exception ex)
            {
                //返回查询异常结果
                return(ResponseUtil <LogQueryModel, List <OperateLog> > .FailResult(requestObject, null, ex.Message));
            }
        }
Example #9
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="requestObject"></param>
        /// <returns></returns>
        public async Task <ResponseObject <TSMUserLoginResult> > LoginAsync(RequestPost <TSMUserAccountAddModel> requestObject)
        {
            try
            {
                TSMUserLoginResult tSMUserLoginResult = new TSMUserLoginResult();

                if (string.IsNullOrEmpty(requestObject.PostData.TelAccount) &&
                    string.IsNullOrEmpty(requestObject.PostData.EmailAccount))
                {
                    return(ResponseUtil <TSMUserLoginResult>
                           .FailResult(null, "手机号或邮箱号至少需要一个"));
                }

                //当前登录账户信息
                var curr = requestObject.PostData;
                //查询数据库是否有该账户
                var dbModel = await _db.Instance.Queryable <TSMUserAccountDbModel>()
                              .Where(p => p.TelAccount == curr.TelAccount || p.EmailAccount == curr.EmailAccount)
                              .FirstAsync();

                //如果没有该账户返回错误信息
                if (dbModel == null)
                {
                    return(ResponseUtil <TSMUserLoginResult>
                           .FailResult(null, "登录失败,账户不存在!"));
                }

                if (dbModel.Status != 1)
                {
                    return(ResponseUtil <TSMUserLoginResult>
                           .FailResult(null, "登录失败,账户无效或过期"));
                }
                #region 如果登录三次以上需要提供手机验证码
                var verification = CacheFactory.Instance(CacheType.Redis);
                if (verification.ContainsKey(string.Format(CacheKeyString.LoginTimes, curr.TelAccount)))
                {
                    string RedisValue = verification.GetValueByKey <string>(string.Format(CacheKeyString.LoginTimes, curr.TelAccount));
                    if (Convert.ToInt32(RedisValue) >= 3)
                    {
                        if (string.IsNullOrWhiteSpace(curr.VerificationCode))
                        {
                            return(ResponseUtil <TSMUserLoginResult> .FailResult(null, "登录失败,请输入验证码"));
                        }
                        if (curr.VerificationCode != verification.GetValueByKey <string>(string.Format(CacheKeyString.TimePassMsgCode, curr.TelAccount)))
                        {
                            return(ResponseUtil <TSMUserLoginResult> .FailResult(null, "登录失败,输入的验证码不一致"));
                        }
                    }
                }
                #endregion
                //验证密码
                var currPwd = EncryptUtil.DeAESbyKey(dbModel.Passwd, Encoding.UTF8, dbModel.Salt);
                if (string.Equals(curr.Passwd, currPwd))
                {
                    var dbUserInfo = await _db.Instance.Queryable <TSMUserInfoDbModel>()
                                     .Where(p => p.ID == dbModel.UserInfoId)
                                     .FirstAsync();

                    var rolesDbModel = _db.Instance.Queryable <TSMRoleUserRelationDbModel, TSMRolesDbModel>(
                        (t1, t2) => new object[]
                    {
                        JoinType.Left, t1.RoleId == t1.Id
                    }).Where((t1, t2) => t1.UserId == dbModel.ID).Select((t1, t2) => t2).First();

                    var palyloads = new Dictionary <string, object>
                    {
                        { "UserID", dbModel.ID },
                        { "ID", Guid.NewGuid().ToString() },
                        { "CompanyID", dbModel.CompanyId == null?0:dbModel.CompanyId.Value },
                        { "UserName", dbModel.AccountName }
                    };
                    var token = TokenManager.CreateTokenByHandler(palyloads, 60 * 24);

                    try
                    {
                        #region 缓存当前用户的个人信息到redis
                        var    redis = CacheFactory.Instance(CacheType.Redis);
                        string key   = string.Format(CacheKeyString.UserAccount, dbModel.ID);
                        if (redis.ContainsKey(key))
                        {
                            redis.RemoveKey(key);
                        }
                        SMUserInfo sMUserInfo = new SMUserInfo();
                        sMUserInfo.UserID       = dbModel.ID;
                        sMUserInfo.CompanyId    = dbModel.CompanyId;
                        sMUserInfo.EmailAccount = dbModel.EmailAccount;
                        sMUserInfo.TelAccount   = dbModel.TelAccount;
                        sMUserInfo.AccountName  = dbModel.AccountName;
                        sMUserInfo.RealName     = dbUserInfo.RealName;
                        sMUserInfo.RoleName     = rolesDbModel?.RoleName;
                        redis.AddKey <SMUserInfo>(key, sMUserInfo, 60 * 60 * 24);
                        #endregion
                    }
                    catch (Exception ex)
                    {
                    }
                    tSMUserLoginResult.Token         = token;
                    tSMUserLoginResult.IsHavaCompany = dbModel.CompanyId == null ? false : true;
                    #region 登录成功删除【登录失败记录次数】
                    var Successredis = CacheFactory.Instance(CacheType.Redis);
                    if (Successredis.ContainsKey(string.Format(CacheKeyString.LoginTimes, curr.TelAccount)))
                    {
                        Successredis.RemoveKey(string.Format(CacheKeyString.LoginTimes, curr.TelAccount));
                    }
                    #endregion
                    //返回验证成功信息
                    return(ResponseUtil <TSMUserLoginResult>
                           .SuccessResult(tSMUserLoginResult));
                }
                #region 登录失败记录次数
                var    redisError = CacheFactory.Instance(CacheType.Redis);
                string keyError   = string.Format(CacheKeyString.LoginTimes, curr.TelAccount);
                string RedisCode  = redisError.GetValueByKey <string>(keyError);
                redisError.AddOrUpdateKey <string>(keyError, RedisCode == "" ? "1" : (Convert.ToInt32(RedisCode) + 1).ToString(), 3600);
                #endregion
                //返回密码验证失败的错误信息
                return(ResponseUtil <TSMUserLoginResult> .FailResult(null, "登录失败,密码错误"));
            }
            catch (Exception ex)
            {
                //返回异常信息
                return(ResponseUtil <TSMUserLoginResult>
                       .FailResult(null, ex.Message));
            }
        }