using System.Collections.Generic;
using System;
using Newtonsoft.Json;
using MessgaeApi;
namespace MessageApi
{
public class MessageHelper
{
static log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
/// <summary>
/// 发送方法传参数
/// </summary>
/// <param name="type"></param>
/// <param name="templateId"></param>
/// <param name="Account"></param>
/// <param name="keyPairs"></param>
/// <returns></returns>
public static string SendMessage(int type, string templateId, string Account, Dictionary<string, string> keyPairs)
{
var plan = new MessagePlan()
{
SerialId = "M" + DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Type = type,
TemplateId = templateId,
Account = Account,
KeyPairs = keyPairs
};
return SendMessage(plan);
}
/// <summary>
/// 发送方法传实体
/// </summary>
/// <param name="plan"></param>
/// <returns></returns>
private static string SendMessage(MessagePlan plan)
{
var resMsg = "";
var finalContent = "";
try
{
if (plan == null) return "对象不能为null,请检查!";
if (string.IsNullOrEmpty(plan.TemplateId)) return "模板id不能为空!";
if (string.IsNullOrEmpty(plan.Account)) return "要发送的账户不能为空!";
//替换信息
finalContent = ReplaceContent(plan.KeyPairs, plan.TemplateId);
switch (plan.Type)
{
case 0:
resMsg = SendEms(plan.Account, finalContent);
break;
case 1:
resMsg = SendEmail(plan.Account, finalContent);
break;
case 2:
resMsg = SendQyWx(plan.Account, finalContent);
break;
}
}
catch (Exception ex)
{
resMsg = ex.Message;
}
loginfo.Info($"请求对象:{ JsonConvert.SerializeObject(plan)},发送内容:{finalContent},发送结果:{resMsg}");
return resMsg;
}
/// <summary>
/// 替换内容
/// </summary>
/// <param name="keyPair"></param>
/// <param name="temppateId"></param>
/// <returns></returns>
private static string ReplaceContent(Dictionary<string, string> keyPair, string templateId)
{
//根据id拿到待替换的内容
string sourceContent = GetSourceCountById(templateId);
if (string.IsNullOrEmpty(sourceContent)) return "";
if (keyPair.Keys.Count == 0) return sourceContent;
foreach (var item in keyPair)
{
sourceContent = sourceContent.Replace("{" + item.Key.Trim() + "}", item.Value.Trim());
}
return sourceContent;
}
/// <summary>
/// 根据模板id拿到原始内容
/// </summary>
/// <param name="templateId"></param>
/// <returns></returns>
private static string GetSourceCountById(string templateId)
{
return "【短信】尊敬的:{Name},您的验证码是:{Code}";
}
private static string SendEms(string phone, string message)
{
return "success";
}
private static string SendEmail(string email, string message)
{
return "success";
}
private static string SendQyWx(string employeeNo, string message)
{
return new QYWeChatHelper().SendMessage(employeeNo.Split(','), message);
}
}
/// <summary>
/// 消息实体
/// </summary>
public class MessagePlan
{
/// <summary>
/// 序列号,建议
/// 1: DateTime.Now.ToString("yyyyMMddHHmmssfff");
/// 2: Guid.NewGuid().ToString();
/// </summary>
public string SerialId { get; set; }
/// <summary>
/// 消息类型 0 短信,1邮件,2企业微信
/// </summary>
public int Type { get; set; }
/// <summary>
/// 手机号或者邮件,或者企业微信员工账号,
/// 多个用','隔开
/// </summary>
public string Account { get; set; }
/// <summary>
/// 模板id
/// </summary>
public string TemplateId { get; set; }
/// <summary>
/// key-value ,待替换的值
/// </summary>
public Dictionary<string, string> KeyPairs { get; set; }
/// <summary>
/// 附件地址
/// </summary>
public string AttachedUrl { get; set; }
}
}