Exemple #1
0
 /// <summary>
 /// 获取用户信息
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public List <WXUserInfo> GetUserInfo(WXUserInfo user)
 {
     if (user.openid == null)
     {
         SqlParameter[] sp = new SqlParameter[]
         {
             new SqlParameter("@OpenId", " 1=1 ")
         };
         var result = Dapper.Helper.SQLHelper.QueryDataSet(@"select * from [dbo].[UserInfo] where 1=1", sp, CommandType.Text);
         if (result == "")
         {
             return(null);
         }
         return(result.JsonDeserialize <List <WXUserInfo> >());
     }
     else
     {
         SqlParameter[] sp = new SqlParameter[]
         {
             new SqlParameter("@OpenId", user.openid)
         };
         var result = Dapper.Helper.SQLHelper.QueryDataSet(@"select * from [dbo].[UserInfo] b where b.OpenId=@OpenId ", sp, CommandType.Text);
         if (result == "")
         {
             return(null);
         }
         return(result.JsonDeserialize <List <WXUserInfo> >());
     }
 }
        public IActionResult WXAuth(WXUserInfo info)
        {
            var        response = ResponseModelFactory.CreateInstance;
            SystemUser user     = new SystemUser();

            //string result= EWM.AES_decrypt(info.EncryptedData,info.Session_key,info.Iv);
            //return Ok(response);
            using (_dbContext)
            {
                var entity = _dbContext.SystemUser.FirstOrDefault(x => x.Wechat == info.Openid);
                if (entity == null)
                {
                    user.SystemUserUuid = Guid.NewGuid();
                    user.LoginName      = info.NickName;
                    user.RealName       = "";
                    user.Wechat         = info.Openid;
                    //授权登录的家庭用户
                    user.UserType = 5;
                    user.AddTime  = DateTime.Now.ToString("yyyy-MM-dd");
                    if (info.Sex == 0)
                    {
                        user.Sex = "未知";
                    }
                    if (info.Sex == 1)
                    {
                        user.Sex = "男";
                    }
                    if (info.Sex == 2)
                    {
                        user.Sex = "女";
                    }
                    user.Phone          = info.Phone;
                    user.IsDeleted      = 0;
                    user.SystemRoleUuid = _dbContext.SystemRole.FirstOrDefault(x => x.RoleName == "家庭用户").SystemRoleUuid.ToString();
                    _dbContext.SystemUser.Add(user);
                }
                else
                {
                    entity.LoginName = info.NickName;
                    //if (info.Sex == 0)
                    //{
                    //    entity.Sex = "未知";
                    //}
                    //if (info.Sex == 1)
                    //{
                    //    entity.Sex = "男";
                    //}
                    //if (info.Sex == 2)
                    //{
                    //    entity.Sex = "女";
                    //}
                    entity.IsDeleted = 0;
                }

                _dbContext.SaveChanges();

                response.SetSuccess("授权成功");
                return(Ok(response));
            }
        }
Exemple #3
0
        public string HaveUserInfo(WXUserInfo v)
        {
            string sql = "select count(*) from XXCLOUDVisitor.dbo.Table_WXUserInfo where OpenId = @OpenId";
            object obj;

            SqlParameter[] pms = new SqlParameter[] {
                new SqlParameter("@OpenId", SqlDbType.NVarChar)
                {
                    Value = DataHelper.IsNullReturnLine(v.OpenId)
                }
            };
            try
            {
                obj = SQLHelper.ExecuteScalar(sql, System.Data.CommandType.Text, pms);
                if (Convert.ToInt32(obj) == 1)
                {
                    return(ConvertHelper.resultJson(1, "数据库中已经存在此数据"));
                }
                else
                {
                    return(ConvertHelper.resultJson(0, "数据库中不存在此数据"));
                }
            }
            catch (Exception e)
            {
                //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常
                var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent(e.ToString()),
                    ReasonPhrase = "error"
                };
                throw new HttpResponseException(resp);
            }
        }
Exemple #4
0
    /// <summary>
    /// 微信登陆回调
    /// </summary>
    /// <param name="str"></param>
    public void onWeChatLogin(string str)
    {
        WXUserInfo wxUserInfo = JsonUtility.FromJson <WXUserInfo>(str);

        PlayerPrefs.SetString(PrefsKey.USERMAC, wxUserInfo.unionid);
        PlayerPrefs.SetString(PrefsKey.USERNAME, wxUserInfo.nickname);
        PlayerPrefs.SetString(PrefsKey.HEADURL, wxUserInfo.headimgurl);
        PlayerPrefs.SetInt(PrefsKey.SEX, int.Parse(wxUserInfo.sex));
        ApplicationFacade.Instance.SendNotification(NotificationConstant.MEDI_LOGIN_WXLOGINSUCCEED);
    }
