public async Task <IHttpActionResult> ResetPassword01_CheckUserName(string username)
        {
            JsonResult <string> result = new JsonResult <string>();

            result.code = 0;
            result.msg  = "OK";
            if (username.IsNull())
            {
                result.Result = "用户名不能为空";
                return(Ok(result));
            }
            result.Result = await Task.Run <string>(() => {
                string tel        = string.Empty;
                UserInfoBll ubll  = new UserInfoBll();
                UserInfo userinfo = ubll.GetByUserName(username);
                if (userinfo != null)
                {
                    result.code = 1;
                    result.msg  = "OK";
                    if (!string.IsNullOrEmpty(userinfo.Telephone) && userinfo.Telephone.IsMobile())
                    {
                        tel             = string.Format("{0}*****{1}", userinfo.Telephone.Substring(0, 3), userinfo.Telephone.Substring(8));
                        string cachekey = cookieKey();
                        RedisBase.Item_Set(cachekey, userinfo.Telephone);
                        RedisBase.ExpireEntryAt(cachekey, DateTime.Now.AddMinutes(10));
                        result.ResultMsg = cachekey;
                        return(tel);
                    }
                }
                return(tel);
            });

            return(Ok(result));
        }
示例#2
0
        /// <summary>
        /// 获取微信公共号的Access_token
        /// </summary>
        /// <returns></returns>
        public static string GetWeChatAccess_token()
        {
            string access_token = string.Empty;
            string key          = getaccess_tokenKey();

            if (RedisBase.ContainsKey(key))
            {
                access_token = RedisBase.Item_Get <string>(key);
            }
            else
            {
                string url        = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", SystemSet.Serviceappid, SystemSet.Serviceappsecret);
                string resultJson = HttpUtils.Ins.GET(url);
                if (!resultJson.IsNull())
                {
                    if (resultJson.Contains("errcode"))
                    {
                        //WeChatErrorResult errorResult = JsonHelper.DeserializeObject<WeChatErrorResult>(resultJson);
                        ClassLoger.Fail("WeChatAPIHelper.GetWeChatAccess_token", url);
                        ClassLoger.Fail("WeChatAPIHelper.GetWeChatAccess_token", resultJson);
                    }
                    else
                    {
                        Dictionary <string, object> resDic = JsonHelper.DeserializeObject(resultJson);
                        access_token = resDic["access_token"].TryToString();
                        int expires_in = resDic["expires_in"].TryToInt(100);
                        RedisBase.Item_Set <string>(key, access_token);
                        RedisBase.ExpireEntryAt(key, DateTime.Now.AddSeconds(expires_in));
                    }
                }
            }
            return(access_token);
        }
        public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
        {
            RedisSessionState state = new RedisSessionState(null, null, timeout);

            RedisBase.Item_Set <string>(id, state.ToJson());
            RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(timeout.TryToDouble()));
        }
        /// <summary>
        /// 刷新当前用户信息【修改用户信息后刷新用户信息到缓存中】
        /// </summary>
        public void RefreshUser()
        {
            string key = GetKey();

            if (RedisBase.ContainsKey(key))
            {
                RedisBase.Item_Set(key, User);
            }
        }
示例#5
0
        public void UpdateWeChatUser(WeChatUser user)
        {
            WeChatUserDal.Ins.UpdateWeChatUser(user);
            string key = getGetWeChatUserByUnionIDKey(user.UnionID);

            if (RedisBase.ContainsKey(key))
            {
                RedisBase.Item_Remove(key);
            }
            RedisBase.Item_Set(key, user);
        }
        /// <summary>
        /// 用户登录返回令牌
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public string GetUserToken(UserInfo user)
        {
            string uagin = actionContext.Request.Headers.UserAgent.TryToString().MD5();
            string rm    = Utils.GenPsw(11, 11);
            long   time  = Utils.GetUnixTime();
            string code  = string.Format("{0}-{1}-{2}-{3}", user.ID, uagin, rm, time);
            string token = EncryptUtil.Base64(code);
            string key   = (user.ID + uagin + time).MD5();

            RedisBase.Item_Set(key, user);
            RedisBase.ExpireEntryAt(key, DateTime.Now.AddDays(2));
            return(token);
        }
