From b8966b18ca55e6fd0d319b8f394d7c36982d1238 Mon Sep 17 00:00:00 2001 From: "[zhengchao]" <[623591417@qq.com]> Date: Tue, 13 Sep 2016 15:42:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=91=E9=80=81=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E9=BB=98=E8=AE=A4=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B3WeChat.Web/Pages/WeChatReceive.cs | 9 ++++--- B3WeChat/BO/QRCodeScene.cs | 4 ++-- .../Entities/SendTemplateMessageResult.cs | 11 ++++++++- B3WeChat/Rpcs/ClientRpc.cs | 23 +++++++----------- B3WeChat/Utils/InOutMessageUtil.cs | 16 ++++++------- B3WeChat/Utils/SendMessageUtil.cs | 24 +++++++++++++++++++ 6 files changed, 58 insertions(+), 29 deletions(-) diff --git a/B3WeChat.Web/Pages/WeChatReceive.cs b/B3WeChat.Web/Pages/WeChatReceive.cs index c950ac9..326412c 100644 --- a/B3WeChat.Web/Pages/WeChatReceive.cs +++ b/B3WeChat.Web/Pages/WeChatReceive.cs @@ -1,4 +1,5 @@ -using BWP.B3WeChat.Entities; +using BWP.B3WeChat.BO; +using BWP.B3WeChat.Entities; using BWP.B3WeChat.Utils; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; @@ -38,7 +39,7 @@ namespace BWP.Web.Pages return; } #endregion - + object result = InOutMessageUtil.GetMessage(context.Request); if (result is ReceivedMsg) @@ -74,12 +75,14 @@ namespace BWP.Web.Pages } static void UpdateQRCode(string sceneId, string OppenId) { - var update = new DQUpdateDom(typeof(QRCodeScene)); + var update = new DQUpdateDom(typeof(QRCode)); + logger.Info("sceneId:" + sceneId + ",OppenId" + OppenId); update.Where.Conditions.Add(DQCondition.EQ("ID", sceneId)); update.Columns.Add(new DQUpdateColumn("OppenId", OppenId)); using (var session = Dmo.NewSession()) { session.ExecuteNonQuery(update); + session.Commit(); } } diff --git a/B3WeChat/BO/QRCodeScene.cs b/B3WeChat/BO/QRCodeScene.cs index 047df8c..ba3da3e 100644 --- a/B3WeChat/BO/QRCodeScene.cs +++ b/B3WeChat/BO/QRCodeScene.cs @@ -14,7 +14,7 @@ namespace BWP.B3WeChat.BO [DFClass] [BOClass] [KeyField("ID", KeyGenType.identity)] - public class QRCodeScene + public class QRCode { [LogicName("场景ID")] public int ID { get; set; } @@ -28,7 +28,7 @@ namespace BWP.B3WeChat.BO public string UserId { get; set; } [LogicName("微信号关注ID")] - public int OppenId { get; set; } + public string OppenId { get; set; } [LogicName("QRCode图片")] public string Path { get; set; } diff --git a/B3WeChat/Entities/SendTemplateMessageResult.cs b/B3WeChat/Entities/SendTemplateMessageResult.cs index f7641ca..509609a 100644 --- a/B3WeChat/Entities/SendTemplateMessageResult.cs +++ b/B3WeChat/Entities/SendTemplateMessageResult.cs @@ -10,8 +10,17 @@ namespace BWP.B3WeChat.Entities /// public class SendTemplateMessageResult { - public string errcode { get; set; } + public int errcode { get; set; } public string errmsg { get; set; } public int msgid { get; set; } + + public bool IsError + { + get + { + return errcode > 0; + } + } + } } \ No newline at end of file diff --git a/B3WeChat/Rpcs/ClientRpc.cs b/B3WeChat/Rpcs/ClientRpc.cs index cee4ac2..9b8581a 100644 --- a/B3WeChat/Rpcs/ClientRpc.cs +++ b/B3WeChat/Rpcs/ClientRpc.cs @@ -36,30 +36,29 @@ namespace BWP.B3WeChat.Rpcs [Rpc] public static void Send(string username, string content) { - logger.Info("Send Begin"); - string oppenid = GetOpenId(username).ToString(); - logger.Info("Send+username:" + username + ",content" + content + ",oppenid"); + string oppenid = GetOpenId(username); string[] param = content.Split('|'); switch (param[0]) { case "SendAgentInfo": SendMessageUtil.SendAgentInfo(oppenid, param[1], param[2], param[3], param[4]); break; + default: SendMessageUtil.SendInformInfo(oppenid,"青花瓷软件温馨提醒",DateTime.Now.ToString("yyyy-MM-dd HH:mm"),content,string.Empty,string.Empty,string.Empty,string.Empty); break; } } - static int GetOpenId(string username) + static string GetOpenId(string username) { string customer = GetDeviceNumber(); - var query = new DQueryDom(new JoinAlias(typeof(QRCodeScene))); + var query = new DQueryDom(new JoinAlias(typeof(QRCode))); query.Columns.Add(DQSelectColumn.Field("OppenId")); query.Where.Conditions.Add(DQCondition.EQ("Customer", customer)); query.Where.Conditions.Add(DQCondition.EQ("UserId", username)); query.Range = SelectRange.Top(1); - var OppenId = query.EExecuteScalar(); - if (!OppenId.HasValue) + var OppenId = query.EExecuteScalar(); + if (string.IsNullOrEmpty(OppenId)) { throw new Exception("未找到该微信用户或者" + username + "未关联微信"); } - return OppenId.Value; + return OppenId; } [Rpc] @@ -67,28 +66,25 @@ namespace BWP.B3WeChat.Rpcs { string url = string.Empty; string customer = GetDeviceNumber(); - logger.Info("customer:" + customer + ",username:" + username); int sceneId = GetSceneId(customer, username); string ticket = InOutMessageUtil.GenerateEQCode(30, sceneId); url = string.Format("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}", ticket); - logger.Info("ticket:" + ticket + ",url:" + url); return url; } static int GetSceneId(string customer, string username) { - var query = new DQueryDom(new JoinAlias(typeof(QRCodeScene))); + var query = new DQueryDom(new JoinAlias(typeof(QRCode))); query.Columns.Add(DQSelectColumn.Field("ID")); query.Where.Conditions.Add(DQCondition.EQ("Customer", customer)); query.Where.Conditions.Add(DQCondition.EQ("UserId", username)); query.Range = SelectRange.Top(1); var sceneId = query.EExecuteScalar(); - logger.Info("sceneId:" + sceneId); if (!sceneId.HasValue) { using (var session = Dmo.NewSession()) { - QRCodeScene newSence = new QRCodeScene() + QRCode newSence = new QRCode() { Customer = customer, UserId = username, @@ -96,7 +92,6 @@ namespace BWP.B3WeChat.Rpcs session.Insert(newSence); session.Commit(); sceneId = newSence.ID; - logger.Info("newSenceID:" + sceneId); } } return sceneId.Value; diff --git a/B3WeChat/Utils/InOutMessageUtil.cs b/B3WeChat/Utils/InOutMessageUtil.cs index 4706b9e..7a364f3 100644 --- a/B3WeChat/Utils/InOutMessageUtil.cs +++ b/B3WeChat/Utils/InOutMessageUtil.cs @@ -41,12 +41,11 @@ namespace BWP.B3WeChat.Utils WebClient client = new WebClient(); string responseBody = string.Empty; - logger.Info("GetToken_uriStr:" + uriStr); try { byte[] bytes = client.DownloadData(uriStr); responseBody = Encoding.UTF8.GetString(bytes); - JavaScriptSerializer jsonHelper = new JavaScriptSerializer(); logger.Info("GetToken_responseBody:" + responseBody); + JavaScriptSerializer jsonHelper = new JavaScriptSerializer(); TokenObject obj = jsonHelper.Deserialize(responseBody); if (obj.IsError) { @@ -59,7 +58,6 @@ namespace BWP.B3WeChat.Utils } catch (Exception e) { - logger.Info("GetToken_ERROR:" + responseBody); throw e; } return token; @@ -108,8 +106,12 @@ namespace BWP.B3WeChat.Utils newStream.Write(byteArray, 0, byteArray.Length); newStream.Close(); HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); - data = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd(); + data = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd(); result = jsonHelper.Deserialize(data); + if (result.IsError) + { + throw new Exception(string.Format("{0}:{1}", result.errcode, result.errmsg)); + } } catch (Exception e) { @@ -177,7 +179,6 @@ namespace BWP.B3WeChat.Utils { StreamReader reader = new StreamReader(request.InputStream); String xmlData = reader.ReadToEnd(); - logger.Info("GetMessage_xmlData:" + xmlData); object obj = null; MessageType type = XmlUtil.Deserialize(xmlData); if (type.MsgType == MsgType.文本) @@ -250,11 +251,9 @@ namespace BWP.B3WeChat.Utils } }; string postData = jsonHelper.Serialize(body); - logger.Info("GenerateEQCode_body:" + body); string data = string.Empty; try { - logger.Info("GenerateEQCode_uriStr:" + uriStr); byte[] byteArray = Encoding.UTF8.GetBytes(postData); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(uriStr)); webRequest.Method = "post"; @@ -264,12 +263,11 @@ namespace BWP.B3WeChat.Utils newStream.Write(byteArray, 0, byteArray.Length); newStream.Close(); HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); - data = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();logger.Info("GenerateEQCode_data:" + data); + data = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd(); result = jsonHelper.Deserialize(data); } catch (Exception e) { - logger.Info("GenerateEQCode_ERROR:" + data); throw e; } if (result != null && !string.IsNullOrEmpty(result.ticket)) diff --git a/B3WeChat/Utils/SendMessageUtil.cs b/B3WeChat/Utils/SendMessageUtil.cs index e5000ae..9388661 100644 --- a/B3WeChat/Utils/SendMessageUtil.cs +++ b/B3WeChat/Utils/SendMessageUtil.cs @@ -26,5 +26,29 @@ namespace BWP.B3WeChat.Utils dic.Add("remark", new ValueColor() { value = remark, color = "#173177" }); return InOutMessageUtil.SendTemplateMessage(openid, "uhy7GuF8zwBA6pjvjQWpn02fiKb0o9cq7dO5DWnUuMg", dic); } + /// + /// 发送系统提醒 + /// + /// + /// 题目 + /// 提醒时间 + /// 提醒内容 + /// 操作人 + /// IP地址 + /// 操作时间 + /// 备注 + /// + public static SendTemplateMessageResult SendInformInfo(string openid, string title, string informtime, string informcontent, string who,string ip, string when, string remark) + { + Dictionary dic = new Dictionary(); + dic.Add("first", new ValueColor() { value = title, color = "#173177" }); + dic.Add("keyword1", new ValueColor() { value = informtime, color = "#173177" }); + dic.Add("keyword2", new ValueColor() { value = informcontent, color = "#173177" }); + dic.Add("keyword3", new ValueColor() { value = who, color = "#173177" }); + dic.Add("keyword4", new ValueColor() { value = ip, color = "#173177" }); + dic.Add("keyword5", new ValueColor() { value = when, color = "#173177" }); + dic.Add("remark", new ValueColor() { value = remark, color = "#173177" }); + return InOutMessageUtil.SendTemplateMessage(openid, "JEOjjJ-L-hflfWoHEf7dRMlhj7fCs9NoOYf1iTQ03D4", dic); + } } }