Beispiel #1
0
        public dynamic BindMobile(ApiModel::DecryptContext context)
        {
            var result = this._weChat.Decrypt <PhoneNumberWxResponse>(context.Data, context.IV, context.SessionKey);
            var model  = this._wxUserService.GetWxUser(context.WxChatUser.UnionId);

            if (model != null)
            {
                model.Mobile = result.PhoneNumber;
                this._wxUserService.Register(model);
            }
            return(new
            {
                state = new { hasMobile = true },
                mobile = model.Mobile
            });
        }
Beispiel #2
0
        public WeChatUserInfo DecryptUserInfo(ApiModel::DecryptContext context)
        {
            var result = this._weChat.Decrypt <WeChatUserInfo>(context.Data, context.IV, context.SessionKey);
            //检查用户状态
            var wxuser = this._wxUserService.GetWxUser(context.AppId, result.OpenId);

            if (wxuser == null)
            {
                wxuser = result.CreateWxUser(RegistryTypes.Miniprogram, context.AppId);
                this._os.TransactionManager.GetSession().SaveOrUpdate(wxuser);
            }
            else
            {
                result.State = new ApiModel::UserState()
                {
                    HasMobile = !string.IsNullOrEmpty(wxuser.Mobile), Signup = true
                };
                wxuser.LastActivityTime = DateTime.Now.ToUnixStampDateTime();
                this._os.TransactionManager.GetSession().SaveOrUpdate(wxuser);
            }
            result.Id     = wxuser.Id;
            result.Mobile = wxuser.Mobile;
            return(result);
        }