Exemple #5
0
        //
        // GET: /Account/

        /// <summary>
        /// 绑定微信
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public ActionResult WXBind(string url)
        {
            try
            {
                JsApi jsapi = new JsApi(this);

                string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo();
                if (codeUrl != string.Empty)
                {
                    return(Redirect(codeUrl));
                }


                WXVariousApi VariousApi = new WXVariousApi();
                VariousApi.LoadWxConfigIncidentalAccess_token();
                WXUserInfo wx_userinfo = VariousApi.GetUserInfo(jsapi.openid);

                C_UserWxInfo.UnBindWxByC_UserName(CurrentUser.UserName);//解绑微信

                //用户信息,包括微信信息
                C_UserWxInfo wxInfo = C_UserWxInfo.GetInfoByOpenid(jsapi.openid);
                if (wxInfo == null)
                {
                    wxInfo                = new C_UserWxInfo();
                    wxInfo.C_UserName     = CurrentUser.UserName;
                    wxInfo.openid         = jsapi.openid;
                    wxInfo.accesstoken    = jsapi.access_token;
                    wxInfo.nickname       = wx_userinfo.nickname;
                    wxInfo.sex            = wx_userinfo.sex;
                    wxInfo.unionid        = wx_userinfo.unionid;
                    wxInfo.headimgurl     = wx_userinfo.headimgurl;
                    wxInfo.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
                    wxInfo.country        = wx_userinfo.country;
                    wxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
                    wxInfo.language       = wx_userinfo.language;
                    wxInfo.ID             = wxInfo.InsertAndReturnIdentity();//新的ID
                }
                else
                {
                    C_UserWxInfo.BindWxByC_UserName(CurrentUser.UserName, wxInfo.ID);
                }



                return(Redirect(HttpUtility.UrlDecode(url)));
            }
            catch (Exception ex)
            {
                DAL.Log.Instance.Write(ex.ToString(), "WXBind_error");
                return(View(ErrorPage.ViewName, new ErrorPage {
                    Message = "绑定微信失败"
                }));
            }
        }
        // 找回奖品
        public ContentResult RetrievePrizes(string SecurityCode)
        {
            string ResultStr = "";

            try
            {
                WXUserInfo userInfo   = new WXUserInfo();
                string     UserOpenId = "";
                if (Session["openid"] != null)
                {
                    UserOpenId = Session["openid"].ToString();
                    string ACCESS_TOKEN = Session["ACCESS_TOKEN"].ToString();

                    WXVariousApi VariousApi = new WXVariousApi();
                    userInfo = GetUserInfo(UserOpenId, ACCESS_TOKEN);
                }

                LotteryRecord lotteryRecord = LotteryRecord.GetRecByIntegralCode(SecurityCode);
                if (lotteryRecord != null && !lotteryRecord.IsNot)
                {
                    if (lotteryRecord.UserOpenId == "12345" || lotteryRecord.UserOpenId == "")
                    {
                        lotteryRecord.UserOpenId = Session["openid"].ToString();
                        lotteryRecord.UserWxName = userInfo.nickname;
                        lotteryRecord.UserWxImg  = userInfo.headimgurl;

                        int iRet = lotteryRecord.UpdateByID();
                        if (iRet > 0)
                        {
                            ResultStr = "ok";
                        }
                        else
                        {
                            ResultStr = "找回奖品失败,请联系管理员!";
                        }
                    }
                    else
                    {
                        ResultStr = "此防伪码不参与奖品找回!";
                    }
                }
                else
                {
                    ResultStr = "此防伪码没有中奖!";
                }
            }
            catch (Exception ex)
            {
                ResultStr = "找回奖品异常!error:" + ex.Message;
            }

            return(Content(ResultStr));
        }
