/// <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())); } }
/// <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}")); } }
/// <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)); } }
/// <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)); } }
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); }
/// <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)); } }
/// <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)); } }
/// <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)); } }