Example #1
0
        public string InsertPicMsg(ImgMessage model)
        {
            try
            {
                string sqlStr = "insert into WC_PicMsg values (@MsgId, @PicUrl, @MediaId, @FromUserName, @CreateDate) ";
                conn.Execute(sqlStr, new { MsgId = model.MsgId, PicUrl = model.PicUrl, MediaId = model.MediaId, FromUserName = model.FromUserName, CreateDate = DateTime.Now });

                sqlStr = "select PassCode from WC_PassCode where FromUserName=@FromUserName";
                var result = conn.Query <string>(sqlStr, new { FromUserName = model.FromUserName });
                if (result.Count() > 0)
                {
                    return(result.SingleOrDefault());
                }
                else
                {
                    Random rd   = new Random(~unchecked ((int)DateTime.Now.Ticks));
                    int    code = rd.Next(100000, 1000000);

                    sqlStr = "insert into WC_PassCode values (@FromUserName, @PassCode)";
                    conn.Execute(sqlStr, new { FromUserName = model.FromUserName, PassCode = code });

                    return(code.ToString());
                }
            }
            catch (Exception ex)
            {
                return(string.Empty);
            }
            finally
            {
                conn.Close();
            }
        }
Example #2
0
        public HttpResponseMessage Post(string signature, string timestamp, string nonce)
        {
            inputValue = string.Format("{0}--{1}--{2}", signature, timestamp, nonce);
            string postString;

            HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.OK);

            msg.Content = new StringContent("success", System.Text.Encoding.UTF8, "text/html");

            using (Stream stream = HttpContext.Current.Request.InputStream)
            {
                Byte[] postBytes = new Byte[stream.Length];
                stream.Read(postBytes, 0, (Int32)stream.Length);
                postString = Encoding.UTF8.GetString(postBytes);
                Trace.WriteLine(postString);

                XElement xdoc    = XElement.Parse(postString);
                var      msgtype = xdoc.Element("MsgType").Value.ToUpper();
                MsgType  type    = (MsgType)Enum.Parse(typeof(MsgType), msgtype);

                //BaseMessage baseMsg = ConvertObj<BaseMessage>(postString);
                if (queue == null)
                {
                    queue = new List <BaseMessage>();
                }
                else if (queue.Count >= 150)
                {
                    queue.RemoveRange(0, 100);
                }

                switch (type)
                {
                case MsgType.TEXT:
                    TextMessage textMsg = ConvertObj <TextMessage>(postString);
                    break;

                case MsgType.IMAGE:
                    ImgMessage imgMsg = ConvertObj <ImgMessage>(postString);

                    SQLHelper db        = new SQLHelper(connString);
                    bool      msgExists = db.CheckMsgExists(imgMsg.MsgId);
                    if (msgExists)
                    {
                        return(msg);
                    }
                    else
                    {
                        string passCode = db.InsertPicMsg(imgMsg);

                        string response = CreateTextReponse(imgMsg.FromUserName, imgMsg.ToUserName, passCode);

                        Trace.WriteLine(response);

                        msg.Content = new StringContent(response, System.Text.Encoding.UTF8, "text/html");
                        return(msg);
                    }

                    break;

                case MsgType.EVENT:
                    msg.Content = new StringContent("", System.Text.Encoding.UTF8, "text/html");

                    EventMessage eventMsg = ConvertObj <EventMessage>(postString);

                    if (eventMsg == null)
                    {
                        return(msg);
                    }

                    //break;
                    if (eventMsg.Event == Event.SCAN)
                    {
                        if (queue.Where(v => v.CreateTime == eventMsg.CreateTime && v.FromUserName == v.FromUserName).Count() > 0)
                        {
                            return(msg);
                        }
                        else
                        {
                            queue.Add(eventMsg);
                            Console.WriteLine(eventMsg.FromUserName);

                            string sceneStr = eventMsg.EventKey;

                            //扫码消息格式 ScanQR OpenID SenceStr
                            SendMsg("118.190.45.106", 8712, "ScanQR " + eventMsg.FromUserName + " " + sceneStr);
                        }
                    }

                    return(msg);

                //break;
                default:
                    break;
                }
            }

            return(msg);
        }