添加一个触发器,一旦发送成功 则删除这条记录,然后把它保存到历史表里面。
在主窗体中 构造函数里面 增加new Thread(new ThreadStart(DealSend)).Start();private void DealSend()
{
while (true)
{
try
{
using (var db = SugarDao.GetInstance())
{
var list = db.Queryable().ToList();
foreach (var info in list)
{
if (info != null)
{
bool res = SendMessage(info);
if (res)
{
var res2 = db.Delete(info.id);
Thread.Sleep(2 * 1000);//没发送一条暂停2秒 防止服务器压力太大
}
}
}
}
}
catch (Exception ex)
{
Log4netHelper.ErrorLog(ex);
}
//一天最多100000次
Thread.Sleep(10 * 1000);
}
}
private bool SendMessage(TemplateMessage info)
{
var token = TokenHelper.GetTokenInfo();
var url = string.Format(WeiXinAPI.TemplateSend, token.access_token);
string json = string.Empty;
var dym = new
{
touser = info.touser,
template_id = info.template_id,
url = info.url,
data = new
{
first = new
{
value = info.url,
color = "#173177"
},
orderMoneySum = new
{
value = info.keyword1,
color = "#173177"
},
orderProductName = new
{
value = info.keyword2,
color = "#173177"
},
remark = new
{
value = info.remark,
color = "#173177"
}
}
};
json = JsonHelper.SerializeObject(dym);
string res = HttpHelper.HttpPost(url, json);
return true;
}