Exemple #7
0
        public int SetUserBean(WXUserInfo bag)
        {
            SqlParameter[] sp = new SqlParameter[]
            {
                new SqlParameter("@OpenId", bag.openid),
                new SqlParameter("@BeanNum", bag.beannum),
            };
            var result = Dapper.Helper.SQLHelper.Execute(@"
            UPDATE [dbo].[UserInfo]
               SET [BeanNum] = [BeanNum]+@BeanNum
             WHERE OpenId=@OpenId", sp, CommandType.Text);

            return(result);
        }
Exemple #8
0
        public int ChangeUserStatus(WXUserInfo bag)
        {
            SqlParameter[] sp = new SqlParameter[]
            {
                new SqlParameter("@OpenId", bag.openid),
                new SqlParameter("@Invite", bag.Invite)
            };
            var result = Dapper.Helper.SQLHelper.Execute(@"
            UPDATE[dbo].[UserInfo]
               SET[Invite] =@Invite
             WHERE  [OpenId] =@OpenId", sp, CommandType.Text);

            return(result);
        }
        /// <summary>
        /// 被邀请用户首次进入公众号,绑定关系
        /// wxUser 因为获取方式不同
        /// </summary>
        /// <param name="wxMessage"></param>
        /// <param name="ownOpenId"></param>
        /// <returns></returns>
        public EUserInfo InvitedUserComing(string InvitedOpenId, string ownOpenId, WXUserInfo wxUser = null)
        {
            UserSrv   userSrv  = new UserSrv(_dbContext);
            SalesSrv  salesSrv = new SalesSrv(_dbContext);
            EUserInfo user     = null;

            try
            {
                if (wxUser == null)
                {
                    wxUser = WXApi.GetWXUserInfo(InvitedOpenId);
                }
            }
            catch (Exception ex)
            {
                NLogHelper.ErrorTxt($"businessSrv-[InvitedUserComing] -GetWXUserInfo Error:{ex.Message}");
                throw ex;
            }


            EUserInfo owner = null;

            try
            {
                //如果是老用户,不能绑定邀请
                if (!userSrv.IsExistUser(InvitedOpenId))
                {
                    owner = salesSrv.BindUser(ownOpenId, InvitedOpenId);
                }
            }
            catch (Exception ex)
            {
                NLogHelper.ErrorTxt($"businessSrv-[InvitedUserComing] -BindUser Error:{ex.Message}");
                throw ex;
            }

            try
            {
                user = userSrv.AddOrUpdateFromWXUser(wxUser, owner, false);
            }
            catch (Exception ex)
            {
                NLogHelper.ErrorTxt($"businessSrv-[InvitedUserComing] -AddOrUpdateFromWXUser Error:{ex.Message}");
                throw ex;
            }


            _dbContext.SaveChanges();
            return(user);
        }
Exemple #10
0
        public int SetUserImage(WXUserInfo bag)
        {
            SqlParameter[] sp = new SqlParameter[]
            {
                new SqlParameter("@OpenId", bag.openid),
                new SqlParameter("@HasImg", bag.hasImg),
            };
            var result = Dapper.Helper.SQLHelper.Execute(@"
            UPDATE [dbo].[UserInfo]
               SET [HasImg] = @HasImg
             WHERE OpenId=@OpenId", sp, CommandType.Text);

            return(result);
        }
Exemple #11
0
        private EUserInfo TryInvitedUserComing(string OpenId, WXUserInfo wXUser)
        {
            var       act = HttpContext.Request.Query["act"];
            EUserInfo ui  = null;

            if (act == "Invite")
            {
                string ownOpenId = HttpContext.Request.Query["OwnOpenId"];
                if (!string.IsNullOrEmpty(ownOpenId))
                {
                    ui = _BusinessSrv.InvitedUserComing(OpenId, ownOpenId, wXUser);
                }
            }
            return(ui);
        }
Exemple #12
0
        private WXUserInfo GetWXUser()
        {
            string     path   = EduEnviroment._Enviroment.WebRootPath + @"\Files\Test\wxUser.json";
            FileInfo   fi     = new FileInfo(path);
            FileStream fs     = fi.Open(FileMode.Open);
            WXUserInfo wxUser = null;

            using (StreamReader sr = new StreamReader(fs))
            {
                string json = sr.ReadToEnd();
                wxUser = JsonConvert.DeserializeObject <WXUserInfo>(json);
                fs.Close();
                fs.Dispose();
            }
            return(wxUser);
        }
Exemple #13
0
        public IActionResult WXPhone(WXUserInfo info)
        {
            var                response = ResponseModelFactory.CreateInstance;
            string             result   = EWM.AES_decrypt(info.EncryptedData, info.Session_key, info.Iv);
            UserPhoneInfoModel model    = JsonConvert.DeserializeObject <UserPhoneInfoModel>(result);

            if (model == null)
            {
                response.SetFailed();
            }
            else
            {
                response.SetData(model.purePhoneNumber);
            }
            return(Ok(response));
        }
Exemple #14
0
        public static WXUserInfo GetWXUserInfo(string OpenId, AccessToken accessToken = null)
        {
            if (accessToken == null)
            {
                accessToken = getAccessToken();
            }

            NLogHelper.InfoTxt($"[WXApi]GetWXUserInfo -- accesstoken:{accessToken}.openid:{OpenId}");
            string url_userInfo = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}",
                                                accessToken.access_token, OpenId);


            WXUserInfo wxUser = HttpHelper.Get <WXUserInfo>(url_userInfo);

            return(wxUser);
        }
Exemple #15
0
 public void OnPostInviteTec()
 {
     Msg = "创建成功!";
     try
     {
         WXUserInfo wxUser = GetWXUser();
         if (wxUser != null)
         {
             var user = _UserSrv.AddOrUpdateFromWXUser(wxUser);
             _TecSrv.NewTecFromUser(user);
         }
     }
     catch (Exception ex)
     {
         Msg = ex.Message;
     }
 }
Exemple #16
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List <WXUserInfo> GetUserInfoByPage(WXUserInfo user, int pageindex, int pagesize, out int pageCount)
        {
            Dictionary <string, string> dic    = new Dictionary <string, string>();
            List <SqlParameter>         spList = new List <SqlParameter>();
            string strWhere = string.Empty;
            string countsql = "select * from UserInfo where 1=1";
            string sql      = @"SELECT TOP " + pagesize + @" * FROM
                (
                    SELECT ROW_NUMBER() OVER (ORDER BY openid) AS RowNumber,* FROM [UserInfo]
                )   as A  
            WHERE RowNumber > " + pagesize + @"*(" + pageindex + @"-1) ";

            if (user.nickname != null)
            {
                spList.Add(new SqlParameter("@NickName", user.nickname));
                strWhere += " and NickName like '%" + user.nickname + "%' ";
            }
            spList.Add(new SqlParameter("@Invite", user.Invite));
            if (user.Invite != -1)
            {
                strWhere += " and Invite = " + user.Invite + " ";
            }


            SqlParameter[] sp          = spList.ToArray();
            SqlParameter[] spcount     = spList.ToArray();
            var            result      = Dapper.Helper.SQLHelper.QueryDataSet(sql + strWhere, sp, CommandType.Text);
            var            countresult = Dapper.Helper.SQLHelper.QueryDataSet(countsql + strWhere, spcount, CommandType.Text);

            if (countresult == "")
            {
                pageCount = 0;
            }
            else
            {
                pageCount = countresult.JsonDeserialize <List <WXUserInfo> >().Count;
            }

            if (result == "")
            {
                return(null);
            }
            return(result.JsonDeserialize <List <WXUserInfo> >());
        }
Exemple #17
0
        /// <summary>
        ///  https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
        /// </summary>
        /// <param name="openid"></param>
        /// <returns></returns>
        public static WXUserInfo GetWXUserInfo(string openid, string accessToken)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("准备获取GetWXUserInfo");
            HttpClient http   = new HttpClient();
            var        result = http.GetAsync("https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN").Result;

            if (result.StatusCode == System.Net.HttpStatusCode.OK)
            {
                WXUserInfo model = JsonConvert.DeserializeObject <WXUserInfo>(result.Content.ReadAsStringAsync().Result);
                if (model.errcode == 0)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("获取成功");
                    return(model);
                }
                Error(model);
            }

            return(null);
        }
