Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        /// <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;
        }