Пример #1
0
        public ActionResult WMall()
        {
            try
            {
                FansInfo Fans = Session["FansInfo"] as FansInfo;
                //Fans.Openid = "oDRuD1A65qVf-QjFFpdnQccRo7HA";
                Entity.Entities.HmjMemberDetail result = _hmjMember.GetMemberDetailByOpenId(Fans.Openid);

                //如果是未注册用户
                if (result == null)
                {
                    return(Redirect(ConfigurationManager.AppSettings["WebUrl"] + "/hmjmember/tozhuce.do"));
                }
                #region 获取用户信息并进行封装后跳转
                //拼接参数
                var code     = ConfigurationManager.AppSettings["WMallCode"];
                var queryStr = $"userId={result.MEMBERNO}&code={code}&phone={result.MOBILE}&username={result.NAME}";
                // 私钥加密 并进行urlencode
                var sign = HttpUtility.UrlEncode(RSAUtils.RSAEncryptByPrivateKey("", queryStr));
                #endregion

                return(Redirect(ConfigurationManager.AppSettings["WMallUrl"] + "?r=" + sign));
            }
            catch (System.Exception ex)
            {
                ViewBag.MyMessage = ex.ToString();
                return(View());
            }
        }
Пример #2
0
        public ActionResult ToZhuce()
        {
            try
            {
                FansInfo Fans = Session["FansInfo"] as FansInfo;
                //Dictionary<string, string> dic = new Dictionary<string, string>();
                logger.Fatal("Fans.Openid:" + Fans.Openid + "<br/>Fans.Nickname:" + Fans.Nickname);
                //dic.Add("openid", Fans.Openid);

                //将验证是否绑定的方法改为同步,因为如果发起请求会因为接口超时的问题而进入异常,则页面始终报错
                bool isok = _hmjMember.ChckBind(Fans.Openid);

                //JsonDTO<bool> result = RequestHelp.RequestGet<bool>("Member/ChckBind", dic).Result;
                string json = JsonConvert.SerializeObject(Fans);

                //JsonDTO<LogResponse> log = RequestHelp.RequestPost<LogResponse, LogRequest>("User/AddLog",
                //  new LogRequest() { Title = "ToZhuCe", MsgType = "Message", MsgContent = json.Replace('\"', '\'') }).Result;

                //if (result.Data)
                if (isok)
                {
                    return(Redirect(ConfigurationManager.AppSettings["WebUrl"] + "/assets/hmjweixin/html/user.html?obj=" +
                                    Server.UrlEncode(json)));
                }

                ViewBag.FansInfo = json;

                return(View());
            }
            catch (System.Exception)
            {
                ViewBag.ErrorInfo = "系统繁忙,请刷新后重试";
                return(View());
            }
        }
Пример #3
0
        public ActionResult Zhuanjia()
        {
            try
            {
                FansInfo Fans = Session["FansInfo"] as FansInfo;
                Dictionary <string, string> dic = new Dictionary <string, string>();
                logger.Fatal(Fans.Openid);
                dic.Add("openid", Fans.Openid);

                JsonDTO <bool> result = RequestHelp.RequestGet <bool>("Member/ChckBind", dic).Result;
                string         json   = JsonConvert.SerializeObject(Fans);

                ViewBag.FansInfo = false;

                //如果是注册用户
                if (result.Data)
                {
                    ViewBag.FansInfo = true;
                }
                return(View());


                //return Redirect(ConfigurationManager.AppSettings["WebUrl"] + "/hmjmember/tozhuce.do");
            }
            catch (System.Exception)
            {
                return(View());
            }
        }
Пример #4
0
        private FansInfo  FillList(IDataReader dataReader)
        {
            FansInfo model = new FansInfo();
            object   ojb;

            ojb = dataReader["Id"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.Id = ( int)(ojb);
            }
            ojb = dataReader["StarId"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.StarId = ( int)(ojb);
            }
            ojb = dataReader["FansId"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.FansId = ( int)(ojb);
            }
            ojb = dataReader["CreateDate"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.CreateDate = ( DateTime)(ojb);
            }
            ojb = dataReader["CreateIP"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.CreateIP = ( string)(ojb);
            }

            return(model);
        }