Exemple #18
0
        public int InsertUserInfo(WXUserInfo user)
        {
            SqlParameter[] sp = new SqlParameter[]
            {
                new SqlParameter("@UserId", Guid.NewGuid()),
                new SqlParameter("@OpenId", user.openid),
                new SqlParameter("@NickName", user.nickname),
                new SqlParameter("@HeadImgUrl", user.headimgurl),
                new SqlParameter("@Country", user.country),
                new SqlParameter("@Province", user.province),
                new SqlParameter("@City", user.city),
                new SqlParameter("@Sex", user.sex),
                new SqlParameter("@HasImg", user.hasImg),
                new SqlParameter("@Invite", user.Invite),
            };
            var result = Dapper.Helper.SQLHelper.Execute(@"INSERT INTO [dbo].[UserInfo]
           ([UserId]
           ,[OpenId]
           ,[NickName]
           ,[HeadImgUrl]
           ,[Country]
           ,[Province]
           ,[City]
           ,[Sex]
           ,[HasImg]
            ,Invite)
     VALUES
           (@UserId
           ,@OpenId
           ,@NickName
           ,@HeadImgUrl
           ,@Country
           ,@Province
           ,@City
           ,@Sex
           ,@HasImg
            ,@Invite)", sp, CommandType.Text);

            return(result);
        }
        /// <summary>
        /// 通过OpenID获取微信用户信息
        /// </summary>
        /// <returns></returns>
        private WXUserInfo GetUserInfo(string openid, string ACCESS_TOKEN)
        {
            try
            {
                WxData data = new WxData();
                data.SetValue("access_token", ACCESS_TOKEN);
                data.SetValue("openid", openid);
                data.SetValue("lang", "zh_CN");
                string url = "https://api.weixin.qq.com/cgi-bin/user/info?" + data.ToUrl();

                //请求url以获取数据
                string result = WebRequestHelper.Get(url);
                //保存用户信息
                WXUserInfo wxuserinfo = JsonConvert.DeserializeObject <WXUserInfo>(result);
                DAL.Log.Instance.Write("请求:" + data.ToUrl() + ",返回:" + result, "获取微信用户信息");
                return(wxuserinfo);
            }
            catch (Exception ex)
            {
                DAL.Log.Instance.Write(ex.ToString(), "获取微信用户信息错误");
                throw new Exception(ex.ToString());
            }
        }
Exemple #20
0
        public ActionResult UpdateWx(string UserName)
        {
            C_UserWxInfo info       = C_UserWxInfo.GetInfoByC_UserName(UserName);
            WXVariousApi VariousApi = new WXVariousApi();

            VariousApi.LoadWxConfigIncidentalAccess_token();
            WXUserInfo wx_userinfo = VariousApi.GetUserInfo(info.openid);

            info.nickname       = wx_userinfo.nickname;
            info.headimgurl     = wx_userinfo.headimgurl;
            info.groupid        = wx_userinfo.groupid;
            info.C_UserName     = UserName;
            info.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
            info.country        = wx_userinfo.country;
            info.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
            info.language       = wx_userinfo.language;
            bool rtn = true;

            if (!string.IsNullOrWhiteSpace(info.nickname))
            {
                rtn = info.UpdateUserWxInfo();
            }
            return(Content(rtn ? "ok" : "更新失败"));
        }
        /// <summary>
        /// 抽奖
        /// </summary>
        /// <param name="fwm"></param>
        /// <param name="mobile"></param>
        /// <returns></returns>
        public ActionResult toPrizeDraw(int ActivityID, string fwm, string Phone, string Name)
        {
            //if (string.IsNullOrWhiteSpace(Phone))
            //{
            //    return Content("fail|手机号不能为空");
            //}
            //if (Phone.Length != 11)
            //{
            //    return Content("fail|手机号有误");
            //}
            //if (string.IsNullOrWhiteSpace(Name))
            //{
            //    return Content("fail|姓名不能为空");
            //}

            WXUserInfo userInfo = new WXUserInfo();
            //string UserOpenId = "";
            //if (Session["openid"] != null)
            //{
            //UserOpenId = Session["openid"].ToString();
            //string ACCESS_TOKEN = Session["ACCESS_TOKEN"].ToString();



            //userInfo=GetUserInfo(UserOpenId, ACCESS_TOKEN);
            //}

            WXVariousApi VariousApi = new WXVariousApi();
            string       UserOpenId = ReGetOpenId(VariousApi.WxConfig.APPID, VariousApi.WxConfig.ACCESS_TOKEN);

            userInfo = VariousApi.GetUserInfo(UserOpenId);

            PrizeAttr drawrtn = LotteryPrizes.toPrizeDraw(fwm, ActivityID, Phone, Name, UserOpenId, userInfo);

            return(Json(drawrtn, JsonRequestBehavior.AllowGet));
        }
Exemple #22
0
        public void LoginWX()
        {
            if (!string.IsNullOrEmpty(HttpContext.Request.Query["code"]))
            {
                //获取code码,以获取openid和access_token
                string code = HttpContext.Request.Query["code"];
                NLogHelper.InfoTxt($"LoginWX-Query:{HttpContext.Request.QueryString}");
                var accessToken = WXApi.GetOAuth2AccessTokenFromCode(code);
                if (!string.IsNullOrEmpty(accessToken.openid))
                {
                    string     url_userInfo = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", accessToken.access_token, accessToken.openid);
                    WXUserInfo wxUser       = HttpHelper.Get <WXUserInfo>(url_userInfo, false);

                    EUserInfo ui = TryInvitedUserComing(accessToken.openid, wxUser);
                    if (ui == null)
                    {
                        ui = _UserSrv.AddOrUpdateFromWXUser(wxUser);
                    }


                    WXLoginCallBack(ui);

                    string toPage = HttpContext.Request.Query["toPage"];
                    if (!string.IsNullOrEmpty(toPage))
                    {
                        if (toPage.Contains("/User/MyCourse") && ui.UserRole == UserRole.Teacher)
                        {
                            //  HttpContext.Response.Redirect("/Teacher/DayCourse");
                            return;
                        }
                        //微信QR支付页面
                        string amt = HttpContext.Request.Query["amt"];
                        if (!string.IsNullOrEmpty(amt))
                        {
                            var ct = HttpContext.Request.Query["ct"];
                            toPage += $"?amt={amt}&ct={ct}";
                        }
                        HttpContext.Response.Redirect(toPage);
                    }
                }
            }
            else
            {
                try
                {
                    var reUrl = $"https://edu.iqianba.cn/User/Login{Request.QueryString}";
                    //   NLogHelper.InfoTxt($"Login-reUrl:{reUrl}");
                    var       redirect_uri = System.Web.HttpUtility.UrlEncode(reUrl, System.Text.Encoding.UTF8);
                    WxPayData data         = new WxPayData();
                    data.SetValue("appid", WxConfig.APPID);
                    data.SetValue("redirect_uri", redirect_uri);
                    data.SetValue("response_type", "code");
                    data.SetValue("scope", "snsapi_userinfo");
                    data.SetValue("state", "1" + "#wechat_redirect");
                    string url = "https://open.weixin.qq.com/connect/oauth2/authorize?" + data.ToUrl();

                    HttpContext.Response.Redirect(url);
                }
                catch (Exception ex)
                {
                    NLogHelper.ErrorTxt($"LoginWX:{ex.Message}");
                }

                return;
            }
        }
        public IActionResult WXAuth(WXUserInfo info)
        {
            var        response = ResponseModelFactory.CreateInstance;
            SystemUser user     = new SystemUser();

            using (_dbContext)
            {
                var    entity  = _dbContext.SystemUser.FirstOrDefault(x => x.Wechat == info.Openid);
                string nowdate = DateTime.Now.ToString("yyyy-MM-dd");
                if (entity == null)
                {
                    user.SystemUserUuid = Guid.NewGuid();
                    user.LoginName      = info.NickName;
                    user.Nickname       = info.NickName;
                    user.RealName       = "";
                    user.Wechat         = info.Openid;
                    //授权登录的普通用户
                    user.UserType = 5;
                    user.AddTime  = DateTime.Now.ToString("yyyy-MM-dd");
                    if (info.Sex == 0)
                    {
                        user.Sex = "未知";
                    }
                    if (info.Sex == 1)
                    {
                        user.Sex = "男";
                    }
                    if (info.Sex == 2)
                    {
                        user.Sex = "女";
                    }
                    //user.Phone = info.Phone;
                    user.IsDeleted      = 0;
                    user.SystemRoleUuid = _dbContext.SystemRole.FirstOrDefault(x => x.RoleName == "微信用户").SystemRoleUuid.ToString();
                    _dbContext.SystemUser.Add(user);



                    //判断当天用户增加次数
                    //var ac = _dbContext.ActiveQuantity.FirstOrDefault(x => x.Type == 1 && x.AddTime== nowdate);
                    //if (ac == null)
                    //{
                    //    ac = new ActiveQuantity();
                    //    ac.ActiveQuantityUuid = Guid.NewGuid();
                    //    ac.AddTime = DateTime.Now.ToString("yyyy-MM-dd");
                    //    ac.Num = 1;
                    //    ac.Type = 1;
                    //    _dbContext.ActiveQuantity.Add(ac);
                    //}
                    //else
                    //{
                    //    ac.Num = ac.Num + 1;
                    //}
                }
                else
                {
                    entity.LoginName = info.NickName;
                    entity.IsDeleted = 0;

                    //判断当天用户登录次数
                    //var ac = _dbContext.ActiveQuantity.FirstOrDefault(x => x.Type == 2 && x.AddTime == nowdate);
                    //if(ac==null)
                    //{
                    //    ac = new ActiveQuantity();
                    //    ac.ActiveQuantityUuid = Guid.NewGuid();
                    //    ac.AddTime = DateTime.Now.ToString("yyyy-MM-dd");
                    //    ac.Num = 1;
                    //    ac.Type = 2;
                    //    _dbContext.ActiveQuantity.Add(ac);
                    //}
                    //else
                    //{
                    //    ac.Num = ac.Num + 1;
                    //}
                }

                _dbContext.SaveChanges();

                response.SetSuccess("授权成功");
                return(Ok(response));
            }
        }
        public IHttpActionResult Login(string code, string rawData, string signature, string encryptedData, string iv)
        {
            VMUserInfo vmUserInfo = new VMUserInfo();
            WXOpenId   wxOpenId   = JsonConvert.DeserializeObject <WXOpenId>(HttpHelper.HttpGet("https://api.weixin.qq.com/sns/jscode2session?appid=" + HttpHelper.AppId + "&secret=" + HttpHelper.AppSecret + "&js_code=" + code + "&grant_type=authorization_code"));

            //通过签名验证数据是否有效
            SHA1 sha1 = new SHA1CryptoServiceProvider();

            byte[] source = Encoding.UTF8.GetBytes(rawData + wxOpenId.session_key);
            byte[] target = sha1.ComputeHash(source);
            if (BitConverter.ToString(target).Replace("-", "").ToLower() == signature)
            {
                //解密数据
                AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
                aes.Mode      = CipherMode.CBC;
                aes.BlockSize = 128;
                aes.Padding   = PaddingMode.PKCS7;

                byte[] byte_encryptedData = Convert.FromBase64String(encryptedData);
                byte[] byte_iv            = Convert.FromBase64String(iv);
                byte[] byte_sessionKey    = Convert.FromBase64String(wxOpenId.session_key);

                aes.IV  = byte_iv;
                aes.Key = byte_sessionKey;
                ICryptoTransform transform = aes.CreateDecryptor();

                byte[]     final      = transform.TransformFinalBlock(byte_encryptedData, 0, byte_encryptedData.Length);
                WXUserInfo wxUserInfo = JsonConvert.DeserializeObject <WXUserInfo>(Encoding.UTF8.GetString(final));

                UserInfo userInfo = dbContext.UserInfos.FirstOrDefault(t => t.OpenId == wxOpenId.openid);
                if (userInfo == null)
                {
                    userInfo            = new UserInfo();
                    userInfo.Token      = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
                    userInfo.OpenId     = wxOpenId.openid;
                    userInfo.SessionKey = wxOpenId.session_key;
                    userInfo.Unionid    = wxOpenId.unionid;
                    userInfo.NickName   = wxUserInfo.nickName;
                    userInfo.Gender     = (gender)wxUserInfo.gender;
                    userInfo.City       = wxUserInfo.city;
                    userInfo.Province   = wxUserInfo.province;
                    userInfo.Country    = wxUserInfo.country;
                    userInfo.AvatarUrl  = wxUserInfo.avatarUrl;
                    userInfo.AppId      = wxUserInfo.watermark.appid;
                    userInfo.TimeStamp  = wxUserInfo.watermark.timestamp;
                    userInfo.Balance    = 299m;
                    dbContext.UserInfos.Add(userInfo);
                }
                else
                {
                    userInfo.SessionKey = wxOpenId.session_key;
                    userInfo.Unionid    = wxOpenId.unionid;
                    userInfo.NickName   = wxUserInfo.nickName;
                    userInfo.Gender     = (gender)wxUserInfo.gender;
                    userInfo.City       = wxUserInfo.city;
                    userInfo.Province   = wxUserInfo.province;
                    userInfo.Country    = wxUserInfo.country;
                    userInfo.AvatarUrl  = wxUserInfo.avatarUrl;
                    userInfo.AppId      = wxUserInfo.watermark.appid;
                    userInfo.TimeStamp  = wxUserInfo.watermark.timestamp;
                }

                dbContext.SaveChanges();
                vmUserInfo = VMUserInfo.GetVMUserInfo(userInfo);
            }

            return(Json(vmUserInfo));
        }
Exemple #25
0
        public string AddWXUserInfo(WXUserInfo v)
        {
            string sql = "select count(*) from XXCLOUDVisitor.dbo.Table_WXUserInfo where OpenId = @OpenId";
            object obj;

            SqlParameter[] pms = new SqlParameter[] {
                new SqlParameter("@OpenId", SqlDbType.NVarChar)
                {
                    Value = DataHelper.IsNullReturnLine(v.OpenId)
                }
            };
            try
            {
                obj = SQLHelper.ExecuteScalar(sql, System.Data.CommandType.Text, pms);
                if (Convert.ToInt32(obj) == 1)
                {
                    return(ConvertHelper.resultJson(1, "数据库中已经存在此数据"));
                }
                else if (Convert.ToInt32(obj) == 0)
                {
                    //return ConvertHelper.resultJson(0, "数据库中不存在此数据");
                    string sql2 = "insert into XXCLOUDVisitor.dbo.Table_WXUserInfo(NickName, Gender, City, Province, AvatarUrl, OpenId)" +
                                  "values(@NickName, @Gender, @City, @Province, @AvatarUrl, @OpenId)";
                    DateTime       dt   = DateTime.Now;
                    SqlParameter[] pms2 = new SqlParameter[] {
                        new SqlParameter("@NickName", SqlDbType.NVarChar)
                        {
                            Value = DataHelper.IsNullReturnLine(v.NickName)
                        },
                        new SqlParameter("@Gender", SqlDbType.NVarChar)
                        {
                            Value = DataHelper.IsNullReturnLine(v.Gender)
                        },
                        new SqlParameter("@City", SqlDbType.NVarChar)
                        {
                            Value = DataHelper.IsNullReturnLine(v.City)
                        },
                        new SqlParameter("@Province", SqlDbType.NVarChar)
                        {
                            Value = DataHelper.IsNullReturnLine(v.Province)
                        },
                        new SqlParameter("@AvatarUrl", SqlDbType.NVarChar)
                        {
                            Value = DataHelper.IsNullReturnLine(v.AvatarUrl)
                        },
                        new SqlParameter("@OpenId", SqlDbType.NVarChar)
                        {
                            Value = DataHelper.IsNullReturnLine(v.OpenId)
                        },
                        new SqlParameter("@CreateTime", SqlDbType.NVarChar)
                        {
                            Value = dt.ToString("yyyy-MM-dd hh:mm:ss")
                        }
                    };
                    try
                    {
                        int result = SQLHelper.ExecuteNonQuery(sql2, System.Data.CommandType.Text, pms2);
                        return(ConvertHelper.IntToJson(result));
                    }
                    catch (Exception e)
                    {
                        //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常
                        var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                        {
                            Content      = new StringContent(e.ToString()),
                            ReasonPhrase = "error"
                        };
                        throw new HttpResponseException(resp);
                    }
                }
                return(ConvertHelper.resultJson(0, "系统出错了"));
            }
            catch (Exception e)
            {
                //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常
                var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent(e.ToString()),
                    ReasonPhrase = "error"
                };
                throw new HttpResponseException(resp);
            }
        }