示例#7
0
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     Models.RedisSession <UserInfo> redisSession = new Models.RedisSession <UserInfo>(filterContext.HttpContext, true, 120);
     if (!redisSession.IsExistKey("UserCode"))
     {
         string Key = filterContext.HttpContext.Request.RawUrl.MD5();
         if (!RedisBase.ContainsKey(Key))
         {
             RedisBase.Item_Set(Key, filterContext.HttpContext.Request.RawUrl);
         }
         filterContext.Result = new RedirectResult(WeChateSiteHelper.getOauthURL(Key));
     }
 }
        public static void TestRedis()
        {
            // 基本KEY/VALUE键值对操作;
            RedisBase.Item_Set("examCourseId", "00889750EE7448DB9B388E9146E5AC62");
            RedisBase.Item_Set("batchId", "89B0BD4B5CAC49259E60E1D8A6EDD858");

            var examCourseId = RedisBase.Item_Get <string>("examCourseId");
            var batchId      = RedisBase.Item_Get <string>("batchId");

            Console.WriteLine("examCourseId:" + examCourseId);
            Console.WriteLine("batchId:" + batchId);

            // 存储对象;
            RedisBase.Item_Set <UserInfo>("userinfo", new UserInfo()
            {
                UserName = "******", Age = 45
            });
            var userinfo = RedisBase.Item_Get <UserInfo>("userinfo");

            var id       = userinfo.Id;
            var userName = userinfo.UserName;
            var age      = userinfo.Age;

            Console.WriteLine("userinfo:" + userinfo);
            Console.WriteLine("id:" + id + ",userName:" + userName + ",age:" + age);

            // List;
            RedisBase.List_Add("userinfolist", new UserInfo()
            {
                Id = 1, UserName = "******", Age = 36
            });
            RedisBase.List_Add("userinfolist", new UserInfo()
            {
                Id = 2, UserName = "******", Age = 30
            });

            var userList = RedisBase.List_GetList <UserInfo>("userinfolist");

            foreach (var user in userList)
            {
                Console.WriteLine("id:" + user.Id + ",userName:" + user.UserName + ",age:" + user.Age);
            }


            RedisBase.Item_Remove("examCourseId");

            Console.Read();
        }
        public async Task <IHttpActionResult> VerCodePic()
        {
            JsonResult <VerCodePicViewModel> result = new JsonResult <VerCodePicViewModel>();

            result.code = 1;
            result.msg  = "OK";
            await Task.Run(() => {
                try
                {
                    ClassLoger.Info("VerCodePic", "开始获取成语");
                    cy_dictBll cybll       = new cy_dictBll();
                    IList <cy_dict> cylist = cybll.GetAllcy_dict();
                    ClassLoger.Info("VerCodePic", cylist.Count.ToString());
                    int i = Utils.GetRandom(0, cylist.Count - 1);
                    ClassLoger.Info("VerCodePic", i.ToString());
                    cy_dict cy = cylist[i];
                    ClassLoger.Info("VerCodePic成语:", cy.chengyu);
                    VerCodePicViewModel vcvm = new VerCodePicViewModel();

                    string sourcePic = FileHelper.GetVerCodePicResource();
                    if (sourcePic.IsNull() || !File.Exists(sourcePic))
                    {
                        sourcePic = @"E:\WebResources\images\VerCodePicSource\1.jpg";
                    }
                    ClassLoger.Info("VerCodePic图片", sourcePic);
                    VerCodePic codepic = FileHelper.GetVerCodePic(cy.chengyu, sourcePic);
                    vcvm.content       = cy.chengyu;
                    vcvm.MainPic       = codepic.PicURL;
                    result.Result      = vcvm;

                    string key = cookieKey();
                    RedisBase.Item_Set(key, codepic);
                    RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10));
                    result.ResultMsg = key;
                }
                catch (Exception ex)
                {
                    ClassLoger.Error("AccountController.VerCodePic", ex);
                    result.code = -1;
                    result.msg  = "AccountController.VerCodePic发生异常:" + ex.Message;
                }
            });

            return(Ok(result));
        }
示例#10
0
        public UserInfo GetUserinfoByID(string userid)
        {
            string key = getuserkey(userid);

            if (RedisBase.ContainsKey(key))
            {
                return(RedisBase.Item_Get <UserInfo>(key));
            }
            else
            {
                UserInfo uinfo = UserInfoDal.Ins.GetUserinfoByID(userid);
                if (uinfo != null)
                {
                    RedisBase.Item_Set(key, uinfo);
                }
                return(uinfo);
            }
        }
