Exemple #1
0
        private string ResponseEvent_WX10101(WXReceiveEventMessage receiveMessage)
        {
            string result     = "";
            var    stationIds = BuilderFactory.DefaultBulder().List <WXStationAuthRequest>(new WXStationAuthRequest {
                OpenId = receiveMessage.FromUserName, DoStatus = 1
            }.ToStringObjectDictionary(false)).Select(item => item.StationId.ToString()).Distinct();

            if (stationIds.Count() > 0)
            {
                result = FormatOutputText(receiveMessage.FromUserName, receiveMessage.ToUserName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "签到成功");
                //加入到签到表
                BuilderFactory.DefaultBulder().Create <WXCheckIn>(new WXCheckIn {
                    OpenId = receiveMessage.FromUserName
                });
            }
            else
            {
                WXMessageTemplate template = BuilderFactory.DefaultBulder().Load <WXMessageTemplate, WXMessageTemplatePK>(new WXMessageTemplatePK {
                    TemplateId = GlobalManager.TemplateId_Not_As_ServeMan
                });
                if (template != null)
                {
                    string s = template.TemplateContent.ReplaceEmoji();
                    result = FormatOutputText(receiveMessage.FromUserName, receiveMessage.ToUserName, s);
                }
            }
            return(result);
        }
Exemple #2
0
        public string ResponseEvent(WXReceiveEventMessage receiveMessage)
        {
            string result = FormatOutputText(receiveMessage.FromUserName, receiveMessage.ToUserName, "响应:" + receiveMessage.Event);

            if (receiveMessage.Event.ToLower() == "click")
            {
                if (receiveMessage.EventKey == "WX10101")
                {
                    result = ResponseEvent_WX10101(receiveMessage);
                }
                else if (receiveMessage.EventKey == "WX20101")
                {
                    result = ResponseEvent_WX20101(receiveMessage);
                }
                else if (receiveMessage.EventKey == "WX20102")
                {
                    result = ResponseEvent_WX20102(receiveMessage);
                }
                else if (receiveMessage.EventKey == "WX20103")
                {
                    result = ResponseEvent_WX20103(receiveMessage);
                }
            }

            return(result);
        }
