Browse Source

添加发送信息默认模板

master
[zhengchao] 9 years ago
parent
commit
b8966b18ca
6 changed files with 58 additions and 29 deletions
  1. +6
    -3
      B3WeChat.Web/Pages/WeChatReceive.cs
  2. +2
    -2
      B3WeChat/BO/QRCodeScene.cs
  3. +10
    -1
      B3WeChat/Entities/SendTemplateMessageResult.cs
  4. +9
    -14
      B3WeChat/Rpcs/ClientRpc.cs
  5. +7
    -9
      B3WeChat/Utils/InOutMessageUtil.cs
  6. +24
    -0
      B3WeChat/Utils/SendMessageUtil.cs

+ 6
- 3
B3WeChat.Web/Pages/WeChatReceive.cs View File

@ -1,4 +1,5 @@
using BWP.B3WeChat.Entities;
using BWP.B3WeChat.BO;
using BWP.B3WeChat.Entities;
using BWP.B3WeChat.Utils; using BWP.B3WeChat.Utils;
using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.DomainObjects2.DQuery;
@ -38,7 +39,7 @@ namespace BWP.Web.Pages
return; return;
} }
#endregion #endregion
object result = InOutMessageUtil.GetMessage(context.Request); object result = InOutMessageUtil.GetMessage(context.Request);
if (result is ReceivedMsg) if (result is ReceivedMsg)
@ -74,12 +75,14 @@ namespace BWP.Web.Pages
} }
static void UpdateQRCode(string sceneId, string OppenId) 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.Where.Conditions.Add(DQCondition.EQ("ID", sceneId));
update.Columns.Add(new DQUpdateColumn("OppenId", OppenId)); update.Columns.Add(new DQUpdateColumn("OppenId", OppenId));
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
session.ExecuteNonQuery(update); session.ExecuteNonQuery(update);
session.Commit();
} }
} }


+ 2
- 2
B3WeChat/BO/QRCodeScene.cs View File

@ -14,7 +14,7 @@ namespace BWP.B3WeChat.BO
[DFClass] [DFClass]
[BOClass] [BOClass]
[KeyField("ID", KeyGenType.identity)] [KeyField("ID", KeyGenType.identity)]
public class QRCodeScene
public class QRCode
{ {
[LogicName("场景ID")] [LogicName("场景ID")]
public int ID { get; set; } public int ID { get; set; }
@ -28,7 +28,7 @@ namespace BWP.B3WeChat.BO
public string UserId { get; set; } public string UserId { get; set; }
[LogicName("微信号关注ID")] [LogicName("微信号关注ID")]
public int OppenId { get; set; }
public string OppenId { get; set; }
[LogicName("QRCode图片")] [LogicName("QRCode图片")]
public string Path { get; set; } public string Path { get; set; }


+ 10
- 1
B3WeChat/Entities/SendTemplateMessageResult.cs View File

@ -10,8 +10,17 @@ namespace BWP.B3WeChat.Entities
/// </summary> /// </summary>
public class SendTemplateMessageResult public class SendTemplateMessageResult
{ {
public string errcode { get; set; }
public int errcode { get; set; }
public string errmsg { get; set; } public string errmsg { get; set; }
public int msgid { get; set; } public int msgid { get; set; }
public bool IsError
{
get
{
return errcode > 0;
}
}
} }
} }

+ 9
- 14
B3WeChat/Rpcs/ClientRpc.cs View File

@ -36,30 +36,29 @@ namespace BWP.B3WeChat.Rpcs
[Rpc] [Rpc]
public static void Send(string username, string content) 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('|'); string[] param = content.Split('|');
switch (param[0]) switch (param[0])
{ {
case "SendAgentInfo": SendMessageUtil.SendAgentInfo(oppenid, param[1], param[2], param[3], param[4]); break; 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(); 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.Columns.Add(DQSelectColumn.Field("OppenId"));
query.Where.Conditions.Add(DQCondition.EQ("Customer", customer)); query.Where.Conditions.Add(DQCondition.EQ("Customer", customer));
query.Where.Conditions.Add(DQCondition.EQ("UserId", username)); query.Where.Conditions.Add(DQCondition.EQ("UserId", username));
query.Range = SelectRange.Top(1); query.Range = SelectRange.Top(1);
var OppenId = query.EExecuteScalar<int?>();
if (!OppenId.HasValue)
var OppenId = query.EExecuteScalar<string>();
if (string.IsNullOrEmpty(OppenId))
{ {
throw new Exception("未找到该微信用户或者" + username + "未关联微信"); throw new Exception("未找到该微信用户或者" + username + "未关联微信");
} }
return OppenId.Value;
return OppenId;
} }
[Rpc] [Rpc]
@ -67,28 +66,25 @@ namespace BWP.B3WeChat.Rpcs
{ {
string url = string.Empty; string url = string.Empty;
string customer = GetDeviceNumber(); string customer = GetDeviceNumber();
logger.Info("customer:" + customer + ",username:" + username);
int sceneId = GetSceneId(customer, username); int sceneId = GetSceneId(customer, username);
string ticket = InOutMessageUtil.GenerateEQCode(30, sceneId); string ticket = InOutMessageUtil.GenerateEQCode(30, sceneId);
url = string.Format("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}", ticket); url = string.Format("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}", ticket);
logger.Info("ticket:" + ticket + ",url:" + url);
return url; return url;
} }
static int GetSceneId(string customer, string username) 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.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.EQ("Customer", customer)); query.Where.Conditions.Add(DQCondition.EQ("Customer", customer));
query.Where.Conditions.Add(DQCondition.EQ("UserId", username)); query.Where.Conditions.Add(DQCondition.EQ("UserId", username));
query.Range = SelectRange.Top(1); query.Range = SelectRange.Top(1);
var sceneId = query.EExecuteScalar<int?>(); var sceneId = query.EExecuteScalar<int?>();
logger.Info("sceneId:" + sceneId);
if (!sceneId.HasValue) if (!sceneId.HasValue)
{ {
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
QRCodeScene newSence = new QRCodeScene()
QRCode newSence = new QRCode()
{ {
Customer = customer, Customer = customer,
UserId = username, UserId = username,
@ -96,7 +92,6 @@ namespace BWP.B3WeChat.Rpcs
session.Insert(newSence); session.Insert(newSence);
session.Commit(); session.Commit();
sceneId = newSence.ID; sceneId = newSence.ID;
logger.Info("newSenceID:" + sceneId);
} }
} }
return sceneId.Value; return sceneId.Value;