Exemple #26
0
        public ActionResult WXLogin(string url)
        {
            try
            {
                JsApi  jsapi   = new JsApi(this);
                string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo();
                if (codeUrl != string.Empty)
                {
                    return(Redirect(codeUrl));
                }

                //用户信息,包括微信信息
                C_UserWxVM userVM = new C_UserWxVM();
                Log.Instance.Write(jsapi.openid, "OpenID");

                userVM.LoadUserVMByOpenid(jsapi.openid);

                WXVariousApi VariousApi = new WXVariousApi();
                VariousApi.LoadWxConfigIncidentalAccess_token();
                WXUserInfo wx_userinfo = VariousApi.GetUserInfo(jsapi.openid);

                //未关注获取头像
                if (wx_userinfo.subscribe == "0")
                {
                    WXUserInfo new_Wx_UserInfo = VariousApi.GetUserInfo0(jsapi.openid, jsapi.access_token);

                    if (new_Wx_UserInfo != null)
                    {
                        wx_userinfo.nickname   = new_Wx_UserInfo.nickname;
                        wx_userinfo.sex        = new_Wx_UserInfo.sex;
                        wx_userinfo.province   = new_Wx_UserInfo.province;
                        wx_userinfo.city       = new_Wx_UserInfo.city;
                        wx_userinfo.country    = new_Wx_UserInfo.country;
                        wx_userinfo.headimgurl = new_Wx_UserInfo.headimgurl;
                        wx_userinfo.unionid    = new_Wx_UserInfo.unionid;
                    }
                }

                if (userVM == null || userVM.user == null)
                {
                    if (wx_userinfo.unionid.Length > 0)
                    {
                        userVM.LoadUserVMByunionid(wx_userinfo.unionid);
                    }
                }

                if (userVM == null || userVM.user == null)
                {
                    userVM.user       = new C_WxUser();
                    userVM.userWxInfo = new C_UserWxInfo();
                    //用户信息赋值
                    userVM.user.UserName             = "******" + (C_User.GetTopUseID() + 1 + 1000);
                    userVM.user.PassWord             = "";
                    userVM.user.IsValid              = true;
                    userVM.user.DatRegister          = DateTime.Now;
                    userVM.user.NickName             = wx_userinfo.nickname;
                    userVM.user.PortraitUrl          = wx_userinfo.headimgurl;
                    userVM.userWxInfo.openid         = jsapi.openid;
                    userVM.userWxInfo.accesstoken    = jsapi.access_token;
                    userVM.userWxInfo.nickname       = wx_userinfo.nickname;
                    userVM.userWxInfo.sex            = wx_userinfo.sex;
                    userVM.userWxInfo.unionid        = wx_userinfo.unionid;
                    userVM.userWxInfo.headimgurl     = wx_userinfo.headimgurl;
                    userVM.userWxInfo.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
                    userVM.userWxInfo.country        = wx_userinfo.country;
                    userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
                    userVM.userWxInfo.language       = wx_userinfo.language;

                    userVM.AddUser();
                    userVM.userWxInfo.C_UserName = userVM.user.UserName;
                }
                else
                {
                    userVM.user.NickName             = wx_userinfo.nickname;
                    userVM.user.PortraitUrl          = wx_userinfo.headimgurl;
                    userVM.userWxInfo.openid         = jsapi.openid;
                    userVM.userWxInfo.accesstoken    = jsapi.access_token;
                    userVM.userWxInfo.nickname       = wx_userinfo.nickname;
                    userVM.userWxInfo.sex            = wx_userinfo.sex;
                    userVM.userWxInfo.unionid        = wx_userinfo.unionid;
                    userVM.userWxInfo.headimgurl     = wx_userinfo.headimgurl;
                    userVM.userWxInfo.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
                    userVM.userWxInfo.country        = wx_userinfo.country;
                    userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
                    userVM.userWxInfo.language       = wx_userinfo.language;
                    userVM.user.UpdateByID();
                }
                string error    = string.Empty;
                string userName = userVM.user.UserName;
                userVM.userWxInfo.accesstoken    = jsapi.access_token;
                userVM.userWxInfo.nickname       = wx_userinfo.nickname;
                userVM.userWxInfo.groupid        = wx_userinfo.groupid;
                userVM.userWxInfo.headimgurl     = wx_userinfo.headimgurl;
                userVM.userWxInfo.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
                userVM.userWxInfo.country        = wx_userinfo.country;
                userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
                userVM.userWxInfo.language       = wx_userinfo.language;


                if (!string.IsNullOrWhiteSpace(userVM.userWxInfo.nickname))
                {
                    new System.Threading.Thread(delegate()
                    {
                        userVM.UpdateUserWxInfo();
                    }).Start();
                }
                Common.SetCookie("WxUserName", userName);
                DAL.Log.Instance.Write(userName + HttpUtility.UrlDecode(url) + wx_userinfo.nickname, "WXLogin_error11");
                return(Redirect(HttpUtility.UrlDecode(url)));
            }
            catch (Exception ex)
            {
                DAL.Log.Instance.Write(ex.ToString(), "WXLogin_error");
                return(View(ErrorPage.ViewName, new ErrorPage {
                    Message = ex.ToString()
                }));
            }
        }
