public UserInfoViewModel Login(string userName, string pwd, string LastSelectTenantCode) { UserInfoViewModel viewModel = new UserInfoViewModel(); try { EMUser user = _LoginUserDAL.GetLoginUser(userName, pwd); if (user != null) { viewModel = ConvertToViewModel(user); //租户类型 EMTenantService tenantService = new EMTenantService(); EMTenant tenant = user.Tenant; if (tenant == null) { viewModel.Msg = "error|帐户异常,登录帐户对应的租户类型记录不存在,请与平台方联系"; return viewModel; } viewModel.TenantType = (int)tenant.TenantType; // viewModel.OperatorLevel = tenant.OperatorLevel; viewModel.OperatorLevel = string.IsNullOrEmpty(user.UserGroupID.ToString()) ? 0 : tenant.OperatorLevel;//0表示管理员 if (!string.IsNullOrEmpty(tenant.LogoUrl)) { viewModel.TenantLogoImgURl = tenant.LogoUrl; } if (tenant.TenantType != EnumTenantType.PlatProvider) { EMTenant superTenant = tenantService.Select(tenant.SuperTenantID); if (tenant.TenantType == EnumTenantType.EndCustomer) { viewModel.TenantLogoImgURl = superTenant.LogoUrl; } viewModel.SuperContactNumber = superTenant.PhoneNumber; viewModel.SuperContactName = superTenant.ContactName; viewModel.SuperTenantName = superTenant.TenantName; //是否过期 if (tenant.TenantType == EnumTenantType.OperatingMerchant && tenant.ExpireTime.HasValue && DateTime.Now > tenant.ExpireTime.Value) { viewModel.Msg = "error|您的账号已过有效期,请与MOVO客服联系\n\r联系电话:" + superTenant.PhoneNumber; return viewModel; } //是否冻结 else if (tenant.IsFreeze) { switch (tenant.TenantType) { case EnumTenantType.EndCustomer: viewModel.Msg = "error|您的账号已被冻结,请与您的设备服务提供商联系!\n\r联系电话:" + superTenant.PhoneNumber; break; case EnumTenantType.OperatingMerchant: viewModel.Msg = "error|您的账号已被冻结,请与MOVO客服联系。\n\r联系电话:" + superTenant.PhoneNumber; break; } return viewModel; } } switch (viewModel.TenantType) { case 1://平台商 EMTenant lastCustomer = null; if (!string.IsNullOrEmpty(LastSelectTenantCode)) { lastCustomer = tenantService.Select(LastSelectTenantCode); } if (lastCustomer == null) { lastCustomer = tenantService.SelectLastChildEndCustomer(""); } if (lastCustomer != null) { EMUser lastUser = _LoginUserDAL.GetUserByUserCode(lastCustomer.RegisterUserCode); if (lastUser != null) { viewModel.SelectedUser = new ViewModel.WebModel.SelectedUserViewModel(); viewModel.SelectedUser.UserCode = lastUser.UserCode; viewModel.SelectedUser.UserName = lastUser.UserName; viewModel.SelectedUser.TenantCode = lastCustomer.TenantCode; viewModel.SelectedUser.TenantName = lastCustomer.TenantName; if (!string.IsNullOrEmpty(lastCustomer.SuperTenantID)) { EMTenant super = this.GetTenant(lastCustomer.SuperTenantID); if (super != null) { viewModel.SelectedUser.SuperTenantCode = super.TenantCode; viewModel.SelectedUser.SuperTenantName = super.TenantName; } } } } break; case 2://运营商 EMTenant lastCustomerForOperating = null; if (!string.IsNullOrEmpty(LastSelectTenantCode)) { lastCustomerForOperating = tenantService.Select(LastSelectTenantCode); } if (lastCustomerForOperating == null) { lastCustomerForOperating = tenantService.SelectLastChildEndCustomer(viewModel.TenantCode); } if (lastCustomerForOperating != null) { EMUser lastUser = _LoginUserDAL.GetUserByUserCode(lastCustomerForOperating.RegisterUserCode); if (lastUser != null) { viewModel.SelectedUser = new ViewModel.WebModel.SelectedUserViewModel(); viewModel.SelectedUser.UserCode = lastUser.UserCode; viewModel.SelectedUser.UserName = lastUser.UserName; viewModel.SelectedUser.TenantCode = lastCustomerForOperating.TenantCode; viewModel.SelectedUser.TenantName = lastCustomerForOperating.TenantName; viewModel.SelectedUser.SuperTenantCode = viewModel.TenantCode; viewModel.SelectedUser.SuperTenantName = viewModel.TenantName; } } break; case 3://终端客户 viewModel.SelectedUser = new ViewModel.WebModel.SelectedUserViewModel(); viewModel.SelectedUser.UserCode = viewModel.UserCode; viewModel.SelectedUser.UserName = viewModel.UserName; viewModel.SelectedUser.TenantCode = viewModel.TenantCode; viewModel.SelectedUser.TenantName = viewModel.TenantName; viewModel.SelectedUser.SuperTenantCode = user.Tenant.SuperTenantID; viewModel.SelectedUser.SuperTenantContactName = user.Tenant.ContactName; viewModel.SelectedUser.SuperTenantName = viewModel.SuperTenantName; break; } if (string.IsNullOrEmpty(viewModel.TenantLogoImgURl)) { viewModel.TenantLogoImgURl = UploadImageHelper.TenantImgUrl; } //获取地图类型 /*PositioningWCFService mapTypeService = new PositioningWCFService(); List<MapTypeViewModel> listMapType = mapTypeService.GetMapType(); viewModel.MapTypes = listMapType;*/ //令牌环 Ticket ticket = new Ticket() { UserCode = user.UserCode, UserName = user.UserName, Password = user.PassWord }; string token = EncryptUtil.Encrypt<Ticket>(ticket); viewModel.Token = token; #if !DEBUG user.LastLoginTime = DateTime.Now; new UserService().UpdLastLoginTime(user); #endif } else { viewModel.Msg = "error|用户名或密码错误"; //viewModel.IndentifyCode = IndentifyCodeHelper.CreateIndentifyCode(sessionId, 4); } } catch (Exception ex) { viewModel.Msg = "error|发生未处理错误,请联系系统管理员"; //viewModel.IndentifyCode = IndentifyCodeHelper.CreateIndentifyCode(sessionId, 4); Logger.Error("[Login]" + ex.Message, ex); } return viewModel; }
/// <summary> /// 立即体验 登录 /// </summary> /// <param name="ExperienceUserCode"></param> /// <returns></returns> public UserInfoViewModel ExperienceLogin(string ExperienceUserCode) { UserInfoViewModel viewModel = new UserInfoViewModel(); try { UserService service = new UserService(); //EMUser user = service.GetUserFullInfo(ExperienceUserCode); EMUser user = _LoginUserDAL.GetUserByUserCode(ExperienceUserCode); if (user != null) { viewModel = ConvertToViewModel(user); //租户类型 IEMTenantService tenantService = new EMTenantService(); EMTenant tenant = user.Tenant; if (tenant == null) { viewModel.Msg = "error|体验帐户异常,体验帐户对应的租户类型记录不存在,请与平台方联系"; return viewModel; } viewModel.TenantType = (int)tenant.TenantType; viewModel.OperatorLevel = tenant.OperatorLevel; if (!string.IsNullOrEmpty(tenant.LogoUrl)) { viewModel.TenantLogoImgURl = tenant.LogoUrl; } if (tenant.TenantType != EnumTenantType.PlatProvider) { EMTenant superTenant = tenantService.Select(tenant.SuperTenantID); if (tenant.TenantType == EnumTenantType.EndCustomer) { viewModel.TenantLogoImgURl = superTenant.LogoUrl; } viewModel.SuperContactNumber = superTenant.PhoneNumber; viewModel.SuperTenantName = superTenant.TenantName; ////是否过期 //if (tenant.TenantType == EnumTenantType.OperatingMerchant && tenant.ExpireTime.HasValue && DateTime.Now > tenant.ExpireTime.Value) //{ // viewModel.Msg = "error|体验帐户已过有效期,请与MOVO客服联系\n\r联系电话:" + superTenant.PhoneNumber; // return viewModel; //} ////是否冻结 //else if (tenant.IsFreeze) //{ // switch (tenant.TenantType) // { // case EnumTenantType.EndCustomer: // viewModel.Msg = "error|您的账号已被冻结,请与您的设备服务提供商联系!\n\r联系电话:" + superTenant.PhoneNumber; // break; // case EnumTenantType.OperatingMerchant: // viewModel.Msg = "error|您的账号已被冻结,请与MOVO客服联系。\n\r联系电话:" + superTenant.PhoneNumber; // break; // } // return viewModel; //} } switch (viewModel.TenantType) { case 1://平台商 EMTenant firstCustomer = tenantService.SelectLastChildEndCustomer(""); if (firstCustomer != null) { EMUser firstUser = service.GetUser(firstCustomer.RegisterUserCode); if (firstUser != null) { viewModel.SelectedUser = new ViewModel.WebModel.SelectedUserViewModel(); viewModel.SelectedUser.UserCode = firstUser.UserCode; viewModel.SelectedUser.UserName = firstUser.UserName; viewModel.SelectedUser.TenantCode = firstCustomer.TenantCode; viewModel.SelectedUser.TenantName = firstCustomer.TenantName; if (!string.IsNullOrEmpty(firstCustomer.SuperTenantID)) { EMTenant super = this.GetTenant(firstCustomer.SuperTenantID); if (super != null) { viewModel.SelectedUser.SuperTenantCode = super.TenantCode; viewModel.SelectedUser.SuperTenantName = super.TenantName; } } } } break; case 2://运营商 EMTenant firstChildEndCustomer = tenantService.SelectLastChildEndCustomer(viewModel.TenantCode); if (firstChildEndCustomer != null) { EMUser firstUser = service.GetUser(firstChildEndCustomer.RegisterUserCode); if (firstUser != null) { viewModel.SelectedUser = new ViewModel.WebModel.SelectedUserViewModel(); viewModel.SelectedUser.UserCode = firstUser.UserCode; viewModel.SelectedUser.UserName = firstUser.UserName; viewModel.SelectedUser.TenantCode = firstChildEndCustomer.TenantCode; viewModel.SelectedUser.TenantName = firstChildEndCustomer.TenantName; viewModel.SelectedUser.SuperTenantCode = viewModel.TenantCode; viewModel.SelectedUser.SuperTenantName = viewModel.TenantName; } } break; case 3://终端客户 viewModel.SelectedUser = new ViewModel.WebModel.SelectedUserViewModel(); viewModel.SelectedUser.UserCode = viewModel.UserCode; viewModel.SelectedUser.UserName = viewModel.UserName; viewModel.SelectedUser.TenantCode = viewModel.TenantCode; viewModel.SelectedUser.TenantName = viewModel.TenantName; viewModel.SelectedUser.SuperTenantCode = user.Tenant.SuperTenantID; viewModel.SelectedUser.SuperTenantName = viewModel.SuperTenantName; break; } if (string.IsNullOrEmpty(viewModel.TenantLogoImgURl)) { viewModel.TenantLogoImgURl = UploadImageHelper.TenantImgUrl; } //获取地图类型 /*PositioningWCFService mapTypeService = new PositioningWCFService(); List<MapTypeViewModel> listMapType = mapTypeService.GetMapType(); viewModel.MapTypes = listMapType;*/ //令牌环 Ticket ticket = new Ticket() { UserCode = user.UserCode, UserName = user.UserName, Password = user.PassWord }; string token = EncryptUtil.Encrypt<Ticket>(ticket); viewModel.Token = token; #if !DEBUG user.LastLoginTime = DateTime.Now; service.Update(user); #endif } else { viewModel.Msg = "error|体验帐号不存在,请联系系统管理员"; } } catch (Exception ex) { viewModel.Msg = "error|体验帐号登录时,发生未处理错误,请联系系统管理员"; Logger.Error("[Login]" + ex.Message, ex); } viewModel.IsExperienceLogin = true; return viewModel; }