Esempio n. 1
0
        public async Task UpdateUserLastVisit(UpdateUserLastVisitInput input)
        {
            try
            {
                var entity = await _userDetailRepository.GetAsync(input.UserId);

                entity.LastVisitIP   = input.IP;
                entity.LastVisitRgId = input.RegionId;
                entity.LastVisitTime = input.VisitTime;

                await _userDetailRepository.UpdateAsync(entity);
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException("CouldNotFoundTheUser");
            }
        }
Esempio n. 2
0
        public virtual async Task <JsonResult> Login(LoginViewModel loginModel, string returnUrl = "")
        {
            returnUrl = NormalizeReturnUrl(returnUrl);

            UserDto userDto = null;

            if (ValidateHelper.IsEmail(loginModel.UsernameOrEmailAddress))            //邮箱登录
            {
                if (!BSPConfig.ShopConfig.LoginType.Contains("2"))
                {
                    throw new UserFriendlyException("暂时不支持邮箱登录");
                }
                else
                {
                    userDto = await _userAppService.GetUserByEmailAsync(loginModel.UsernameOrEmailAddress);

                    if (userDto == null)
                    {
                        throw new UserFriendlyException("邮箱不存在");
                    }
                }
            }
            else if (ValidateHelper.IsMobile(loginModel.UsernameOrEmailAddress))
            {
                if (!BSPConfig.ShopConfig.LoginType.Contains("3"))
                {
                    throw new UserFriendlyException("暂时不支持手机登录");
                }
                else
                {
                    userDto = await _userAppService.GetUserByMobileAsync(loginModel.UsernameOrEmailAddress);

                    if (userDto == null)
                    {
                        throw new UserFriendlyException("手机不存在");
                    }
                }
            }
            else
            {
                if (!BSPConfig.ShopConfig.LoginType.Contains("1"))
                {
                    throw new UserFriendlyException("暂时不支持用户名登录");
                }
                else
                {
                    userDto = await _userAppService.GetUserByNameAsync(loginModel.UsernameOrEmailAddress);

                    if (userDto == null)
                    {
                        throw new UserFriendlyException("用户名不存在");
                    }
                }
            }

            if (userDto != null)
            {
                if (SecureHelper.MD5(loginModel.Password + userDto.Salt) != userDto.Password)
                {
                    _loginFailLogAppService.AddLoginFailTimes(WorkContext.IP, DateTime.Now);
                    throw new UserFriendlyException("密码不正确");
                }
                else if (userDto.UserRankId == 1)                //当用户等级是禁止访问等级时
                {
                    if (userDto.LiftBanTime > DateTime.Now)      //达到解禁时间
                    {
                        UserRankDto userRankDto = await _userRankAppService.GetUserRankByCredits(userDto.PayCredits);

                        UpdateUserRankByUserIdInput input = new UpdateUserRankByUserIdInput()
                        {
                            Id = userDto.Id, UserRankId = userRankDto.Id
                        };
                        await _userAppService.UpdateUserRankByUserIdAsync(input);

                        userDto.UserRankId = userRankDto.Id;
                    }
                    else
                    {
                        throw new UserFriendlyException("您的账号当前被锁定,不能访问");
                    }
                }
            }

            //删除登录失败日志
            await _loginFailLogAppService.DeleteLoginFailLogByIPAsync(CommonHelper.ConvertIPToLong(WorkContext.IP));

            //获取区域信息
            var getIPInput = new GetIPInput();

            getIPInput.IP        = WorkContext.IP;
            WorkContext.Region   = ObjectMapper.Map <Region>(await _regionAppService.GetRegionByIPAsync(getIPInput));
            WorkContext.RegionId = WorkContext.Region.Id;

            //更新用户最后访问
            UpdateUserLastVisitInput updateUserLastVisitInput = new UpdateUserLastVisitInput();

            updateUserLastVisitInput.UserId    = userDto.Id;
            updateUserLastVisitInput.VisitTime = DateTime.Now;
            updateUserLastVisitInput.IP        = WorkContext.IP;
            updateUserLastVisitInput.RegionId  = WorkContext.RegionId;
            await _userDetailAppService.UpdateUserLastVisit(updateUserLastVisitInput);

            ////更新购物车中用户id
            //Carts.UpdateCartUidBySid(partUserInfo.Uid, WorkContext.Sid);

            WorkContext.User = ObjectMapper.Map <User>(userDto);
            //将用户信息写入cookie中
            ShopUtils.SetUserCookie(WorkContext.User, (WorkContext.ShopConfig.IsRemember == 1) ? 30 : -1);

            return(Json(new AjaxResponse {
                TargetUrl = returnUrl
            }));
        }