+ 7
- 9
B3WeChat/Utils/InOutMessageUtil.cs View File

@ -41,12 +41,11 @@ namespace BWP.B3WeChat.Utils
WebClient client = new WebClient(); WebClient client = new WebClient();
string responseBody = string.Empty; string responseBody = string.Empty;
logger.Info("GetToken_uriStr:" + uriStr);
try try
{ {
byte[] bytes = client.DownloadData(uriStr); byte[] bytes = client.DownloadData(uriStr);
responseBody = Encoding.UTF8.GetString(bytes); responseBody = Encoding.UTF8.GetString(bytes);
JavaScriptSerializer jsonHelper = new JavaScriptSerializer(); logger.Info("GetToken_responseBody:" + responseBody);
JavaScriptSerializer jsonHelper = new JavaScriptSerializer();
TokenObject obj = jsonHelper.Deserialize<TokenObject>(responseBody); TokenObject obj = jsonHelper.Deserialize<TokenObject>(responseBody);
if (obj.IsError) if (obj.IsError)
{ {
@ -59,7 +58,6 @@ namespace BWP.B3WeChat.Utils
} }
catch (Exception e) catch (Exception e)
{ {
logger.Info("GetToken_ERROR:" + responseBody);
throw e; throw e;
} }
return token; return token;
@ -108,8 +106,12 @@ namespace BWP.B3WeChat.Utils
newStream.Write(byteArray, 0, byteArray.Length); newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close(); newStream.Close();
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); 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<SendTemplateMessageResult>(data); result = jsonHelper.Deserialize<SendTemplateMessageResult>(data);
if (result.IsError)
{
throw new Exception(string.Format("{0}:{1}", result.errcode, result.errmsg));
}
} }
catch (Exception e) catch (Exception e)
{ {
@ -177,7 +179,6 @@ namespace BWP.B3WeChat.Utils
{ {
StreamReader reader = new StreamReader(request.InputStream); StreamReader reader = new StreamReader(request.InputStream);
String xmlData = reader.ReadToEnd(); String xmlData = reader.ReadToEnd();
logger.Info("GetMessage_xmlData:" + xmlData);
object obj = null; object obj = null;
MessageType type = XmlUtil.Deserialize<MessageType>(xmlData); MessageType type = XmlUtil.Deserialize<MessageType>(xmlData);
if (type.MsgType == MsgType.) if (type.MsgType == MsgType.)
@ -250,11 +251,9 @@ namespace BWP.B3WeChat.Utils
} }
}; };
string postData = jsonHelper.Serialize(body); string postData = jsonHelper.Serialize(body);
logger.Info("GenerateEQCode_body:" + body);
string data = string.Empty; string data = string.Empty;
try try
{ {
logger.Info("GenerateEQCode_uriStr:" + uriStr);
byte[] byteArray = Encoding.UTF8.GetBytes(postData); byte[] byteArray = Encoding.UTF8.GetBytes(postData);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(uriStr)); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(uriStr));
webRequest.Method = "post"; webRequest.Method = "post";
@ -264,12 +263,11 @@ namespace BWP.B3WeChat.Utils
newStream.Write(byteArray, 0, byteArray.Length); newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close(); newStream.Close();
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); 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<QRCodeResult>(data); result = jsonHelper.Deserialize<QRCodeResult>(data);
} }
catch (Exception e) catch (Exception e)
{ {
logger.Info("GenerateEQCode_ERROR:" + data);
throw e; throw e;
} }
if (result != null && !string.IsNullOrEmpty(result.ticket)) if (result != null && !string.IsNullOrEmpty(result.ticket))


+ 24
- 0
B3WeChat/Utils/SendMessageUtil.cs View File

@ -26,5 +26,29 @@ namespace BWP.B3WeChat.Utils
dic.Add("remark", new ValueColor() { value = remark, color = "#173177" }); dic.Add("remark", new ValueColor() { value = remark, color = "#173177" });
return InOutMessageUtil.SendTemplateMessage(openid, "uhy7GuF8zwBA6pjvjQWpn02fiKb0o9cq7dO5DWnUuMg", dic); return InOutMessageUtil.SendTemplateMessage(openid, "uhy7GuF8zwBA6pjvjQWpn02fiKb0o9cq7dO5DWnUuMg", dic);
} }
/// <summary>
/// 发送系统提醒
/// </summary>
/// <param name="openid"></param>
/// <param name="title">题目</param>
/// <param name="informtime">提醒时间</param>
/// <param name="informcontent">提醒内容</param>
/// <param name="who">操作人</param>
/// <param name="ip">IP地址</param>
/// <param name="when">操作时间</param>
/// <param name="remark">备注</param>
/// <returns></returns>
public static SendTemplateMessageResult SendInformInfo(string openid, string title, string informtime, string informcontent, string who,string ip, string when, string remark)
{
Dictionary<string, ValueColor> dic = new Dictionary<string, ValueColor>();
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);
}
} }
} }

Loading…
Cancel
Save