Exemple #3
0
        public Stream ReceiveWXMessage(Stream s)
        {
            string result = "";

            using (StreamReader sr = new StreamReader(s))
            {
                result = sr.ReadToEnd();
            }
            //result = OperationContext.Current.RequestContext.RequestMessage.ToString();
            if (result != "")
            {
                WXReceiveMessage receiveMessage = XmlSerializeAdapter.Deserialize <WXReceiveMessage>(result);

                /*
                 * XmlSerializer serializer = new XmlSerializer(typeof(WXReceiveMessage));
                 * using (StringReader rdr = new StringReader(result))
                 * {
                 *  WXReceiveMessage requestMessage = serializer.Deserialize(rdr) as WXReceiveMessage;
                 *
                 * }
                 */
                if (receiveMessage.MsgType.Equals("text"))
                {
                    WXReceiveTextMessage requestTextMessage = XmlSerializeAdapter.Deserialize <WXReceiveTextMessage>(result);
                    result = GlobalManager.TheWeiXinResponser.ResponseText(requestTextMessage);
                    if (string.IsNullOrEmpty(result))
                    {
                        result = GlobalManager.TheWeiXinDispatcher.DesideDispatchWho(requestTextMessage);
                        GlobalManager.TheWeiXinDispatcher.DispatchText(requestTextMessage);
                    }
                }
                else if (receiveMessage.MsgType.Equals("event"))
                {
                    WXReceiveEventMessage requestEventMessage = XmlSerializeAdapter.Deserialize <WXReceiveEventMessage>(result);
                    if (requestEventMessage.Event.Equals("subscribe"))
                    {
                        #region 关注
                        NormalAccount normalAccount = BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).List <NormalAccount>(new NormalAccount {
                            OpenId = requestEventMessage.FromUserName, AccountCode = GlobalManager.TheServiceAccount.AccountCode
                        }).FirstOrDefault();
                        if (normalAccount == null)
                        {
                            //第一次关注
                            BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).Create <NormalAccount>(new NormalAccount {
                                AccountCode = GlobalManager.TheServiceAccount.AccountCode, OpenId = requestEventMessage.FromUserName, Gender = "F", SubscribeTime = DateTime.Now
                            });
                            result = GlobalManager.TheWeiXinResponser.FormatOutputText(requestEventMessage.FromUserName, requestEventMessage.ToUserName, "欢迎加入" + GlobalManager.TheServiceAccount.Name);
                        }
                        else
                        {
                            //曾经关注过
                            BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).Update <NormalAccount>(new NormalAccount {
                                FollowStatus = 1, SubscribeTime = DateTime.Now, Id = normalAccount.Id
                            });
                            result = GlobalManager.TheWeiXinResponser.FormatOutputText(normalAccount.OpenId, requestEventMessage.ToUserName, "欢迎重新加入" + GlobalManager.TheServiceAccount.Name);
                        }

                        _RefreshWXUserInfo(requestEventMessage.FromUserName, (ret) =>
                        {
                            string gender = "N";
                            int iGender   = int.Parse(ret.sex.ToString());
                            if (iGender == 1)
                            {
                                gender = "M";
                            }
                            else if (iGender == 2)
                            {
                                gender = "F";
                            }
                            BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).ExecuteNativeSqlNoneQuery(new IBatisNetBatchStatement
                            {
                                StatementName   = "NormalAccount_UpdateByOpenId",
                                ParameterObject = new NormalAccount
                                {
                                    OpenId     = ret.openid,
                                    NickName   = ret.nickname,
                                    Gender     = gender,
                                    Language   = ret.language,
                                    Country    = ret.country,
                                    Province   = ret.province,
                                    City       = ret.city,
                                    HeadImgUrl = ret.headimgurl
                                }.ToStringObjectDictionary(false),
                                Type = SqlExecuteType.UPDATE
                            });
                        }, null);
                        #endregion
                    }
                    else if (requestEventMessage.Event.Equals("unsubscribe"))
                    {
                        #region 取消关注
                        NormalAccount normalAccount = BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).List <NormalAccount>(new NormalAccount {
                            OpenId = requestEventMessage.FromUserName, AccountCode = GlobalManager.TheServiceAccount.AccountCode
                        }).FirstOrDefault();
                        if (normalAccount != null)
                        {
                            BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).Update <NormalAccount>(new NormalAccount {
                                FollowStatus = 0, SubscribeTime = DateTime.Now, Id = normalAccount.Id
                            });
                        }
                        #endregion
                    }
                    else if (requestEventMessage.Event.Equals("LOCATION"))
                    {
                        WXReceiveLocationMessage requestLocationMessage = XmlSerializeAdapter.Deserialize <WXReceiveLocationMessage>(result);
                        var spParam = new { SourceTable = new NormalAccount().GetMappingTableName(), SourceId = requestLocationMessage.FromUserName, LocateType = "WX-Location-Report", Longitude = requestLocationMessage.Longitude, Latitude = requestLocationMessage.Latitude }.ToSPParam();
                        try
                        {
                            BuilderFactory.DefaultBulder().ExecuteSPNoneQuery("SP_Pub_InsertPubLocation", spParam);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
                    }
                    else
                    {
                        result = GlobalManager.TheWeiXinResponser.ResponseEvent(requestEventMessage);
                    }
                }
                else if (receiveMessage.MsgType.Equals("location"))
                {
                }
                else if (receiveMessage.MsgType == "image")
                {
                }
                else if (receiveMessage.MsgType == "voice")
                {
                }
            }
            else
            {
                result = "hello";
            }
            byte[] resultBytes = Encoding.UTF8.GetBytes(result);
            WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
            return(new MemoryStream(resultBytes));
        }
