Exemple #1
0
        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)));
        }
Exemple #2
0
        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();
 }
Exemple #4
0
 public MyResult <object> WxLogin([FromBody] WxLoginDto model)
 {
     return(WxService.Login(model));
 }
Exemple #5
0
 public async Task <ServiceResult <TokenDto> > WxLogin(WxLoginDto loginDto)
 {
     return(await _accountService.WxLoginAsync(loginDto));
 }