Пример #5
0
 public void MergeFrom(AcfunActionSignalJoinClub other)
 {
     if (other == null)
     {
         return;
     }
     if (other.fansInfo_ != null)
     {
         if (fansInfo_ == null)
         {
             FansInfo = new global::AcFunDanmu.AcFunUserInfo();
         }
         FansInfo.MergeFrom(other.FansInfo);
     }
     if (other.uperInfo_ != null)
     {
         if (uperInfo_ == null)
         {
             UperInfo = new global::AcFunDanmu.AcFunUserInfo();
         }
         UperInfo.MergeFrom(other.UperInfo);
     }
     if (other.JoinTimeMs != 0L)
     {
         JoinTimeMs = other.JoinTimeMs;
     }
     _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
 }
Пример #6
0
        /// <summary>
        /// 绑定
        /// </summary>
        /// <returns></returns>
        public ActionResult BindMember()
        {
            JsonSMsg msg = new JsonSMsg();

            try
            {
                string   mobile   = Request["mobile"];
                FansInfo fansinfo = Session["FansInfo"] as FansInfo;

                if (fansinfo == null)
                {
                    msg.Status  = 0;
                    msg.Message = "请重新加载该页面";
                    return(Json(msg));
                }

                string str = _custMember.BindMember(mobile, fansinfo.Openid, fansinfo.Nickname);

                if (str == "2")
                {
                    msg.Status  = 0;
                    msg.Message = "对不起,您要绑定的手机号已经存在!";
                    return(Json(msg));
                }

                if (str == "3")
                {
                    msg.Status  = 0;
                    msg.Message = "系统未记录您的信息,请重新关注该公众号!";
                    return(Json(msg));
                }

                if (str == "4")
                {
                    msg.Status  = 4;
                    msg.Message = "您还没有注册,请前往注册会员!";
                    return(Json(msg));
                }

                if (str == "5")
                {
                    msg.Status  = 0;
                    msg.Message = "您好,您的手机号对应多个会员账号,请联系客服!";
                    return(Json(msg));
                }

                msg.Status  = 1;
                msg.Message = "绑定成功";
                return(Json(msg));
            }
            catch (Exception ex)
            {
                msg.Status  = 0;
                msg.Message = "对不起网络有问题,请关闭当前页面重新进入:" + ex.Message;
                return(Json(msg));
            }
        }
Пример #7
0
        public ActionResult ShowPointHistory()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            PointHistory dyn = _custMember.GetPointHistory(Fans.Openid);


            ViewBag.History = dyn;
            return(View());
        }
Пример #8
0
        //[IsLogin(true)]
        public ActionResult ShowPer()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            Fans = Fans == null ? new FansInfo()
            {
                Nickname = "当前粉丝异常"
            } : Fans;

            return(Redirect($@"https://www.sobot.com/chat/h5/index.html?sysNum=f6736c79af394a31b88fe19b59e589e7&source=1&uname={Fans.Nickname}&face={Fans.Headimgurl}"));
        }
Пример #9
0
        public ActionResult ShowMemberDetail()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            MemberInfo meberinfo = _custMember.GetMemberInfo(Fans.Openid);

            meberinfo.Nickname   = Fans.Nickname;
            meberinfo.Headimgurl = Fans.Headimgurl;

            return(View(meberinfo));
        }
Пример #10
0
        public bool Delete(FansInfo model)
        {
            Database      db = DBHelper.CreateDataBase();
            StringBuilder sb = new StringBuilder();

            sb.Append("delete from Fans");
            sb.Append(" where Id=@Id");
            DbCommand dbCommand = db.GetSqlStringCommand(sb.ToString());

            db.AddInParameter(dbCommand, "@Id", DbType.Int32, model.Id);
            return(db.ExecuteNonQuery(dbCommand) < 1 ? false : true);
        }
