示例#1
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="decodedUser"></param>
        /// <returns></returns>
        public WxUser DoAdd(DecodedUserInfo decodedUser)
        {
            var user = new WxUser()
            {
                OpenId     = decodedUser.openId,
                NickName   = decodedUser.nickName,
                AvatarUrl  = decodedUser.avatarUrl,
                Gender     = (WxSexEnum)decodedUser.gender,
                Country    = decodedUser.country,
                Province   = decodedUser.province,
                City       = decodedUser.city,
                Language   = decodedUser.language,
                CreateTime = DateTime.Now
            };

            DC.Set <WxUser>().Add(user);
            DC.SaveChanges();
            return(user);
        }
示例#2
0
 public Rbac_User WeappRegist(Wx_App app, DecodedUserInfo userInfo, string mobile = null)
 {
     return(Session.QueryFirst <Rbac_User>(
                new RequestContext("wx", "exec_wx_regist")
                .SetParam(new
     {
         newid = App.IdWorker.NextId(),
         mobile = mobile,
         nickname = userInfo.nickName,
         photo = userInfo.avatarUrl,
         province = userInfo.province,
         city = userInfo.city,
         country = userInfo.country,
         appid = app.Id,
         authtype = "wechat",
         authid = userInfo.openId,
         unionid = userInfo.unionId
     })
                ));
 }
        public virtual async Task CreateOrUpdate(DecodedUserInfo userInfo, string appName)
        {
            var find = await _wechatUserRepository.FirstOrDefaultAsync(x => x.appid == userInfo.watermark.appid &&
                                                                       x.openid == userInfo.openId);

            if (find == null)
            {
                await _wechatUserRepository.InsertAsync(
                    new WechatUserinfo(userInfo.watermark.appid, userInfo.openId, userInfo.unionId,
                                       userInfo.nickName, userInfo.avatarUrl, appName : appName)
                {
                    city     = userInfo.city,
                    province = userInfo.province,
                    sex      = userInfo.gender,
                    country  = userInfo.country
                });
            }
            else
            {
                _mapper.Map(userInfo, find);
            }
        }
示例#4
0
 /// <summary>
 /// 【异步方法】添加解码后的用户信息
 /// </summary>
 /// <param name="bag"></param>
 /// <param name="decodedUserInfo"></param>
 public static async Task AddDecodedUserInfoAsync(SessionBag bag, DecodedUserInfo decodedUserInfo)
 {
     bag.DecodedUserInfo = decodedUserInfo;
     await UpdateAsync(bag.Key, bag, bag.ExpireTime - SystemTime.Now).ConfigureAwait(false);
 }
示例#5
0
 /// <summary>
 /// 添加解码后的用户信息
 /// </summary>
 /// <param name="bag"></param>
 /// <param name="decodedUserInfo"></param>
 public static void AddDecodedUserInfo(SessionBag bag, DecodedUserInfo decodedUserInfo)
 {
     bag.DecodedUserInfo = decodedUserInfo;
     Update(bag.Key, bag, bag.ExpireTime - SystemTime.Now);
 }
示例#6
0
        public IActionResult QuikLogin(WxUserInfo info)
        {
            CommonResult result = new CommonResult();

            try
            {
                if (info != null)
                {
                    DecodedUserInfo decodedUserInfo = EncryptHelper.DecodeUserInfoBySessionId(info.SessionId, info.EncryptedData, info.Iv);

                    UserInputDto userInput = new UserInputDto();
                    userInput.NickName       = decodedUserInfo.nickName;
                    userInput.HeadIcon       = decodedUserInfo.avatarUrl;
                    userInput.Gender         = decodedUserInfo.gender;
                    userInput.Country        = decodedUserInfo.country;
                    userInput.Province       = decodedUserInfo.province;
                    userInput.City           = decodedUserInfo.city;
                    userInput.language       = info.language;
                    userInput.OpenId         = decodedUserInfo.openId;
                    userInput.OpenIdType     = "yuebon.openid.wxapplet";
                    userInput.ReferralUserId = info.ReferralUserId;
                    userInput.UnionId        = decodedUserInfo.unionId;
                    User user = userService.GetUserByOpenId(userInput.OpenIdType, decodedUserInfo.openId);
                    if (user == null)
                    {
                        result.Success = userService.CreateUserByWxOpenId(userInput);
                    }
                    else
                    {
                        result.Success = userService.UpdateUserByOpenId(userInput);
                    }
                    user = userService.GetUserByOpenId(info.openIdType, info.openId);
                    if (user != null)
                    {
                        JwtOption     jwtModel       = App.GetService <JwtOption>();
                        TokenProvider tokenProvider  = new TokenProvider(jwtModel);
                        TokenResult   tokenResult    = tokenProvider.LoginToken(user, "wxapplet");
                        var           currentSession = new YuebonCurrentUser
                        {
                            UserId         = user.Id,
                            Account        = user.Account,
                            Name           = user.RealName,
                            NickName       = user.NickName,
                            AccessToken    = tokenResult.AccessToken,
                            AppKey         = "wxapplet",
                            CreateTime     = DateTime.Now,
                            HeadIcon       = user.HeadIcon,
                            Gender         = user.Gender,
                            ReferralUserId = user.ReferralUserId,
                            MemberGradeId  = user.MemberGradeId,
                            Role           = roleService.GetRoleEnCode(user.RoleId)
                        };

                        CurrentUser = currentSession;
                        YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                        TimeSpan          expiresSliding    = DateTime.Now.AddMinutes(120) - DateTime.Now;
                        yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true);
                        result.ErrCode = ErrCode.successCode;
                        result.ResData = currentSession;
                        result.Success = true;
                    }
                    else
                    {
                        result.ErrCode = ErrCode.failCode;
                    }
                }
            }catch (Exception ex)
            {
                Log4NetHelper.Error("微信快速(一键)登录异常", ex);
                result.ErrMsg  = "微信快速(一键)登录:" + ex.Message;
                result.ErrCode = ErrCode.failCode;
            }
            return(ToJsonContent(result));
        }