public async Task <ServiceResult <TokenDto> > WxLoginAsync(WxLoginDto input) { var wxlogin = await _wxService.GetCode2Session(input.Code); if (!wxlogin.Success || wxlogin.Result == null) { return(ServiceResult <TokenDto> .Failed($"微信登录失败,请稍后重试!错误:{wxlogin.Message}")); } var openId = wxlogin.Result.OpenId; var exist = await _userIdentityService.VerifyWxOpenIdAsync(openId); long userId; // 如果绑定信息为空,则未登录过,进行账户信息记录 if (exist == null) { var entity = new UserEntity { Username = "", Nickname = input.Nickname, Gender = input.Gender, Email = "", Phone = "", Province = input.Province, City = input.City, District = "", Street = "", AvatarUrl = input.AvatarUrl, }; entity.UserRoles = new List <UserRoleEntity> { new UserRoleEntity() { RoleId = SystemConst.Role.User } }; entity.UserIdentitys = new List <UserIdentityEntity>()//构建赋值用户身份认证登录信息 { new UserIdentityEntity(UserIdentityEntity.WeiXin, input.Nickname, openId, DateTime.Now) }; entity = await _userRepo.InsertAsync(entity); userId = entity.Id; } else { userId = exist.UserId; } var user = await _userRepo.GetUserAsync(c => c.Id == userId); return(ServiceResult <TokenDto> .Successed(await _jwtTokenService.CreateTokenAsync(user))); }
public MyResult <object> Login(WxLoginDto model) { MyResult result = new MyResult(); if (string.IsNullOrEmpty(model.Code)) { return(result.SetStatus(ErrorCode.InvalidData, "code 无效")); } var code2SessionUrl = $"https://api.weixin.qq.com/sns/jscode2session?appid={Constants.WxAppId}&secret={Constants.WxSecret}&js_code={model.Code}&grant_type=authorization_code"; var rep = HttpUtil.GetString(code2SessionUrl); var repObj = rep.GetModel <Code2SessionRep>(); var openid = repObj.OpenId; var user = base.First <User>(predicate => predicate.OpenId == openid); if (user == null) { return(result.SetStatus(ErrorCode.NotFound, "用户未注册")); } user.SessionKey = repObj.Session_Key; TokenModel tokenModel = new TokenModel(); tokenModel.Id = (int)user.Id; tokenModel.Mobile = user.PhoneNum; tokenModel.Code = repObj.OpenId; tokenModel.Source = domain.enums.SourceType.WeChat; var tokenStr = tokenModel.GetJson(); var enToken = DataProtectionUtil.Protect(tokenStr); result.Data = new { token = enToken, uid = (int)user.Id }; user.Token = enToken; base.Update(user, true); return(result); }
public MyResult <object> WxLogin(WxLoginDto model) { throw new System.NotImplementedException(); }
public MyResult <object> WxLogin([FromBody] WxLoginDto model) { return(WxService.Login(model)); }
public async Task <ServiceResult <TokenDto> > WxLogin(WxLoginDto loginDto) { return(await _accountService.WxLoginAsync(loginDto)); }