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); }
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); }
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)); }
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); }
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); }