/// <summary> /// 自动登录处理 /// </summary> /// <param name="sysId">系统编号</param> /// <param name="companyId">公司编号</param> /// <param name="userId">用户编号</param> /// <param name="username">用户账号</param> /// <param name="uInfo">登录用户信息</param> private static void AutoLogin(string sysId, string companyId, string userId, string username, out MUserInfo uInfo) { uInfo = null; IUserLogin dal = new DUserLogin(); MSysDomain domainInfo = GetDomain(); if (domainInfo == null || domainInfo.SysId != sysId || domainInfo.CompanyId != companyId) { uInfo = null; return; } uInfo = dal.Login(userId); if (uInfo == null) { return; } if (uInfo.Username != username) { uInfo = null; return; } if (uInfo.CompanyId != companyId) { uInfo = null; return; } if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.供应商 && uInfo.SourceCompanyInfo == null) { uInfo = null; return; } if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.组团社 && uInfo.TourCompanyInfo == null) { uInfo = null; return; } if (uInfo.Status != EyouSoft.Model.EnumType.ComStructure.UserStatus.正常) { uInfo = null; return; } uInfo.SysId = sysId; uInfo.LoginTime = uInfo.LastLoginTime.HasValue ? uInfo.LastLoginTime.Value : DateTime.Now; dal.LoginLogwr(uInfo, EyouSoft.Model.EnumType.ComStructure.UserLoginType.自动登录); SetUserCache(uInfo); }
/// <summary> /// 获取当前域名信息 /// </summary> /// <returns></returns> public static MSysDomain GetDomain() { string s = System.Web.HttpContext.Current.Request.Url.Host.ToLower(); /*//单域名缓存 * MSysDomain info = (MSysDomain)EyouSoftCache.GetCache(string.Format(EyouSoft.Cache.Tag.TagName.SysDomain, s)); * * if (info == null) * { * IUserLogin dal = new DUserLogin(); * info = dal.GetDomain(s); * * if (info != null) * { * EyouSoft.Cache.Facade.EyouSoftCache.Add(string.Format(EyouSoft.Cache.Tag.TagName.SysDomain, s), info, DateTime.Now.AddHours(2)); * } * } * * return info;*/ IDictionary <string, MSysDomain> domains = (IDictionary <string, MSysDomain>)EyouSoftCache.GetCache(EyouSoft.Cache.Tag.TagName.SysDomains); MSysDomain info = null; domains = domains ?? new Dictionary <string, MSysDomain>(); if (domains.ContainsKey(s)) { info = domains[s]; } else { IUserLogin dal = new DUserLogin(); info = dal.GetDomain(s); if (info != null) { domains.Add(s, info); EyouSoft.Cache.Facade.EyouSoftCache.Add(EyouSoft.Cache.Tag.TagName.SysDomains, domains); } } return(info); }
/// <summary> /// 获取域名信息 /// </summary> /// <param name="domain">域名</param> /// <returns></returns> public MSysDomain GetDomain(string domain) { MSysDomain info = null; DbCommand cmd = _db.GetSqlStringCommand(SQL_SELECT_GetDomain); _db.AddInParameter(cmd, "Domain", DbType.String, domain); using (IDataReader rdr = DbHelper.ExecuteReader(cmd, _db)) { if (rdr.Read()) { info = new MSysDomain() { CompanyId = rdr.GetString(3), Domain = domain, SysId = rdr.GetString(0), Url = rdr.IsDBNull(2) ? string.Empty : rdr.GetString(2) }; } } return(info); }
/// <summary> /// 获取当前位置信息 /// </summary> /// <param name="sysId">系统编号</param> /// <returns></returns> public static MComLocationInfo GetLocation(string sysId) { //分销商、供应商端怎么处理???待解决。 int? defaultMenu2Id = EyouSoft.Toolkit.Utils.GetIntNullable(HttpContext.Current.Request.QueryString["sl"], null); string currentExecutionFilePath = HttpContext.Current.Request.CurrentExecutionFilePath.ToLower(); if (currentExecutionFilePath == "/default.aspx") { defaultMenu2Id = 0; } if (currentExecutionFilePath.IndexOf("/groupend/distribution") > -1) { defaultMenu2Id = -1; } if (currentExecutionFilePath.IndexOf("/groupend/suppliers") > -1) { defaultMenu2Id = -2; } if (defaultMenu2Id == null) { throw new System.Exception("未设置系统默认二级栏目编号,请确保在URL查询参数中包含系统默认二级栏目编号参数:sl(这里是L不是1)。"); } MComLocationInfo locationInfo = new MComLocationInfo() { DefaultMenu2Id = 0, Menu1Id = 0, Menu1Name = string.Empty, Menu2Id = 0, Menu2Name = string.Empty }; if (string.IsNullOrEmpty(sysId)) { MSysDomain domainInfo = GetDomain(); if (domainInfo != null) { sysId = domainInfo.SysId; } } if (string.IsNullOrEmpty(sysId)) { return(locationInfo); } IList <MComMenu1Info> menus = GetComMenus(sysId); if (menus == null || menus.Count < 1) { return(locationInfo); } bool isFind = false; foreach (var item1 in menus) { if (item1 == null || item1.Menu2s == null || item1.Menu2s.Count < 1) { continue; } foreach (var item2 in item1.Menu2s) { if (item2 == null) { continue; } if (item2.DefaultMenu2Id == defaultMenu2Id.Value) { locationInfo.DefaultMenu2Id = defaultMenu2Id.Value; locationInfo.Menu1Id = item1.MenuId; locationInfo.Menu1Name = item1.Name; locationInfo.Menu2Id = item2.MenuId; locationInfo.Menu2Name = item2.Name; isFind = true; break; } } if (isFind) { break; } } return(locationInfo); }
/// <summary> /// 用户登录,返回1登录成功 /// </summary> /// <param name="companyId">系统公司编号</param> /// <param name="username">用户名</param> /// <param name="pwdInfo">登录密码</param> /// <param name="uInfo">登录用户信息</param> /// <returns></returns> public static int Login(string companyId, string username, MPasswordInfo pwdInfo, out MUserInfo uInfo) { IUserLogin dal = new DUserLogin(); uInfo = null; if (string.IsNullOrEmpty(companyId)) { return(0); } if (string.IsNullOrEmpty(username)) { return(-1); } if (pwdInfo == null || string.IsNullOrEmpty(pwdInfo.NoEncryptPassword)) { return(-2); } MSysDomain domainInfo = GetDomain(); if (domainInfo == null) { return(-3); } uInfo = dal.Login(companyId, username, pwdInfo); //通过用户名及密码验证失败,判断登录密码是否为客服服务密码,如果是将绕过密码验证 //使用客服密码登录时登录日志做客服登录标识 EyouSoft.Model.EnumType.ComStructure.UserLoginType loginType = EyouSoft.Model.EnumType.ComStructure.UserLoginType.用户登录; if (uInfo == null) { if (System.Configuration.ConfigurationManager.AppSettings["KeFuPwd"] == pwdInfo.MD5Password) { uInfo = dal.Login(companyId, username); loginType = EyouSoft.Model.EnumType.ComStructure.UserLoginType.客服登录; } if (uInfo == null) { return(-4); } } if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.供应商 && uInfo.SourceCompanyInfo == null) { uInfo = null; return(-5); } if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.组团社 && uInfo.TourCompanyInfo == null) { uInfo = null; return(-6); } if (uInfo.Status != EyouSoft.Model.EnumType.ComStructure.UserStatus.正常) { uInfo = null; return(-7); } var setting = GetComSetting(companyId); if (IsLoginLimit(uInfo.UserType)) { switch (setting.UserLoginLimitType) { case EyouSoft.Model.EnumType.ComStructure.UserLoginLimitType.None: break; case EyouSoft.Model.EnumType.ComStructure.UserLoginLimitType.Earliest: if (loginType == EyouSoft.Model.EnumType.ComStructure.UserLoginType.用户登录 && uInfo.OnlineStatus == EyouSoft.Model.EnumType.ComStructure.UserOnlineStatus.Online) { uInfo = null; return(-8); } break; case EyouSoft.Model.EnumType.ComStructure.UserLoginLimitType.Latest: break; default: break; } } uInfo.SysId = domainInfo.SysId; uInfo.LoginTime = DateTime.Now; if (loginType == EyouSoft.Model.EnumType.ComStructure.UserLoginType.用户登录) { uInfo.OnlineStatus = EyouSoft.Model.EnumType.ComStructure.UserOnlineStatus.Online; uInfo.OnlineSessionId = Guid.NewGuid().ToString(); } dal.LoginLogwr(uInfo, loginType); SetUserCache(uInfo); SetCookies(uInfo); if (loginType == EyouSoft.Model.EnumType.ComStructure.UserLoginType.客服登录) { SetKeFuLoginCookies(); } return(1); }