• 章节:26
  • 访问:833
  • 时长:00:16:30
  • 日期:2020-01-10 08:52

添加一个触发器,一旦发送成功 则删除这条记录,然后把它保存到历史表里面。

在主窗体中 构造函数里面 增加

new Thread(new ThreadStart(DealSend)).Start();
private void DealSend()
        {
            while (true)
            {
                try
                {
                    using (var db = SugarDao.GetInstance())
                    {
                        var list = db.Queryable<TemplateMessage>().ToList();
                        foreach (var info in list)
                        {
                            if (info != null)
                            {
                                bool res = SendMessage(info);
                                if (res)
                                {
                                    var res2 = db.Delete<TemplateMessage, int>(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;
        }