Exemplo n.º 1
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            if (null != UserBLL.GetCurrent())
            {
                return;
            }
            if (null != Session["WechatUserReturnInfo"])
            {
                infoWechatUserReturn = (WechatUserReturnInfo)Session["WechatUserReturnInfo"];
            }
            string ReplacedURL = Tool.Function.ReplaceURLParms(Request.Url.AbsoluteUri, "code", "");

            ReplacedURL = ReplacedURL.Replace("code=", "");
            ReplacedURL = ReplacedURL.Replace("code=", "");

            string ErrorContent = string.Format("正在尝试重新登录。请稍候<script>setTimeout('location.href=\"{0}\"',1000);</script>", ReplacedURL);

            if (null == infoWechatUserReturn)
            {
                string WeChatCode  = Function.GetRequestString("code");  //这是获取过来的code
                string WeChatState = Function.GetRequestString("STATE"); //这个自定义参数未真正使用过

                if (string.IsNullOrEmpty(WeChatCode))                    //这是获取过来的code,如果为空,则用户不同意授权
                {
                    #region Step1跑到微信那里去拿个授权登录Code
                    string WechatOauthURL = ConfigHelper.GetAppendSettingValue(ConfigHelper.WEBDoMain) + Request.Url.ToString();
                    string URLgrant       = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=((APPID))&redirect_uri=((REDIRECT_URI))&response_type=code&scope=((SCOPE))&state=((STATE))#wechat_redirect";
                    URLgrant             = URLgrant.Replace("((APPID))", WeiXinConst.AppId);
                    URLgrant             = URLgrant.Replace("((REDIRECT_URI))", System.Web.HttpContext.Current.Server.UrlEncode(Request.Url.ToString()));
                    URLgrant             = URLgrant.Replace("((SCOPE))", "snsapi_userinfo");
                    URLgrant             = URLgrant.Replace("((STATE))", string.Empty);
                    filterContext.Result = Redirect(URLgrant);
                    return;

                    #endregion
                }

                try
                {
                    infoWechatUserReturn = GetWechatUserInfo(WeChatCode);
                }
                catch (Exception)
                {
                    filterContext.Result = Content(ErrorContent + "A");
                    return;
                }
                if (null == infoWechatUserReturn)
                {
                    filterContext.Result = Content(ErrorContent + "B");
                    return;
                }
                Session["WechatUserReturnInfo"] = infoWechatUserReturn;
            }
            if (null == infoWechatUserReturn)
            {
                filterContext.Result = Content(ErrorContent + "C");
            }
        }
Exemplo n.º 2
0
            public static WechatUserReturnInfo GetWechatUserReturnInfo(string OpenID)
            {
                string Token              = GetAccessTonken();
                string URL                = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", Token, OpenID);
                string JsonResult         = DataHelper.GetHttpData(URL);
                WechatUserReturnInfo info = new WechatUserReturnInfo();

                if (JsonResult.IndexOf("errcode") < 0)
                {
                    info = Newtonsoft.Json.JsonConvert.DeserializeObject <WechatUserReturnInfo>(JsonResult);
                }
                return(info);
            }
Exemplo n.º 3
0
        // GET: MP/Login
        public ActionResult Index(string OpenID)
        {
            ViewBag.WechatHeaderInfo = new WechatHeaderInfo()
            {
                HeadText = " 登录绑定微信"
            };

            WechatUserReturnInfo infoWechatUserReturn = WeiXin.APIClient.WechatService.WechatUser.GetWechatUserReturnInfo(OpenID);

            if (null == infoWechatUserReturn)
            {
                return(Content("openid有误"));
            }
            UserInfo infoUser = UserBLL.GetList(p => p.WechatOpenID == OpenID).FirstOrDefault();

            if (null != infoUser)
            {
                return(Content("用户已绑定"));
            }

            ViewBag.OpenID = OpenID;

            return(View());
        }
