public async Task <ApplicationBaseResult> Execute(LoginInput input) { return(await DoAsync(async (x) => { //校验用户名重复 var loginInfo = await _userRepository.GetAsync(new UserExistByNameSpceifications(input.UserName)); if (loginInfo == null) { throw new ApplicationException("账号或密码错误,请重试!"); } //检测用户有效性 loginInfo.CheckLoginState(_common.ShaEncrypt(loginInfo.Id.ToString(), input.Password)); //生成jwt x.Data = _common.GetJwtToken(new{ Id = loginInfo.Id.ToString(), loginInfo.UserName, loginInfo.NickName }); _cacheServer.SetCache("Onion.UserLoginInfo." + loginInfo.Id, x.Data, TimeSpan.FromDays(30)); await _eventBus.PublishAsync("Onion.User.LoginHandle", new UserLoginEvent(loginInfo.NickName, DateTime.Now)); })); }