Exemple #27
0
        //
        // GET: /xfz_home/


        public ActionResult wxlogin(string url)
        {
            try
            {
                string openid       = "";
                string access_token = "";

                if (!string.IsNullOrWhiteSpace(WeConfig.WxDebug))
                {
                    openid       = WeConfig.WxDebug;
                    access_token = "";
                }


                else
                {
                    JsApi jsapi = new JsApi(this);

                    string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo();
                    if (codeUrl != string.Empty)
                    {
                        return(Redirect(codeUrl));
                    }
                    openid       = jsapi.openid;
                    access_token = jsapi.access_token;
                }



                //用户信息,包括微信信息
                C_ConsumerWxVM userVM = new C_ConsumerWxVM();
                userVM.LoadUserVMByOpenid(openid);

                WXVariousApi VariousApi = new WXVariousApi();
                VariousApi.LoadWxConfigIncidentalAccess_token();
                WXUserInfo wx_userinfo = VariousApi.GetUserInfo(openid);



                if (wx_userinfo == null)
                {
                    wx_userinfo = new WXUserInfo();
                }



                //未关注获取头像
                if (wx_userinfo.subscribe == "0")
                {
                    WXUserInfo new_Wx_UserInfo = VariousApi.GetUserInfo0(openid, access_token);

                    if (new_Wx_UserInfo != null)
                    {
                        wx_userinfo.nickname   = new_Wx_UserInfo.nickname;
                        wx_userinfo.sex        = new_Wx_UserInfo.sex;
                        wx_userinfo.province   = new_Wx_UserInfo.province;
                        wx_userinfo.city       = new_Wx_UserInfo.city;
                        wx_userinfo.country    = new_Wx_UserInfo.country;
                        wx_userinfo.headimgurl = new_Wx_UserInfo.headimgurl;
                        wx_userinfo.unionid    = new_Wx_UserInfo.unionid;
                    }
                }



                if (userVM == null || userVM.user == null)
                {
                    string guidCode = DAL.MD5Helper.GetMD5UTF8(Request.UserHostAddress + "," + Guid.NewGuid().ToString());


                    userVM.user       = new C_Consumer();
                    userVM.userWxInfo = new C_UserWxInfo();
                    //用户信息赋值
                    userVM.user.UserName             = "******" + (C_Consumer.GetTopUseID() + 1 + 1000 + guidCode.SubStringSafe(0, 4));
                    userVM.user.Pwd                  = "";
                    userVM.user.DatReg               = DateTime.Now;
                    userVM.user.Mobile               = "";
                    userVM.user.Type                 = "消费者";
                    userVM.userWxInfo.openid         = openid;
                    userVM.userWxInfo.accesstoken    = access_token;
                    userVM.userWxInfo.nickname       = wx_userinfo.nickname;
                    userVM.userWxInfo.sex            = wx_userinfo.sex;
                    userVM.userWxInfo.unionid        = wx_userinfo.unionid;
                    userVM.userWxInfo.headimgurl     = wx_userinfo.headimgurl;
                    userVM.userWxInfo.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
                    userVM.userWxInfo.country        = wx_userinfo.country;
                    userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
                    userVM.userWxInfo.language       = wx_userinfo.language;

                    userVM.AddUser();
                    userVM.userWxInfo.C_UserName = userVM.user.UserName;
                }
                userVM.userWxInfo.C_ConsumerUserName = userVM.user.UserName;
                string error    = string.Empty;
                string userName = userVM.user.UserName;
                userVM.userWxInfo.accesstoken    = access_token;
                userVM.userWxInfo.nickname       = wx_userinfo.nickname;
                userVM.userWxInfo.groupid        = wx_userinfo.groupid;
                userVM.userWxInfo.headimgurl     = wx_userinfo.headimgurl;
                userVM.userWxInfo.subscribe      = (wx_userinfo.subscribe == "0" ? false : true);
                userVM.userWxInfo.country        = wx_userinfo.country;
                userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time);
                userVM.userWxInfo.language       = wx_userinfo.language;


                if (!string.IsNullOrWhiteSpace(userVM.userWxInfo.nickname))
                {
                    new System.Threading.Thread(delegate()
                    {
                        userVM.UpdateUserWxInfo();
                    }).Start();
                }
                Session["xfz_UserName"] = userName;
                return(Redirect(HttpUtility.UrlDecode(url)));
            }
            catch (Exception ex)
            {
                DAL.Log.Instance.Write(ex.ToString(), "WXLogin_error");
                return(View(ErrorPage.ViewName, new ErrorPage {
                    Message = ex.ToString()
                }));
            }
        }