Exemple #4
0
        private string ResponseEvent_WX20103(WXReceiveEventMessage receiveMessage)
        {
            string result = "";
            int    pageSize = 5;
            StringObjectDictionary filter = new { OpenId = receiveMessage.FromUserName }.ToStringObjectDictionary();

            try
            {
                var datas = BuilderFactory.DefaultBulder().ListStringObjectDictionary("ServeDurationByServeMan_List", filter);
                if (datas.Count == 0)
                {
                    result = FormatOutputText(receiveMessage.FromUserName, receiveMessage.ToUserName, "没有任何服务记录,无法统计");
                }
                else
                {
                    WXMessageTemplate template_MyServeDurationStatTitle = BuilderFactory.DefaultBulder().Load <WXMessageTemplate, WXMessageTemplatePK>(new WXMessageTemplatePK {
                        TemplateId = GlobalManager.TemplateId_MyServeDurationStatTitle
                    });

                    List <WXResponseNewsItem> items = datas.Select(item =>
                                                                   new WXResponseNewsItem
                    {
                        Title = template_MyServeDurationStatTitle.TemplateContent.ReplaceWithKeys(new
                        {
                            ServeStationName = TypeConverter.ChangeString(item["ServeStationName"]),
                            ServeItemBName   = TypeConverter.ChangeString(item["ServeItemBName"]),
                            ByDay            = DateTimeAdapter.GetTimeSpanString(DateTimeAdapter.DateInterval.HR, long.Parse(TypeConverter.ChangeString(item["ByDay"]))),
                            ByWeek           = DateTimeAdapter.GetTimeSpanString(DateTimeAdapter.DateInterval.HR, long.Parse(TypeConverter.ChangeString(item["ByWeek"]))),
                            ByMonth          = DateTimeAdapter.GetTimeSpanString(DateTimeAdapter.DateInterval.HR, long.Parse(TypeConverter.ChangeString(item["ByMonth"])))
                        }.ToStringObjectDictionary(), false, "$")
                    }).ToList();

                    if (datas.Count > pageSize)
                    {
                        WXMessageTemplate template_MyServeDurationStatMoreUrl = BuilderFactory.DefaultBulder().Load <WXMessageTemplate, WXMessageTemplatePK>(new WXMessageTemplatePK {
                            TemplateId = GlobalManager.TemplateId_MyServeDurationStatMoreUrl
                        });
                        items.Add(new WXResponseNewsItem
                        {
                            Title = "更多...",
                            Url   = template_MyServeDurationStatMoreUrl.TemplateContent.ReplaceWithKeys(new
                            {
                                DeployAreaCode = GlobalManager.GetDeployArea().code,
                                OpenId         = receiveMessage.FromUserName,
                                TimeStamp      = DateTimeAdapter.ConvertDateTimeUnix(DateTime.Now).ToString()
                            }.ToStringObjectDictionary(), false, "$")
                        });
                    }
                    items.Insert(0, new WXResponseNewsItem {
                        Title = "服务时长统计结果:"
                    });

                    result = FormatOutputNews(receiveMessage.FromUserName, receiveMessage.ToUserName, items);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(result);
        }
Exemple #5
0
        private string ResponseEvent_WX20102(WXReceiveEventMessage receiveMessage)
        {
            string result = "";
            int    pageSize = 5;
            StringObjectDictionary filter = new { OpenId = receiveMessage.FromUserName }.ToStringObjectDictionary();

            try
            {
                var datas = BuilderFactory.DefaultBulder().ListStringObjectDictionaryByPage("ServeRecordByServeMan_ListByPage", filter, new ListPager {
                    OrderByClause = "ServeManArriveTime desc", PageNo = 1, PageSize = pageSize
                });
                if (datas.Count == 0)
                {
                    result = FormatOutputText(receiveMessage.FromUserName, receiveMessage.ToUserName, "没有任何服务记录");
                }
                else
                {
                    WXMessageTemplate template_MyServeRecordTitle = BuilderFactory.DefaultBulder().Load <WXMessageTemplate, WXMessageTemplatePK>(new WXMessageTemplatePK {
                        TemplateId = GlobalManager.TemplateId_MyServeRecordTitle
                    });

                    List <WXResponseNewsItem> items = datas.Select(item =>
                                                                   new WXResponseNewsItem
                    {
                        Title = template_MyServeRecordTitle.TemplateContent.ReplaceWithKeys(new
                        {
                            ServeDate        = DateTime.Parse(TypeConverter.ChangeString(item["ServeDate"])).ToString("yyyy-MM-dd"),
                            ArriveTime       = DateTime.Parse(TypeConverter.ChangeString(item["ArriveTime"])).ToString("HH:mm:ss"),
                            LeaveTime        = DateTime.Parse(TypeConverter.ChangeString(item["LeaveTime"])).ToString("HH:mm:ss"),
                            OldManName       = TypeConverter.ChangeString(item["OldManName"]),
                            ServeItemBName   = TypeConverter.ChangeString(item["ServeItemBName"]),
                            ServeStationName = TypeConverter.ChangeString(item["ServeStationName"])
                        }.ToStringObjectDictionary(), false, "$").ReplaceEmoji()
                    }).ToList();

                    if (BuilderFactory.DefaultBulder().GetRecordCount("Count_ScheduleByServeMan_ListByPage", filter) > pageSize)
                    {
                        WXMessageTemplate template_MyServeRecordMoreUrl = BuilderFactory.DefaultBulder().Load <WXMessageTemplate, WXMessageTemplatePK>(new WXMessageTemplatePK {
                            TemplateId = GlobalManager.TemplateId_MyServeRecordMoreUrl
                        });
                        items.Add(new WXResponseNewsItem
                        {
                            Title = "更多...",
                            Url   = template_MyServeRecordMoreUrl.TemplateContent.ReplaceWithKeys(new
                            {
                                DeployAreaCode = GlobalManager.GetDeployArea().code,
                                OpenId         = receiveMessage.FromUserName,
                                TimeStamp      = DateTimeAdapter.ConvertDateTimeUnix(DateTime.Now).ToString()
                            }.ToStringObjectDictionary(), false, "$")
                        });
                    }
                    items.Insert(0, new WXResponseNewsItem {
                        Title = "服务记录查询结果:"
                    });

                    result = FormatOutputNews(receiveMessage.FromUserName, receiveMessage.ToUserName, items);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(result);
        }