Exemple #1
0
        public Task <bool> WxMsgPushLog(WxMsgPushLog wxMsgPushLog)
        {
            return(Task.Run(() =>
            {
                CurrentDb.WxMsgPushLog.Add(wxMsgPushLog);
                CurrentDb.SaveChanges();


                return true;
            }));
        }
Exemple #2
0
        public ActionResult NotifyEvent()
        {
            LogUtil.Info("开始接收事件推送通知");
            string echoStr = "";

            if (Request.HttpMethod == "POST")
            {
                Stream stream = Request.InputStream;
                stream.Seek(0, SeekOrigin.Begin);
                string xml = new StreamReader(stream).ReadToEnd();

                //Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
                //byte[] b = new byte[intLen];
                //Request.InputStream.Read(b, 0, intLen);
                //string xml = System.Text.Encoding.UTF8.GetString(b);
                LogUtil.Info("接收事件推送内容:" + xml);
                if (!string.IsNullOrEmpty(xml))
                {
                    var    baseEventMsg = WxMsgFactory.CreateMessage(xml);
                    string eventKey     = null;
                    LogUtil.Info("baseEventMsg内容:" + baseEventMsg);
                    if (baseEventMsg != null)
                    {
                        var userInfo_Result = SdkFactory.Wx.Instance().GetUserInfoByApiToken(baseEventMsg.FromUserName);

                        if (userInfo_Result.openid != null)
                        {
                            LogUtil.Info("userInfo_Result:" + JsonConvert.SerializeObject(userInfo_Result));

                            var wxUserInfo = new WxUserInfo();

                            wxUserInfo.OpenId     = userInfo_Result.openid;
                            wxUserInfo.Nickname   = userInfo_Result.nickname;
                            wxUserInfo.Sex        = userInfo_Result.sex.ToString();
                            wxUserInfo.Province   = userInfo_Result.province;
                            wxUserInfo.City       = userInfo_Result.city;
                            wxUserInfo.Country    = userInfo_Result.country;
                            wxUserInfo.HeadImgUrl = userInfo_Result.headimgurl;
                            wxUserInfo.UnionId    = userInfo_Result.unionid;

                            wxUserInfo = BizFactory.WxUser.CheckedUser(GuidUtil.New(), wxUserInfo);

                            if (wxUserInfo != null)
                            {
                                var wxAutoReply = new WxAutoReply();
                                switch (baseEventMsg.MsgType)
                                {
                                case MsgType.TEXT:
                                    #region TEXT

                                    LogUtil.Info("文本消息");

                                    var textMsg = (TextMsg)baseEventMsg;

                                    if (textMsg != null)
                                    {
                                        LogUtil.Info("文本消息:" + textMsg.Content);

                                        if (textMsg.Content == "双11入场券" || textMsg.Content == "双十一入场券" || textMsg.Content == "双11入场卷" || textMsg.Content == "双十一入场卷")
                                        {
                                            string promoteId = "80c71a0657924059b39895f9e406ef84";
                                            string media_Id  = GetWxPromoteImgMediaId(promoteId, wxUserInfo.ClientId);
                                            echoStr = WxMsgFactory.CreateReplyImage(baseEventMsg.FromUserName, baseEventMsg.ToUserName, media_Id);
                                        }
                                    }


                                    #endregion
                                    break;

                                case MsgType.EVENT:
                                    #region EVENT
                                    switch (baseEventMsg.Event)
                                    {
                                    case EventType.SUBSCRIBE:        //订阅
                                        break;

                                    case EventType.UNSUBSCRIBE:        //取消订阅
                                        break;

                                    case EventType.SCAN:        //扫描二维码
                                    case EventType.CLICK:       //单击按钮
                                    case EventType.VIEW:        //链接按钮
                                        break;

                                    case EventType.USER_GET_CARD:        //领取卡卷
                                        #region  USER_GET_CARD
                                        var userGetCardMsg = (UserGetCardMsg)baseEventMsg;

                                        var promoteUserCoupon = CurrentDb.ClientCoupon.Where(m => m.ClientId == wxUserInfo.ClientId && m.WxCouponId == userGetCardMsg.CardId).FirstOrDefault();

                                        if (promoteUserCoupon != null)
                                        {
                                            promoteUserCoupon.IsGet               = true;
                                            promoteUserCoupon.GetTime             = DateTime.Now;
                                            promoteUserCoupon.Mender              = GuidUtil.Empty();
                                            promoteUserCoupon.MendTime            = DateTime.Now;
                                            promoteUserCoupon.WxCouponDecryptCode = userGetCardMsg.UserCardCode;
                                            CurrentDb.SaveChanges();
                                        }

                                        #endregion
                                        break;

                                    case EventType.USER_CONSUME_CARD:        //核销卡卷
                                        #region USER_CONSUME_CARD

                                        //var userConsumeCardMsg = (UserConsumeCardMsg)baseEventMsg;

                                        //if (userConsumeCardMsg != null)
                                        //{
                                        //    var reidsMqByCalProfitModel = new RedisMq4GlobalHandle();
                                        //    var reidsMqByCalProfitByCouponConsumeModel = new ReidsMqByCalProfitByCouponConsumeModel();
                                        //    reidsMqByCalProfitByCouponConsumeModel.ClientId = wxUserInfo.ClientId;
                                        //    reidsMqByCalProfitByCouponConsumeModel.WxCouponDecryptCode = userConsumeCardMsg.UserCardCode;
                                        //    reidsMqByCalProfitByCouponConsumeModel.WxCouponId = userConsumeCardMsg.CardId;

                                        //    reidsMqByCalProfitModel.Pms = reidsMqByCalProfitByCouponConsumeModel;

                                        //    ReidsMqFactory.Global.Push(RedisMqHandleType.CouponConsume,reidsMqByCalProfitModel);
                                        //}


                                        #endregion
                                        break;
                                    }
                                    #endregion
                                    break;
                                }

                                var wxMsgPushLog = new WxMsgPushLog();
                                wxMsgPushLog.Id           = GuidUtil.New();
                                wxMsgPushLog.ClientId     = wxUserInfo.ClientId;
                                wxMsgPushLog.ToUserName   = baseEventMsg.ToUserName;
                                wxMsgPushLog.FromUserName = baseEventMsg.FromUserName;
                                wxMsgPushLog.CreateTime   = DateTime.Now;
                                wxMsgPushLog.ContentXml   = xml;
                                wxMsgPushLog.MsgId        = baseEventMsg.MsgId;
                                wxMsgPushLog.MsgType      = baseEventMsg.MsgType.ToString();
                                wxMsgPushLog.Event        = baseEventMsg.Event.ToString();
                                wxMsgPushLog.EventKey     = eventKey;

                                WxMsgPushLog(wxMsgPushLog);
                            }
                        }
                    }
                }
            }
            else if (Request.HttpMethod == "GET") //微信服务器在首次验证时,需要进行一些验证,但。。。。
            {
                if (string.IsNullOrEmpty(Request["echostr"]))
                {
                    echoStr = "无法获取微信接入信息,仅供测试!";
                }
                else
                {
                    echoStr = Request["echostr"].ToString();
                }
            }
            else
            {
                echoStr = "wrong";
            }

            LogUtil.Info(string.Format("接收事件推送之后回复内容:{0}", echoStr));
            Response.Write(echoStr);
            Response.End();
            return(View());
        }