示例#11
0
        public WeChatUser GetWeChatUserByUnionID(string UnionID)
        {
            string key = getGetWeChatUserByUnionIDKey(UnionID);

            if (RedisBase.ContainsKey(key))
            {
                return(RedisBase.Item_Get <WeChatUser>(key));
            }
            else
            {
                WeChatUser wuser = WeChatUserDal.Ins.GetWeChatUserByUnionID(UnionID);
                if (wuser != null)
                {
                    RedisBase.Item_Set(key, wuser);
                }
                return(wuser);
            }
        }
        public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem)
        {
            ISessionStateItemCollection sessionItems  = null;
            HttpStaticObjectsCollection staticObjects = null;

            if (item.Items.Count > 0)
            {
                sessionItems = item.Items;
            }
            if (!item.StaticObjects.NeverAccessed)
            {
                staticObjects = item.StaticObjects;
            }

            RedisSessionState state2 = new RedisSessionState(sessionItems, staticObjects, item.Timeout);

            RedisBase.Item_Set(id, state2.ToJson());
            RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(item.Timeout.TryToDouble()));
        }
示例#13
0
        public string AddWeChatUser(WeChatUser user)
        {
            if (user == null)
            {
                return(string.Empty);
            }
            string id = WeChatUserDal.Ins.AddWeChatUser(user);

            user.ID = id;
            string key = getGetWeChatUserByUnionIDKey(user.UnionID);

            if (RedisBase.ContainsKey(key))
            {
                RedisBase.Item_Remove(key);
            }
            RedisBase.Item_Set(key, user);

            return(id);
        }
示例#14
0
        public string UpdateUserinfo(UserInfo _userinfo)
        {
            string id = UserInfoDal.Ins.UpdateUserinfo(_userinfo);

            if (!string.IsNullOrEmpty(id))
            {
                string key = getuserkey(id);
                if (RedisBase.ContainsKey(key))
                {
                    RedisBase.Item_Remove(key);
                }
                string openkey = getuseropenkey(_userinfo.Openid);
                if (RedisBase.ContainsKey(openkey))
                {
                    RedisBase.Item_Remove(openkey);
                }
                RedisBase.Item_Set(key, _userinfo);
                RedisBase.Item_Set(openkey, _userinfo);
            }
            return(id);
        }
示例#15
0
        public UserInfo GetUserInfoByOpenID(string OpenID)
        {
            if (string.IsNullOrEmpty(OpenID))
            {
                return(null);
            }
            string key = getuseropenkey(OpenID);

            if (RedisBase.ContainsKey(key))
            {
                return(RedisBase.Item_Get <UserInfo>(key));
            }
            else
            {
                UserInfo uinfo = UserInfoDal.Ins.GetUserInfoByOpenID(OpenID);
                if (uinfo != null)
                {
                    RedisBase.Item_Set(key, uinfo);
                }
                return(uinfo);
            }
        }
        public async Task <IHttpActionResult> SendSmS(string tel)
        {
            JsonResult <string> result = new JsonResult <string>();

            result.code = 1;
            result.msg  = "OK";
            if (tel.IsNull())
            {
                result.code = 0;
                result.msg  = "手机号不能为空";
                return(Ok(result));
            }
            if (!tel.IsMobile())
            {
                result.code = 0;
                result.msg  = "请输入正确的手机号";
                return(Ok(result));
            }

            //产生短信验证码
            int    code = Utils.GetRandom(100000, 999999);
            string key  = cookieKey();

            RedisBase.Item_Set(key, code.TryToString());
            RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10));
            bool isSend = Utils.SendSMSVCode(code.TryToString(), tel);

            if (isSend)
            {
                result.Result = key;
            }
            else
            {
                result.code = 0;
                result.msg  = "发送失败";
            }
            return(Ok(result));
        }
示例#17
0
        public string RegisterUserInfo(UserInfo _userinfo)
        {
            string id = string.Empty;

            if (_userinfo.BirthDate == DateTime.MinValue || _userinfo.BirthDate == DateTime.MaxValue)
            {
                _userinfo.BirthDate = new DateTime(1990, 1, 1);
            }
            UserInfo _user = GetUserInfoByOpenID(_userinfo.Openid);

            if (_user != null)
            {
                id              = _user.ID;
                _user.UserName  = _userinfo.UserName;
                _user.Name      = _userinfo.Name;
                _user.Password  = _userinfo.Password;
                _user.BirthDate = _userinfo.BirthDate;
                _user.IsAdmin   = _userinfo.IsAdmin;
                _user.Sex       = _userinfo.Sex;
                UserInfoDal.Ins.UpdateUserinfo(_user);
            }
            else
            {
                id = UserInfoDal.Ins.AddUserInfo(_userinfo);
            }
            if (!string.IsNullOrEmpty(id))
            {
                UserInfoDal.Ins.RegisterPassword(_userinfo.UserName, _userinfo.Password);
                string key = getuserkey(id);
                _userinfo.Password = string.Empty;
                RedisBase.Item_Set(key, _userinfo);

                string openkey = getuseropenkey(_userinfo.Openid);
                RedisBase.Item_Set(openkey, _userinfo);
            }
            return(id);
        }