Пример #11
0
        /// <summary>
        /// 获取微信信息
        /// </summary>
        /// <returns></returns>
        public ActionResult GetWxToke()
        {
            FansInfo infos = Session["FansInfo"] as FansInfo;

            if (infos == null)
            {
                //return Json("");
                infos = new FansInfo();
            }

            return(Json(infos));
        }
Пример #12
0
        public ActionResult ShowPointToGift()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            if (!_custMember.ChckBind(Fans.Openid))
            {
                //如果该粉丝已经绑定了会员,则直接进入到会员详情界面
                return(Redirect("Index.do"));
            }

            return(View());
        }
Пример #13
0
        public ActionResult ShowMemberInfo()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            //该方法先获取接口里面会员信息,然后更新本地会员信息(这样后续的会员更新等就不需要连续调用会员主数据接口了)
            MemberInfo meberinfo = _custMember.GetLoadMember(Fans.Openid);

            meberinfo.Headimgurl = Fans.Headimgurl;
            meberinfo.Nickname   = Fans.Nickname;

            return(View(meberinfo));
        }
Пример #14
0
        public ActionResult Index()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            string vono = Request["ZCP_NUM"];

            ViewBag.No = vono;

            //该方法先获取接口里面会员信息,然后更新本地会员信息(这样后续的会员更新等就不需要连续调用会员主数据接口了)
            MemberInfo meberinfo = _custMember.GetMemberInfo(Fans.Openid);

            return(View(meberinfo));
        }
Пример #15
0
        public ActionResult ShowRegister()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            //手机号
            string mobile = Request["mobile"];

            ViewBag.Mobile   = mobile;
            ViewBag.Openid   = Fans.Openid;
            ViewBag.NickName = Fans.Nickname;
            ViewBag.Gender   = Fans.Gender;
            return(View());
        }
Пример #16
0
        public ActionResult ShowCoupon()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            if (!_custMember.ChckBind(Fans.Openid))
            {
                //如果该粉丝已经绑定了会员,则直接进入到会员详情界面
                return(Redirect("Index.do"));
            }

            MEMBER_COUPON dyn = _custMember.GetCoupon(Fans.Openid);

            return(View(dyn));
        }
Пример #17
0
        public ActionResult ShowBookHis()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            MemberInfo meberinfo = _custMember.GetMemberInfo(Fans.Openid);

            List <HMJ_BOOK_EX> books = _book.GetBooks(meberinfo.Member_Id);

            foreach (HMJ_BOOK_EX item in books)
            {
                item.BOOK_DATE_EX = item.BOOK_DATE.Value.ToString("yyyy-MM-dd");
            }

            ViewBag.NewBook = books;
            return(View());
        }
Пример #18
0
        public bool Update(FansInfo model)
        {
            Database      db = DBHelper.CreateDataBase();
            StringBuilder sb = new StringBuilder();

            sb.Append("update Fans set ");
            sb.Append("StarId=@StarId,FansId=@FansId,CreateDate=@CreateDate,CreateIP=@CreateIP");
            sb.Append(" where Id=@Id");
            DbCommand dbCommand = db.GetSqlStringCommand(sb.ToString());

            db.AddInParameter(dbCommand, "@Id", DbType.Int32, model.Id);
            db.AddInParameter(dbCommand, "@StarId", DbType.Int32, model.StarId);
            db.AddInParameter(dbCommand, "@FansId", DbType.Int32, model.FansId);
            db.AddInParameter(dbCommand, "@CreateDate", DbType.DateTime, model.CreateDate);
            db.AddInParameter(dbCommand, "@CreateIP", DbType.String, model.CreateIP);
            return(db.ExecuteNonQuery(dbCommand) < 1 ? false : true);
        }