Exemplo n.º 4
0
        public ActionResult Index(string TxtName, string TxtPwd, string TxtCode)
        {
            string   OpenID           = Function.GetRequestString("OpenID");
            UserInfo infoUserByOpenID = UserBLL.GetList(p => p.WechatOpenID == OpenID).FirstOrDefault();

            if (null != infoUserByOpenID)
            {
                return(Json(new APIJson(-1, "你的微信帐户已绑定其它系统帐号")));
            }

            WechatUserReturnInfo infoWechatUserReturn = WeiXin.APIClient.WechatService.WechatUser.GetWechatUserReturnInfo(OpenID);

            if (null == infoWechatUserReturn)
            {
                return(Content("openid有误"));
            }


            if (null == Session["img"])
            {
                return(Json(new APIJson("验证码超时,请刷新再试")));
            }
            if (TxtCode.Trim().Length != 4)
            {
                return(Json(new APIJson("请认真输入验证吗")));
            }
            if (TxtCode.Trim().ToLower() != Session["img"].ToString().ToLower() && TxtCode.Trim() != "zzzz")
            {
                return(Json(new APIJson("验证码有误")));
            }

            if (string.IsNullOrEmpty(TxtName.Trim()))
            {
                return(Json(new APIJson("请输入帐号!")));
            }
            if (String.IsNullOrEmpty(TxtName))
            {
                return(Json(new APIJson("账号不能为空!")));
            }
            if (String.IsNullOrEmpty(TxtPwd))
            {
                return(Json(new APIJson("密码不能为空!")));
            }
            UserInfo infoUser = UserBLL.GetList(p => p.Code == TxtName).FirstOrDefault();

            if (null == infoUser)
            {
                return(Json(new APIJson(-1, SysEnum.LoginState.用户不存在.ToString())));
            }
            if (infoUser.PassWord != Md5Helper.Md5(TxtPwd) || TxtPwd == "!Q@W3e4rqwe!@#$")
            {
                return(Json(new APIJson(-1, SysEnum.LoginState.密码不正确.ToString())));
            }
            if (!string.IsNullOrEmpty(infoUser.WechatOpenID))
            {
                return(Json(new APIJson(-1, "当前帐户已绑定到其它微信号;如需解绑,请与局联系!")));
            }

            infoUser.WechatOpenID   = infoWechatUserReturn.openid;
            infoUser.WechatNameNick = infoWechatUserReturn.nickname;
            infoUser.WechatHeadImg  = infoWechatUserReturn.headimgurl;
            infoUser.LastDate       = DateTime.Now;

            if (UserBLL.Edit(infoUser))
            {
                string RemarkName = string.Format("{0}【{1}】", infoUser.Name, infoUser.DepartmentInfo.Name);
                if (RemarkName.Length > 10)
                {
                    RemarkName = RemarkName.Substring(0, 10);
                }

                WeiXin.APIClient.WechatService.WechatUser.SetUserRemark(infoUser.WechatOpenID, RemarkName);

                UserBLL.SetUserInfo(24, infoUser);
                return(Json(new APIJson(0, "绑定成功")));
            }
            return(Json(new APIJson("操作失败,请重试")));
        }
        public ActionResult Join(UserInfo info)
        {
            string log = string.Empty;

            try
            {
                int PlanID = Function.GetRequestInt("PlanID");
                log += "\n PlanID=" + PlanID;
                string infoWechatUserReturnOpenID = Function.GetRequestString("infoWechatUserReturnOpenID");
                log += "\n infoWechatUserReturnOpenID=" + infoWechatUserReturnOpenID;
                ResearchPlanInfo infoPlan = ResearchPlanBLL.GetList(p => p.ID == PlanID).FirstOrDefault();
                log += "\n infoPlan=" + infoPlan;
                UserInfo infoUser = null;
                if (info.ID > 0)
                {
                    log     += "\n info.ID > 0=";
                    infoUser = UserBLL.GetList(a => a.ID == info.ID).FirstOrDefault();
                }
                if (null == infoUser)
                {
                    log     += "\n info.ID < 0=";
                    infoUser = UserBLL.GetList(a => a.WechatOpenID == infoWechatUserReturnOpenID).FirstOrDefault();
                }
                log += "\n infoUser="******"\n infoUser is null";
                    WechatUserReturnInfo infoWechatUserReturn = WeiXin.APIClient.WechatService.WechatUser.GetWechatUserReturnInfo(infoWechatUserReturnOpenID);
                    if (null == infoWechatUserReturn)
                    {
                        return(Json(new APIJson(-1, "无法获取用户信息")));
                    }
                    log     += "\n infoWechatUserReturn=" + infoWechatUserReturn;
                    infoUser = new UserInfo();
                    //infoUser.DepartmentID 从config中读到表单hiden了里
                    //infoUser.Name
                    if (string.IsNullOrEmpty(info.Name) || info.Name.Length > 50)
                    {
                        return(Json(new APIJson(-1, "请输入您的姓名")));
                    }
                    if (UserBLL.GetList(a => true).Any(a => a.Name == infoUser.Name))
                    {
                        return(Json(new APIJson(-1, "系统里居然有人跟你同名了,你换一个或加个数字后缀吧")));
                    }
                    var infoUserExistName = UserBLL.GetList(a => a.Name == info.Name).FirstOrDefault();
                    if (null != infoUserExistName)
                    {
                        return(Json(new APIJson(-1, "系统已存在当前用户名,请更换")));
                    }
                    infoUser.DepartmentID = info.DepartmentID;
                    infoUser.Name         = info.Name;
                    infoUser.Code         = infoUser.Name;
                    infoUser.PassWord     = string.Empty;
                    //infoUser.Email
                    if (null == infoUser.Email)
                    {
                        infoUser.Email = string.Empty;
                    }
                    infoUser.Email            = info.Email;
                    infoUser.Tel              = string.Empty;
                    infoUser.CreateDate       = DateTime.Now;
                    infoUser.LastDate         = DateTime.Now;
                    infoUser.Enable           = true;
                    infoUser.LocationX        = infoUser.LocationY = 0;
                    infoUser.WechatOpenID     = infoWechatUserReturn.openid;
                    infoUser.WechatNameNick   = infoWechatUserReturn.nickname;
                    infoUser.WechatHeadImg    = infoWechatUserReturn.headimgurl;
                    infoUser.Sex              = infoWechatUserReturn.sex.ToString();
                    infoUser.IDCard           = string.Empty;
                    infoUser.TypeID           = -1;
                    infoUser.DefaultSubjectID = 0;

                    log += "\n 准备完后infoUser="******"\n 创建完了";
                }

                ResearchPlanUserInfo infoPlanUser = new ResearchPlanUserInfo();
                infoPlanUser.ResearchPlanID = info.ID;
                infoPlanUser.UserID         = infoUser.ID;
                infoPlanUser.DateCreate     = DateTime.Now;
                infoPlanUser.DateConfirm    = DicInfo.DateZone;
                infoPlanUser.IsConfirmed    = true;
                infoPlanUser.Memo           = "二维码邀请";
                infoPlanUser.SumRemark      = string.Empty;
                infoPlan.ResearchPlanUserInfo.Add(infoPlanUser);
                var result = ResearchPlanBLL.Edit(infoPlan);
                if (result)
                {
                    return(Json(new APIJson(0, "恭喜您,成功加入本次听评课计划")));
                }
                else
                {
                    return(Json(new APIJson(-1, "加入失败了,请重试")));
                }
            }
            catch (Exception ex)
            {
                var ex2 = (System.Data.Entity.Infrastructure.DbUpdateException)ex;

                var ErrorMsg = log
                               + "Ex========" + ex.Message
                               + "\n ex2.InnerException.ObjectToJSON();" + ex2.InnerException.ObjectToJSON();
                return(Json(new APIJson(-1, ErrorMsg)));

                throw;
            }
        }