示例#18
0
        /// <summary>
        /// 获取微信公共号jssdk调用接口临时凭证
        /// </summary>
        /// <returns></returns>
        public static string Getjsapi_ticket()
        {
            string key = Getjsapi_ticketKey();

            if (RedisBase.ContainsKey(key))
            {
                return(RedisBase.Item_Get <string>(key));
            }
            else
            {
                string ticket       = string.Empty;
                string Access_token = GetWeChatAccess_token();
                string url          = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", Access_token);
                string resultJson   = HttpUtils.Ins.GET(url);
                Dictionary <string, object> resDic = JsonHelper.DeserializeObject(resultJson);
                if (resDic["errcode"].TryToInt(0) == 0)
                {
                    ticket = resDic["ticket"].TryToString();
                    RedisBase.Item_Set(key, ticket);
                    RedisBase.ExpireEntryAt(key, DateTime.Now.AddSeconds(resDic["expires_in"].TryToInt(7200)));
                }
                return(ticket);
            }
        }
        public async Task <IHttpActionResult> BindingWeChartCQ()
        {
            JsonResult <string> result = new JsonResult <string>();

            result.code = 0;
            result.msg  = "OK";
            await Task.Run(() => {
                string uuid      = Utils.GetWeChatUUID();
                string long_url  = WeChateSiteHelper.getCRContent(uuid);
                string cqContent = WeChatAccessTokenAPI.GetShortURL(long_url);
                if (string.IsNullOrEmpty(cqContent))
                {
                    cqContent = long_url;
                }
                string fileName = string.Format("{0}.png", uuid);
                string filePath = FileHelper.GetPicFilePath(fileName);
                if (QrCodeHelper.CreateImgCode(cqContent, filePath))
                {
                    result.code      = 1;
                    result.Result    = FileHelper.GetPicFileURL(fileName);
                    result.ResultMsg = uuid;

                    //图片记录进缓存,定期清理
                    string key = CacheKey.GetQrCodeKey(DateTime.Now);
                    RedisBase.List_Add <string>(key, filePath);
                    RedisBase.List_SetExpire(key, DateTime.Now.AddDays(2));

                    ApiUserManager userManager = new ApiUserManager(ActionContext);
                    string bindkey             = string.Format("bind_{0}", uuid);
                    RedisBase.Item_Set(bindkey, userManager.User);
                    RedisBase.ExpireEntryAt(bindkey, DateTime.Now.AddHours(1));
                }
            });

            return(Ok(result));
        }
