/// <summary> /// 处理回复消息 /// "text":回复文本消息处理,MsgValue对应回复的文本 /// "sub_auto_coupon":回复订阅自动优惠券处理,MsgValue对应回复的图文消息ID /// "auto_news_article":根据文章自动生成图文消息进行回复,MsgValue为类别ID /// "news":回复图文表中的消息,MsgValue为图文消息表ID集,用逗号分隔 /// </summary> /// <param name="replyMsgType"></param> /// <param name="replyMsgValue"></param> /// <param name="customParams"></param> /// <returns></returns> private string ProcessReply(RequestMsgModel msgModel, string replyMsgType, string replyMsgValue) { string res = string.Empty; try { switch (replyMsgType.ToLower()) { case "text": //回复文本消息处理,MsgValue对应回复的文本 TextResponseMsgModel textMsg = new TextResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = replyMsgValue == null ? string.Empty : TransformText(replyMsgValue, msgModel) }; res = textMsg.ToString(); break; case "voice": //回复语音消息处理,MsgValue对应回复的文本 VoiceResponseMsgModel voiceMsg = new VoiceResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), }; Media media = MediaDAL.CreateInstance().GetMediaByID(replyMsgValue); if (media != null && !string.IsNullOrEmpty(media.MediaID)) { voiceMsg.MediaId = media.MediaID; } res = voiceMsg.ToString(); break; case "wxpay_test": //用于微信支付测试 TextResponseMsgModel textMsgx = new TextResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = string.Format("<a href='{0}/Payment/wxpay/wxpayDemo.aspx?openid={1}'>微信支付测试</a>", GetSiteUrl(), msgModel.FromUserName) }; res = textMsgx.ToString(); break; case "transfer_customer_service": //将消息转发到多客服 TransferCustomerServiceResponseMsgModel transferMsg = new TransferCustomerServiceResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), }; res = transferMsg.ToString(); break; case "sub_auto_coupon": //回复订阅自动优惠券处理,MsgValue对应回复的优惠券图文消息ID //SubscribeCouponActHandle sch = new SubscribeCouponActHandle(); SiteActivityDAL dal = new SiteActivityDAL(); SiteActivity activity = dal.GetSiteAct(siteCode, "Coupon"); if (activity != null) { CouponDAL cdal = new CouponDAL(); if (!cdal.ExistCoupon(siteCode, activity.ID, msgModel.FromUserName)) { Coupon coupon = new Coupon() { SiteCode = siteCode, SiteActivityID = activity.ID, OpenID = msgModel.FromUserName, //CouponCode = msgModel.FromUserName, CouponStatus = 0 }; cdal.InsertInfo(coupon); } } CouponNewsDAL nmDAL = new CouponNewsDAL(); CouponNews nm = nmDAL.GetCouponNews(replyMsgValue); if (nm != null) { NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); articles.Add(new Article() { Title = nm.Title, Description = nm.Description, PicUrl = GetPicUrl(nm.PicUrl), Url = TransformUrl(nm.Url, msgModel) }); newsModel.Articles = articles; res = newsModel.ToString(); } break; case "auto_coupon_category": SiteActivityDAL dalCatList = new SiteActivityDAL(); SiteActivity activityCat = dalCatList.GetSiteAct(siteCode, "Coupon"); if (activityCat != null) { CouponDAL cdal = new CouponDAL(); if (!cdal.ExistCoupon(siteCode, activityCat.ID, msgModel.FromUserName)) { Coupon coupon = new Coupon() { SiteCode = siteCode, SiteActivityID = activityCat.ID, OpenID = msgModel.FromUserName, //CouponCode = msgModel.FromUserName, CouponStatus = 0 }; cdal.InsertInfo(coupon); } } ArticleDAL catDal = new ArticleDAL(); DataSet cdsCat = catDal.GetCategoryList(siteCode, replyMsgValue); if (cdsCat != null && cdsCat.Tables.Count > 0 && cdsCat.Tables[0] != null && cdsCat.Tables[0].Rows.Count > 0) { int i = 0; NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); foreach (DataRow dr in cdsCat.Tables[0].Rows) { if (++i > 4) { break; } articles.Add(new Article() { Title = dr["Title"].ToString(), Description = dr["Summary"].ToString(), //Description = RemoveHtmlTag(dr["Content"].ToString(), 30), PicUrl = GetPicUrl(dr["Pic"].ToString()), Url = GetArticleUrl(dr["ID"].ToString()) }); } newsModel.Articles = articles; res = newsModel.ToString(); } break; case "auto_news_article": //根据文章自动生成图文消息进行回复,MsgValue为文章ID ArticleDAL aDal = new ArticleDAL(); DataSet ds = aDal.GetArticleDetail(replyMsgValue); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) { int i = 0; NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); foreach (DataRow dr in ds.Tables[0].Rows) { if (++i > 4) { break; } articles.Add(new Article() { Title = dr["Title"].ToString(), Description = dr["Summary"].ToString(), //Description = RemoveHtmlTag(dr["Content"].ToString(), 100), PicUrl = GetPicUrl(dr["Pic"].ToString()), Url = GetArticleUrl(dr["ID"].ToString()) }); } newsModel.Articles = articles; res = newsModel.ToString(); } break; case "auto_news_category": //根据类别自动生成图文消息进行回复,MsgValue为类别ID ArticleDAL cDal = new ArticleDAL(); DataSet cds = cDal.GetCategoryList(siteCode, replyMsgValue); if (cds != null && cds.Tables.Count > 0 && cds.Tables[0] != null && cds.Tables[0].Rows.Count > 0) { int i = 0; NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); foreach (DataRow dr in cds.Tables[0].Rows) { if (++i > 4) { break; } articles.Add(new Article() { Title = dr["Title"].ToString(), Description = dr["Summary"].ToString(), //Description = RemoveHtmlTag(dr["Content"].ToString(), 30), PicUrl = GetPicUrl(dr["Pic"].ToString()), Url = GetArticleUrl(dr["ID"].ToString()) }); } newsModel.Articles = articles; res = newsModel.ToString(); } break; case "coupon": //回复图文表中的消息,MsgValue为图文消息表ID集,用逗号分隔 NewsMsgDAL nmDAL1 = new NewsMsgDAL(); NewsMsg nms = nmDAL1.GetNewsMsg(replyMsgValue); if (nms != null) { NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); articles.Add(new Article() { Title = nms.Title, Description = nms.Description, PicUrl = GetPicUrl(nms.PicUrl), Url = TransformUrl(nms.Url, msgModel) }); newsModel.Articles = articles; res = newsModel.ToString(); } break; case "news": //回复图文表中的消息,MsgValue为图文消息表ID集,用逗号分隔 NewsMsgDAL nmDALs = new NewsMsgDAL(); IList <NewsMsg> newsMsgs = nmDALs.GetNewsMsgs(replyMsgValue); if (newsMsgs != null) { NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); foreach (NewsMsg msg in newsMsgs) { articles.Add(new Article() { Title = msg.Title, Description = msg.Description, PicUrl = GetPicUrl(msg.PicUrl), Url = TransformUrl(msg.Url, msgModel) }); } newsModel.Articles = articles; res = newsModel.ToString(); } break; case "url": //根据文章自动生成图文消息进行回复,MsgValue为文章ID DAL.SYS.AccountDAL dalUrl = new DAL.SYS.AccountDAL(); DataSet dsUrl = dalUrl.GetAccountExtData(replyMsgValue); if (dsUrl != null && dsUrl.Tables.Count > 0 && dsUrl.Tables[0] != null && dsUrl.Tables[0].Rows.Count > 0) { int i = 0; NewsResponseMsgModel newsModel = new NewsResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString() }; List <Article> articles = new List <Article>(); foreach (DataRow dr in dsUrl.Tables[0].Rows) { if (++i > 4) { break; } articles.Add(new Article() { Title = dr["Name"].ToString(), Description = dr["Summary"].ToString(), PicUrl = GetPicUrl(dr["Photo"].ToString()), Url = GetSiteInfo(dr["ID"].ToString()) }); } newsModel.Articles = articles; res = newsModel.ToString(); } break; case "hp_photo_text": //为当前hp_photo对应的照片附加文字信息 PhotoDAL photoDal = new PhotoDAL(); if (photoDal.ExistPhoto(siteCode, msgModel.FromUserName, 0)) { TextRequestMsgModel temp = msgModel as TextRequestMsgModel; string text = temp.Content.Replace("#ms", ""); //附加图片文字 photoDal.UpdateAttachText(siteCode, msgModel.FromUserName, text); TextResponseMsgModel textMsg2 = new TextResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = replyMsgValue == null ? string.Empty : TransformText(replyMsgValue, msgModel) }; res = textMsg2.ToString(); } else { TextResponseMsgModel textMsg2 = new TextResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = "对不起,您暂未参加图片打印活动!" }; res = textMsg2.ToString(); } break; case "hp_photo_ticket": //对当前hp_photo对应的照片进行打印认证 PrintCodeDAL printCodeDAL = new PrintCodeDAL(); TextRequestMsgModel temp1 = msgModel as TextRequestMsgModel; string printCode = temp1.Content.Replace("#dy", ""); string clientID = printCodeDAL.GetClientIDByPrintCode(printCode, siteCode); ExceptionLogDAL.InsertExceptionLog(new ExceptionLog() { Message = clientID }); if (!string.IsNullOrEmpty(clientID)) { PhotoDAL photoDal1 = new PhotoDAL(); photoDal1.UpdatePrintInfo(printCode, clientID, siteCode, msgModel.FromUserName); TextResponseMsgModel textMsg2 = new TextResponseMsgModel() { ToUserName = msgModel.FromUserName, FromUserName = msgModel.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = replyMsgValue == null ? string.Empty : TransformText(replyMsgValue, msgModel) }; res = textMsg2.ToString(); //TextResponseMsgModel textMsg2 = new TextResponseMsgModel() //{ // ToUserName = msgModel.FromUserName, // FromUserName = msgModel.ToUserName, // CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), // Content = "照片打印中,请稍侯..." //}; //res = textMsg2.ToString(); } break; default: break; } } catch (Exception ex) { ExceptionLogDAL.InsertExceptionLog(ex); } return(res); }
/// <summary> /// 图片消息处理 /// </summary> /// <param name="msg"></param> /// <returns></returns> public string ImageMsgReceive(ImageRequestMsgModel msg) { string res = string.Empty; MsgAutoRuleDAL dal = new MsgAutoRuleDAL(); MsgAutoRule rule = dal.GetImageRule(wxConfig.ID); if (rule != null) { switch (rule.MsgType.ToLower()) { case "hp_photo": try { string fileDir = HttpContext.Current.Server.MapPath("/HP_PHOTO/"); if (!Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); } ExceptionLog log = new ExceptionLog(); log.Message = weixin.WeiXinConfig.AppId + "}{" + weixin.WeiXinConfig.AppSecret + "}{" + msg.MediaId; ExceptionLogDAL.InsertExceptionLog(log); //string fileName = weixin.SaveAsMedia(msg.MediaId, fileDir); string fileName = weixin.SaveAsFile(msg.PicUrl, fileDir); if (!string.IsNullOrEmpty(fileName)) { Photo p = new Photo() { SiteCode = siteCode, OpenId = msg.FromUserName, Img = fileName }; PhotoDAL photoDal = new PhotoDAL(); photoDal.SaveInfo(p); //回复文本消息 string url = string.Format("{0}/WebService/ImageEdit.aspx?id={1}", GetSiteUrl(), p.ID); string content = string.Format("<a href='{0}'>点击编辑</a>", url); TextResponseMsgModel textMsg = new TextResponseMsgModel() { ToUserName = msg.FromUserName, FromUserName = msg.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = content }; res = textMsg.ToString(); } } catch (Exception ex) { ExceptionLogDAL.InsertExceptionLog(ex); } break; case "user_photo": try { string fileDir = HttpContext.Current.Server.MapPath("/USER_PHOTO/"); if (!Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); } //string fileName = weixin.SaveAsMedia(msg.MediaId, fileDir); string fileName = weixin.SaveAsFile(msg.PicUrl, fileDir); if (!string.IsNullOrEmpty(fileName)) { UserPhoto photo = new UserPhoto() { Name = fileName, SiteCode = siteCode, OpenId = msg.FromUserName, FilePath = fileName }; UserPhotoDAL uPhotoDal = new UserPhotoDAL(); uPhotoDal.Insert(photo); //回复文本消息 TextResponseMsgModel textMsg = new TextResponseMsgModel() { ToUserName = msg.FromUserName, FromUserName = msg.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = rule.MsgValue == null ? string.Empty : TransformText(rule.MsgValue, msg) }; res = textMsg.ToString(); } } catch (Exception ex) { ExceptionLogDAL.InsertExceptionLog(ex); } break; case "user_photo_url": try { string fileDir = HttpContext.Current.Server.MapPath("/USER_PHOTO/"); if (!Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); } string fileName = weixin.SaveAsFile(msg.PicUrl, fileDir); if (!string.IsNullOrEmpty(fileName)) { UserPhoto photox = new UserPhoto() { Name = fileName, SiteCode = siteCode, OpenId = msg.FromUserName, FilePath = fileName }; UserPhotoDAL uPhotoDal = new UserPhotoDAL(); uPhotoDal.Insert(photox); //回复文本消息 string url = string.Format("{0}/MicroSite/PhotoPrint.aspx?id={1}", GetSiteUrl(), photox.ID); string content = string.Format("<a href='{0}'>开始打印</a>", url); TextResponseMsgModel textUrlMsg = new TextResponseMsgModel() { ToUserName = msg.FromUserName, FromUserName = msg.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = content }; res = textUrlMsg.ToString(); } } catch (Exception ex) { ExceptionLogDAL.InsertExceptionLog(ex); } break; case "user_printphoto_stepone": try { string fileDir = HttpContext.Current.Server.MapPath("/USER_PHOTO/"); if (!Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); } string fileName = weixin.SaveAsFile(msg.PicUrl, fileDir); if (!string.IsNullOrEmpty(fileName)) { UserPhoto photox = new UserPhoto() { Name = fileName, SiteCode = siteCode, OpenId = msg.FromUserName, FilePath = fileName }; UserPhotoDAL uPhotoDal = new UserPhotoDAL(); uPhotoDal.Insert(photox); //回复文本消息 string url = string.Format("{0}/MicroSite/PhotoPrintStepOne.aspx?id={1}", GetSiteUrl(), photox.ID); string content = string.Format("<a href='{0}'>开始打印</a>", url); TextResponseMsgModel textUrlMsg = new TextResponseMsgModel() { ToUserName = msg.FromUserName, FromUserName = msg.ToUserName, CreateTime = WeiXinHelper.ConvertDateTimeInt(DateTime.Now).ToString(), Content = content }; res = textUrlMsg.ToString(); } } catch (Exception ex) { ExceptionLogDAL.InsertExceptionLog(ex); } break; default: rule = dal.GetDefaultRule(wxConfig.ID); if (rule != null) { res = ProcessReply(msg, rule.MsgType, rule.MsgValue); } break; } } return(res); }