Пример #19
0
        public ActionResult Index()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            Fans = Fans == null ? new FansInfo()
            {
                Nickname = "当前粉丝异常"
            } : Fans;

            if (_custMember.ChckBind(Fans.Openid))
            {
                //如果该粉丝已经绑定了会员,则直接进入到会员详情界面
                return(Redirect("ShowMemberInfo.do"));
            }

            return(View(Fans));
        }
Пример #20
0
        public ActionResult LQCoupon()
        {
            try
            {
                FansInfo Fans = Session["FansInfo"] as FansInfo;
                Dictionary <string, string> dic = new Dictionary <string, string>();
                logger.Fatal(Fans.Openid);
                dic.Add("openid", Fans.Openid);

                ViewBag.OpenId = Fans.Openid;

                return(View());
            }
            catch (System.Exception)
            {
                return(View());
            }
        }
Пример #21
0
        public ActionResult Index()
        {
            FansInfo Fans = Session["FansInfo"] as FansInfo;

            if (!_custMember.ChckBind(Fans.Openid))
            {
                //如果该粉丝已经绑定了会员,则直接进入到会员详情界面
                return(Redirect("/BcjMember/Index.do"));
            }

            MemberInfo meberinfo = _custMember.GetMemberInfo(Fans.Openid, "");

            ViewBag.MemberID = meberinfo.Member_Id;

            ViewBag.GropuID = "1";

            return(View());
        }
Пример #22
0
        public int Create(FansInfo model)
        {
            Database      db = DBHelper.CreateDataBase();
            StringBuilder sb = new StringBuilder();

            sb.Append("insert into Fans(");
            sb.Append("StarId,FansId,CreateDate,CreateIP");
            sb.Append(") values(");
            sb.Append("@StarId,@FansId,@CreateDate,@CreateIP);SELECT @@IDENTITY;");
            DbCommand dbCommand = db.GetSqlStringCommand(sb.ToString());

            db.AddInParameter(dbCommand, "@StarId", DbType.Int32, model.StarId);
            db.AddInParameter(dbCommand, "@FansId", DbType.Int32, model.FansId);
            db.AddInParameter(dbCommand, "@CreateDate", DbType.DateTime, model.CreateDate);
            db.AddInParameter(dbCommand, "@CreateIP", DbType.String, model.CreateIP);
            int id = Convert.ToInt32(db.ExecuteScalar(dbCommand));

            return(id);
        }
Пример #23
0
        public FansInfo  Get(int Id)
        {
            Database      db = DBHelper.CreateDataBase();
            StringBuilder sb = new StringBuilder();

            sb.Append("select * from Fans where Id=@Id");
            DbCommand dbCommand = db.GetSqlStringCommand(sb.ToString());

            db.AddInParameter(dbCommand, "@Id", DbType.Int32, Id);

            FansInfo model = null;

            using (IDataReader dataReader = db.ExecuteReader(dbCommand))
            {
                if (dataReader.Read())
                {
                    model = FillList(dataReader);
                }
            }
            return(model);
        }
