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


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

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


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

@ -10,8 +10,17 @@ namespace BWP.B3WeChat.Entities
/// </summary>
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;
}
}
}
}

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

@ -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<int?>();
if (!OppenId.HasValue)
var OppenId = query.EExecuteScalar<string>();
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<int?>();
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;


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

@ -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<TokenObject>(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<SendTemplateMessageResult>(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<MessageType>(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<QRCodeResult>(data);
}
catch (Exception e)
{
logger.Info("GenerateEQCode_ERROR:" + data);
throw e;
}
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" });
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