示例#20
0
        public ActionResult CallBackRedirect()
        {
            //网络授权有有效期,最好用redis缓存
            //获取用户网络授权
            string code  = Request["code"].TryToString();
            string state = Request["state"].TryToString();

            ClassLoger.Info("WeixinRedirectController.CallBackRedirect", state, code);
            string access_token = string.Empty;
            string openid       = string.Empty;

            if (RedisBase.ContainsKey(code))
            {
                Access_tokenResult accResult = RedisBase.Item_Get <Access_tokenResult>(code);
                access_token = accResult.access_token;
                openid       = accResult.openid;
            }
            else
            {
                Access_tokenResult accResult = WeChatAccessTokenAPI.GetWeChatServiceAccess_token(code);
                RedisBase.Item_Set(code, accResult);
                RedisBase.ExpireEntryAt(code, DateTime.Now.AddSeconds(accResult.expires_in));
                access_token = accResult.access_token;
                openid       = accResult.openid;
            }

            //获取用户信息
            WeChatUserInfo userinfo = null;
            string         userkey  = getWeChatUserKey(access_token, openid);

            if (RedisBase.ContainsKey(userkey))
            {
                userinfo = RedisBase.Item_Get <WeChatUserInfo>(userkey);
            }
            else
            {
                userinfo = WeChatUserInfoAPI.GetWeChatUserInfo(access_token, openid);
                if (userinfo != null)
                {
                    RedisBase.Item_Set(userkey, userinfo);
                    RedisBase.ExpireEntryAt(userkey, DateTime.Now.AddDays(2));
                }
            }
            UserInfo _user = userbll.GetUserInfoByOpenID(userinfo.unionid);

            if (_user == null)
            {
                _user            = new UserInfo();
                _user.Openid     = userinfo.unionid;
                _user.CreateTime = DateTime.Now;
                _user.Headimgurl = userinfo.headimgurl;
                _user.Nickname   = userinfo.nickname;
                _user.Sex        = (SexEnum)userinfo.sex;
                _user.Name       = userinfo.nickname;
                _user.city       = userinfo.city;
                _user.province   = userinfo.province;
                userbll.UpdateUserinfo(_user);
            }
            ClassLoger.Info("CallBackRedirect", userkey);
            RedisSession <UserInfo> redissession = new Models.RedisSession <UserInfo>(HttpContext, true, 120);

            redissession["UserCode"] = _user;
            switch (state)
            {
            //普通用户个人中心
            case "UserCore":
                return(RedirectToAction("Index", "UserCore"));

            case "AdminCore":
            //return RedirectToAction("Index", "AdminCore");
            default:
                string url = HttpUtils.Ins.UrlDecode(state);
                if (RedisBase.ContainsKey(state))
                {
                    url = RedisBase.Item_Get <string>(state);
                }
                return(Redirect(url));
            }
        }
        public async Task <IHttpActionResult> SendSmSCode([FromBody] SendSMSCodeViewModel sendSmsCode)
        {
            JsonResult <string> result = new JsonResult <string>();

            result.code = 1;
            result.msg  = "OK";
            if (sendSmsCode == null)
            {
                result.code = 0;
                result.msg  = "参数错误";
                return(Ok(result));
            }
            string requestTimeskey = "AccountController.SendSmSCode";
            double times           = RedisBase.SortedSet_ZSCORE <string>(requestTimeskey, sendSmsCode.token);

            //if (times > 0)
            //{
            //    result.code = 0;
            //    result.msg = "验证码已失效";
            //    return Ok(result);
            //}

            if (string.IsNullOrEmpty(sendSmsCode.token) || !RedisBase.ContainsKey(sendSmsCode.token))
            {
                result.code = 0;
                result.msg  = "验证码已过期";
                return(Ok(result));
            }
            if (sendSmsCode.type == 0 && !sendSmsCode.tel.IsMobile())
            {
                result.code = 0;
                result.msg  = "invalid tel";
                return(Ok(result));
            }
            await Task.Run(() => {
                RedisBase.SortedSet_Zincrby <string>(requestTimeskey, sendSmsCode.token, 1);
                RedisBase.SortedSet_SetExpire(requestTimeskey, DateTime.Now.AddMinutes(10));

                VerCodePic codepic = RedisBase.Item_Get <VerCodePic>(sendSmsCode.token);
                if (Math.Abs(codepic.Font1.X - sendSmsCode.x1) > 0.5 || Math.Abs(codepic.Font1.Y - sendSmsCode.y1) > 0.5 ||
                    Math.Abs(codepic.Font2.X - sendSmsCode.x2) > 0.5 || Math.Abs(codepic.Font2.Y - sendSmsCode.y2) > 0.5 ||
                    Math.Abs(codepic.Font3.X - sendSmsCode.x3) > 0.5 || Math.Abs(codepic.Font3.Y - sendSmsCode.y3) > 0.5 ||
                    Math.Abs(codepic.Font4.X - sendSmsCode.x4) > 0.5 || Math.Abs(codepic.Font4.Y - sendSmsCode.y4) > 0.5)
                {
                    result.code = 0;
                    result.msg  = "验证码错误";
                }
                else
                {
                    //产生短信验证码
                    int code   = Utils.GetRandom(100000, 999999);
                    string key = cookieKey();
                    RedisBase.Item_Set(key, code.TryToString());
                    RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10));
                    string tel = sendSmsCode.tel;
                    if (sendSmsCode.type == 1)
                    {
                        tel = RedisBase.Item_Get <string>(sendSmsCode.tel);
                    }
                    bool isSend = Utils.SendSMSVCode(code.TryToString(), tel);
                    if (isSend)
                    {
                        result.Result = key;
                    }
                    else
                    {
                        result.code = 0;
                        result.msg  = "发送失败";
                    }
                }
            });

            return(Ok(result));
        }
        /// <summary>
        /// 用户确认授权
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        private void getUserinfo(string code, string state)
        {
            try
            {
                //网络授权有有效期,最好用redis缓存
                //获取用户网络授权

                string access_token = string.Empty;
                string openid       = string.Empty;
                if (RedisBase.ContainsKey(code))
                {
                    Access_tokenResult accResult = RedisBase.Item_Get <Access_tokenResult>(code);
                    access_token = accResult.access_token;
                    openid       = accResult.openid;
                }
                else
                {
                    Access_tokenResult accResult = WeChatAccessTokenAPI.GetWeChatAccess_token(code);
                    RedisBase.Item_Set(code, accResult);
                    RedisBase.ExpireEntryAt(code, DateTime.Now.AddSeconds(accResult.expires_in));
                    access_token = accResult.access_token;
                    openid       = accResult.openid;
                }

                //获取用户信息
                WeChatUserInfo userinfo = null;
                string         userkey  = getWeChatUserKey(access_token, openid);
                if (RedisBase.ContainsKey(userkey))
                {
                    userinfo = RedisBase.Item_Get <WeChatUserInfo>(userkey);
                }
                else
                {
                    userinfo = WeChatUserInfoAPI.GetWeChatUserInfo(access_token, openid);
                    if (userinfo != null)
                    {
                        RedisBase.Item_Set(userkey, userinfo);
                        RedisBase.ExpireEntryAt(userkey, DateTime.Now.AddDays(2));
                    }
                }
                WeChatUser wuser = userbll.GetWeChatUserByUnionID(userinfo.unionid);
                if (wuser == null)
                {
                    wuser = new WeChatUser();
                    wuser.PlatformOpenID = userinfo.openid;
                    wuser.UnionID        = userinfo.unionid;
                    userbll.AddWeChatUser(wuser);
                }
                else
                {
                    if (string.IsNullOrEmpty(wuser.PlatformOpenID))
                    {
                        wuser.PlatformOpenID = userinfo.openid;
                        wuser.UnionID        = userinfo.unionid;
                        userbll.UpdateWeChatUser(wuser);
                    }
                }
                UserInfoBll ubll  = new UserInfoBll();
                UserInfo    _user = ubll.GetUserInfoByOpenID(userinfo.unionid);
                // 用户绑定微信
                string bindkey = string.Format("bind_{0}", state);
                string msg     = MqttAgreement.GetWeChatLoginMA(state, true);
                if (RedisBase.ContainsKey(bindkey))
                {
                    //用户之前已经关注过微信公共号,需要把之前微信公共号账户中的信息更新到这个账户中
                    if (_user != null)
                    {
                        _user.Openid = "";
                        ubll.UpdateUserinfo(_user);
                    }
                    UserInfo binduser = RedisBase.Item_Get <UserInfo>(bindkey);
                    binduser.Openid = userinfo.unionid;
                    ubll.UpdateUserinfo(binduser);
                }
                else
                {
                    WeChatLogin login = loginbll.GetWeChatLoginByUUID(state);
                    if (login == null)
                    {
                        login            = new WeChatLogin();
                        login.UUID       = state;
                        login.CreateTime = DateTime.Now;
                        login.LoginData  = DateTime.Now.ToString("yyyy-MM-dd");
                    }
                    login.Headimgurl = userinfo.headimgurl;
                    login.Nickname   = userinfo.nickname;
                    login.Openid     = userinfo.unionid;
                    login.Sex        = userinfo.sex.TryToString();
                    login.State      = 1;
                    login.LoginData  = DateTime.Now.ToString("yyyy-MM-dd");
                    login.CreateTime = DateTime.Now;
                    loginbll.UpdateWeChatLogin(login);

                    if (_user == null)
                    {
                        _user            = new UserInfo();
                        _user.Openid     = userinfo.unionid;
                        _user.CreateTime = DateTime.Now;
                        _user.Headimgurl = userinfo.headimgurl;
                        _user.Nickname   = userinfo.nickname;
                        _user.Sex        = (SexEnum)userinfo.sex;
                        _user.Name       = userinfo.nickname;
                        _user.city       = userinfo.city;
                        _user.province   = userinfo.province;
                        ubll.UpdateUserinfo(_user);
                    }
                    //向客户端推送消息
                    MqttPublishClient.Ins.PublishOneClient(login.LockCode, msg);
                }
                MqttPublishClient.Ins.PublishAllClient(msg);
            }
            catch (Exception ex)
            {
                ClassLoger.Error("WeChatLoginCallBackController.getUserinfo", ex);
            }
        }