Пример #24
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (fansInfo_ != null)
            {
                hash ^= FansInfo.GetHashCode();
            }
            if (uperInfo_ != null)
            {
                hash ^= UperInfo.GetHashCode();
            }
            if (JoinTimeMs != 0L)
            {
                hash ^= JoinTimeMs.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Пример #25
0
        /// <summary>
        /// 检查好友
        /// </summary>
        private void CheckFriends()
        {
            var entities = FormulaHelper.GetEntities <CommonEntities>();

            while (true)
            {
                try
                {
                    if (fansQueue.Count > 0)
                    {
                        #region 加载联系人信息并发送开始提示信息
                        foreach (var item in fansQueue.Where(c => c.State == 3))
                        {
                            try
                            {
                                #region 加载并保存用户信息
                                CookieContainer cc = item.Cookies;
                                IDictionary <string, string> synckey = new Dictionary <string, string>();
                                JObject init_result = WxService.WxInit(ref cc, item.PassTicket, ref synckey);
                                item.SyncKey = synckey;
                                if (init_result == null)
                                {
                                    continue;
                                }
                                else if (init_result["BaseResponse"]["Ret"].ToString() == LogoutErrorCode)
                                {
                                    FinishFans(item, LoginErrorTimeMessage);
                                }
                                else
                                {
                                    var fansinfo = entities.Set <FansInfo>().Where(c => c.OpenID == item.OpenID).FirstOrDefault();
                                    if (fansinfo == null)
                                    {
                                        fansinfo            = new FansInfo();
                                        fansinfo.ID         = FormulaHelper.CreateGuid();
                                        fansinfo.OpenID     = item.OpenID;
                                        fansinfo.NickName   = init_result["User"]["NickName"].ToString();
                                        fansinfo.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString();
                                        fansinfo.RemarkName = init_result["User"]["RemarkName"].ToString();
                                        fansinfo.Sex        = int.Parse(init_result["User"]["Sex"].ToString());
                                        fansinfo.Signature  = init_result["User"]["Signature"].ToString();
                                        fansinfo.VerifyFlag = int.Parse(init_result["User"]["VerifyFlag"].ToString());
                                        fansinfo.SnsFlag    = int.Parse(init_result["User"]["SnsFlag"].ToString());
                                        entities.Set <FansInfo>().Add(fansinfo);
                                    }
                                    else
                                    {
                                        fansinfo.NickName   = init_result["User"]["NickName"].ToString();
                                        fansinfo.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString();
                                        fansinfo.RemarkName = init_result["User"]["RemarkName"].ToString();
                                        fansinfo.Sex        = int.Parse(init_result["User"]["Sex"].ToString());
                                        fansinfo.Signature  = init_result["User"]["Signature"].ToString();
                                        fansinfo.VerifyFlag = int.Parse(init_result["User"]["VerifyFlag"].ToString());
                                        fansinfo.SnsFlag    = int.Parse(init_result["User"]["SnsFlag"].ToString());
                                    }
                                }
                                JObject contact_result = WxService.GetContact(ref cc);
                                if (init_result == null)
                                {
                                    continue;
                                }
                                else if (init_result["BaseResponse"]["Ret"].ToString() == LogoutErrorCode)
                                {
                                    FinishFans(item, LoginErrorTimeMessage);
                                }
                                else
                                {
                                    entities.Set <FansFriends>().Delete(c => c.OpenID == item.OpenID);
                                    item.Friends = new List <FansFriend>();
                                    foreach (JObject contact in contact_result["MemberList"])  //完整好友名单
                                    {
                                        var user = new FansFriends();
                                        user.ID          = FormulaHelper.CreateGuid();
                                        user.OpenID      = item.OpenID;
                                        user.NickName    = contact["NickName"].ToString();
                                        user.HeadImgUrl  = contact["HeadImgUrl"].ToString();
                                        user.ContactFlag = int.Parse(contact["ContactFlag"].ToString());
                                        user.RemarkName  = contact["RemarkName"].ToString();
                                        user.Sex         = int.Parse(contact["Sex"].ToString());
                                        user.Signature   = contact["Signature"].ToString();
                                        user.VerifyFlag  = int.Parse(contact["VerifyFlag"].ToString());
                                        user.StarFriend  = int.Parse(contact["StarFriend"].ToString());
                                        user.Province    = contact["Province"].ToString();
                                        user.City        = contact["City"].ToString();
                                        user.Alias       = contact["Alias"].ToString();
                                        user.SnsFlag     = int.Parse(contact["SnsFlag"].ToString());
                                        user.KeyWord     = contact["KeyWord"].ToString();
                                        entities.Set <FansFriends>().Add(user);
                                        var username = contact["UserName"].ToString();
                                        if (user.VerifyFlag == 0 && !SpecialUsers.Contains(username) && !username.Contains("@@") && username != init_result["User"]["UserName"].ToString())
                                        {
                                            FansFriend ff = new FansFriend();
                                            ff.UserName = username;
                                            ff.NickName = string.IsNullOrEmpty(user.RemarkName) ? user.NickName : user.RemarkName;
                                            ff.State    = 0;
                                            item.Friends.Add(ff);
                                        }
                                    }
                                }
                                item.Cookies = cc;
                                item.SyncKey = synckey;
                                try
                                {
                                    entities.SaveChanges();
                                }
                                catch (DbEntityValidationException dbEx)
                                {
                                    LogWriter.Error(dbEx);
                                    throw dbEx;
                                }
                                #endregion

                                #region 发送微信登录提示信息
                                if (!string.IsNullOrEmpty(CheckStartMessage))
                                {
                                    try
                                    {
                                        SendWxMsg(item.OpenID, string.Format(CheckStartMessage, item.Friends.Count, (item.Friends.Count / CheckFriendsCount) + 1));
                                    }
                                    catch
                                    {
                                        item.WxErrorCount++;
                                        throw;
                                    }
                                }
                                #endregion

                                #region 更新用户状态
                                item.State = 4;
                                var ety = entities.Set <FansLogin>().Find(item.LoginID);
                                if (ety != null)
                                {
                                    ety.IsLogin   = true;
                                    ety.LoginTime = DateTime.Now;
                                    entities.SaveChanges();
                                }
                                #endregion
                            }
                            catch (Exception ex)
                            {
                                LogWriter.Error(ex);
                            }
                        }
                        #endregion

                        #region 检查好友状态
                        foreach (var item in fansQueue.Where(c => c.State == 4))
                        {
                            //每次拉群的时间间隔都要超过30秒,不然微信不让调用网页版接口
                            if (item.LastCheckTime.AddSeconds(CheckFriendsSingleTime) > DateTime.Now)
                            {
                                continue;
                            }
                            CookieContainer cc   = item.Cookies;
                            JObject         temp = null;
                            #region 添加好友
                            if (item.ChartRoomUsers.Count() == 0)
                            {
                                var checkfriends = item.Friends.Where(c => c.State == 0).Take(CheckFriendsCount);

                                if (string.IsNullOrEmpty(item.ChartRoomName))
                                {
                                    temp = WxService.CreateRoom(checkfriends.Select(c => c.UserName).ToList(), ref cc, item.SKey, item.PassTicket);
                                    item.LastCheckTime = DateTime.Now;
                                    item.Cookies       = cc;
                                    if (temp["BaseResponse"]["Ret"].ToString() == "0")
                                    {
                                        item.ChartRoomName  = temp["ChatRoomName"].ToString();
                                        item.ChartRoomUsers = checkfriends.Select(c => c.UserName).ToList();
                                    }
                                    //操作太频繁
                                    else if (temp["BaseResponse"]["Ret"].ToString() == "1" || temp["BaseResponse"]["ErrMsg"].ToString().Contains("频"))
                                    {
                                        FinishFans(item, WebMaxErrorMsg);
                                    }
                                    else
                                    {
                                        item.WebErrorCount++;
                                        continue;
                                    }
                                }
                                else
                                {
                                    temp = WxService.AddMember(item.ChartRoomName, checkfriends.Select(c => c.UserName).ToList(), ref cc, item.SKey, item.PassTicket);
                                    item.LastCheckTime = DateTime.Now;
                                    if (temp["BaseResponse"]["Ret"].ToString() == "0")
                                    {
                                        item.ChartRoomName  = temp["ChatRoomName"].ToString();
                                        item.ChartRoomUsers = checkfriends.Select(c => c.UserName).ToList();
                                    }
                                    //操作太频繁
                                    else if (temp["BaseResponse"]["Ret"].ToString() == "1" || temp["BaseResponse"]["ErrMsg"].ToString().Contains("频"))
                                    {
                                        FinishFans(item, WebMaxErrorMsg);
                                    }
                                    else
                                    {
                                        item.WebErrorCount++;
                                        continue;
                                    }
                                }

                                item.Cookies = cc;
                                foreach (JObject obj in temp["MemberList"])
                                {
                                    if (obj["MemberStatus"].ToString() == "4")
                                    {
                                        item.Friends.Where(c => c.UserName == obj["UserName"].ToString()).AsQueryable().Update(c => c.State = 3);
                                    }
                                    else if (obj["MemberStatus"].ToString() == "3")
                                    {
                                        item.Friends.Where(c => c.UserName == obj["UserName"].ToString()).AsQueryable().Update(c => c.State = 2);
                                    }
                                    else
                                    {
                                        item.Friends.Where(c => c.UserName == obj["UserName"].ToString()).AsQueryable().Update(c => c.State = 1);
                                    }
                                }
                            }
                            #endregion
                            #region 移除好友
                            else
                            {
                                temp = WxService.DeleteMember(item.ChartRoomName, item.ChartRoomUsers, ref cc, item.SKey, item.PassTicket);
                                item.LastCheckTime = DateTime.Now;
                                if (temp["BaseResponse"]["Ret"].ToString() == "0")
                                {
                                    item.ChartRoomUsers.Clear();
                                }
                                //操作太频繁
                                else if (temp["BaseResponse"]["Ret"].ToString() == "1" || temp["BaseResponse"]["ErrMsg"].ToString().Contains("频"))
                                {
                                    FinishFans(item, WebMaxErrorMsg);
                                }
                                else
                                {
                                    item.WebErrorCount++;
                                }
                                if (item.Friends.All(c => c.State != 0))
                                {
                                    WxService.Logout(ref cc, item.SKey);
                                    var delete = item.Friends.Count(c => c.State == 3);
                                    var block  = item.Friends.Count(c => c.State == 2);
                                    if (delete == 0 && block == 0)
                                    {
                                        FinishFans(item, CheckGoodMessage);
                                    }
                                    else
                                    {
                                        FinishFans(item, string.Format(CheckGoodMessage
                                                                       , delete == 0 ? "没有" : string.Join(",", item.Friends.Where(c => c.State == 3).Select(c => c.NickName))
                                                                       , block == 0 ? "没有" : string.Join(",", item.Friends.Where(c => c.State == 2).Select(c => c.NickName))));
                                    }
                                }
                            }
                            #endregion
                            item.Cookies = cc;
                        }
                        #endregion

                        #region 检查登录状态
                        foreach (var item in fansQueue.Where(c => c.State == 4))
                        {
                            CookieContainer cc = item.Cookies;
                            IDictionary <string, string> synckey = item.SyncKey;
                            var sync_flag = WxService.WxSyncCheck(ref cc, ref synckey, item.SKey);
                            if (sync_flag == LogoutErrorJS)
                            {
                                FinishFans(item, LoginErrorTimeMessage);
                            }
                            else
                            {
                                item.Cookies = cc;
                                item.SyncKey = synckey;
                            }
                            if (item.WxErrorCount > InterfaceMaxError)
                            {
                                FinishFans(item, "");
                            }
                            if (item.WebErrorCount > InterfaceMaxError)
                            {
                                FinishFans(item, WebMaxErrorMsg);
                            }
                        }
                        foreach (var item in fansQueue.Where(c => new int[] { 1, 2, 3 }.Contains(c.State) && c.WxErrorCount > InterfaceMaxError))
                        {
                            FinishFans(item, "");
                        }
                        #endregion
                    }
                }
                catch (Exception ex)
                {
                    LogWriter.Error(ex);
                }
                finally
                {
                    Thread.Sleep(CheckFriendsTime);
                }
            }
        }
Пример #26
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            //要执行action的名字
            string action_name = filterContext.ActionDescriptor.ActionName;

            var attributes = filterContext.ActionDescriptor.GetCustomAttributes(false);

            string path = filterContext.HttpContext.Request.Url.AbsoluteUri;
            //string goods = filterContext.HttpContext.Request["names"];
            //filterContext.HttpContext.Items.Add("names", "goods");

            bool power = false;

            bool logins = false;

            //获取在每个control上添加的特性。
            foreach (object item in attributes)
            {
                if (item is OuthAttribute)
                {
                    OuthAttribute mes = item as OuthAttribute;

                    power = mes.IS_OUTH;
                }

                if (item is IsLoginAttribute)
                {
                    IsLoginAttribute islogin = item as IsLoginAttribute;

                    logins = islogin.IS_LOGIN;
                }
            }

            if (logins)
            {
                if (filterContext.HttpContext.Session["StoreCode"] == null || filterContext.HttpContext.Session["WhoID"] == null)
                {
                    //直接阻止下面的响应
                    filterContext.Result = new RedirectResult("/BcjStore/Index.do");
                }
            }


            if (power && filterContext.HttpContext.Session["FansInfo"] == null)
            {
                //FansInfo model = new FansInfo()
                //{
                //    Headimgurl = "http://thirdwx.qlogo.cn/mmopen/2fibrz5JaYCaUibbNJM0dJPjmOmxDKe2TqOcqnFRySWUswlRm7ouk8suStkP9icnuRWap5R2mgUAatwXzHoFwGCiaNkYNCYdxaVw/132",
                //    Nickname = "陈艳容",
                //    //Openid = "oDRuD1DSi1yyDx9x4_Ttpf_0haB0",
                //    Openid = "oDRuD1A65qVf-QjFFpdnQccRo7HA"
                //};
                //filterContext.HttpContext.Session["FansInfo"] = model;


                //HttpCookie cook = new HttpCookie("mykey", JsonConvert.SerializeObject(model));
                //filterContext.HttpContext.Response.Cookies.Add(cook);

                #region yes
                if (filterContext.HttpContext.Request["code"] != null)
                {
                    try
                    {
                        logger.Fatal("进入二次授权");
                        string url = string.Format(@"https://api.weixin.qq.com/sns/oauth2/access_token?appid="
                                                   + AppConfig.WXCorpID
                                                   + "&secret=" + AppConfig.WXCorpSecret +
                                                   "&code={0}&grant_type=authorization_code",
                                                   filterContext.HttpContext.Request["code"].ToString());
                        string token = PostRequest(url);
                        logger.Fatal("token" + token);
                        if (token.Contains("7200"))
                        {
                            string[] b = token.Split('\"');
                            filterContext.HttpContext.Session["FromUserName"] = b[13];
                            filterContext.HttpContext.Session["ToUserName"]   = AppConfig.FWHOriginalID;

                            string urlinfo = "https://api.weixin.qq.com/sns/userinfo?access_token=" + b[3] +
                                             "&openid=" + b[13] + "&lang=zh_CN";

                            string str = PostRequest(urlinfo);
                            logger.Fatal(str);
                            FansInfo infos = JsonConvert.DeserializeObject <FansInfo>(str);
                            byte[]   bt    = System.Text.Encoding.Default.GetBytes(infos.Nickname);
                            infos.Nickname = Convert.ToBase64String(bt);
                            filterContext.HttpContext.Session["FansInfo"] = infos;
                            HttpCookie cook = new HttpCookie("FansInfo", str);
                            filterContext.HttpContext.Response.Cookies.Add(cook);

                            logger.Fatal("进入二次授权结束" + str);
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.Fatal("二次授权错误" + ex.ToString());
                    }
                }
                else
                {
                    //800是主站使用的(80被nginx使用了)
                    string urlok = filterContext.HttpContext.Request.Url.AbsoluteUri.Replace(":800", "");
                    logger.Fatal(urlok);
                    string url = OAuth(AppConfig.WXCorpID,
                                       urlok, filterContext.HttpContext);

                    //直接阻止下面的响应
                    filterContext.Result = new RedirectResult(url);
                }
                #endregion
            }
        }
Пример #27
0
        public int Create(FansInfo model)
        {
            int id = dal.Create(model);

            return(id);
        }
Пример #28
0
 public bool Update(FansInfo model)
 {
     return(dal.Update(model));
 }
Пример #29
0
 public bool Delete(FansInfo model)
 {
     return(dal.Delete(model));
 }