private void SendMsg()
        {
            string content = rtxtInputBox.Text.Trim();

            if (content == "")
            {
                MessageBoxAdapter.ShowInfo("发送内容不能为空,请重新输入");
                rtxtInputBox.Text = "";
                return;
            }
            string openId  = this.Name;
            string url     = TheMotherWin.WeiXinOfServiceOnlineInovkeAddress + "/api/share/v1/SendWXMessage";
            string payLoad = new WXRequestTextMessage {
                touser = openId, msgtype = WXRequestMessageType.text.ToString(), text = new WXTextMessageWrapper {
                    content = content
                }
            }.ToJson();

            HttpAdapter.postAsyncStr(url, payLoad, (ret1, res1) =>
            {
                webBrowser.Document.InvokeScript("sendMsg", new object[] { content });
                rtxtInputBox.Text = "";
            }, (he) =>
            {
                MessageBoxAdapter.ShowInfo("发送失败:" + he.Message);
            });
        }
Esempio n. 2
0
        public InvokeResult <string> SendWXMessageSchedule()
        {
            InvokeResult <string> result = new InvokeResult <string>();

            try
            {
                IList <WXSend> messagesToSend = BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).ListByPage <WXSend>(new WXSend {
                    Status = 0
                }.ToStringObjectDictionary(false), new ListPager {
                    PageNo = 1, PageSize = 10, OrderByClause = "ScheduleTime"
                });
                if (messagesToSend.Count == 0)
                {
                    //无消息需要发送
                    result.ret = "无消息需要发送";
                }
                else
                {
                    string batchNum = RandomAdapter.GetRandomString(8);
                    List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                    List <string> errMsgs = new List <string>();
                    foreach (WXSend messageToSend in messagesToSend)
                    {
                        string payload;
                        if (messageToSend.SendCatalog.ToLower() == WXRequestMessageType.text.ToString())
                        {
                            payload = new WXRequestTextMessage {
                                touser = messageToSend.toUserName, msgtype = WXRequestMessageType.text.ToString(), text = new WXTextMessageWrapper {
                                    content = messageToSend.SendContent.ReplaceEmoji()
                                }
                            }.ToJson();
                        }
                        else if (messageToSend.SendCatalog.ToLower() == WXRequestMessageType.news.ToString())
                        {
                            WXRequestNewsItem newsItem = JsonConvert.DeserializeObject <WXRequestNewsItem>(messageToSend.SendContent.ReplaceEmoji());
                            payload = new WXRequestNewsMessage {
                                touser = messageToSend.toUserName, msgtype = WXRequestMessageType.news.ToString(), news = new WXNewsMessageWrapper {
                                    articles = new List <WXRequestNewsItem> {
                                        newsItem
                                    }
                                }
                            }.ToJson();
                        }
                        else
                        {
                            payload = "";
                        }
                        _SendWXMessage(payload, () =>
                        {
                            statements.Add(new IBatisNetBatchStatement {
                                StatementName = messageToSend.GetUpdateMethodName(), ParameterObject = new { Id = messageToSend.Id, BatchNum = batchNum, SendTime = DateTime.Now, Status = 1, SendResult = 0 }.ToStringObjectDictionary(), Type = SqlExecuteType.UPDATE
                            });
                        }, (errCode, errMsg) =>
                        {
                            errMsgs.Add(errMsg);
                            statements.Add(new IBatisNetBatchStatement {
                                StatementName = messageToSend.GetUpdateMethodName(), ParameterObject = new { Id = messageToSend.Id, BatchNum = batchNum, SendTime = DateTime.Now, Status = 2, SendResult = errCode }.ToStringObjectDictionary(), Type = SqlExecuteType.UPDATE
                            });
                        });
                    }

                    if (statements.Count > 0)
                    {
                        BuilderFactory.DefaultBulder(GlobalManager.getConnectString()).ExecuteNativeSqlNoneQuery(statements);
                    }
                    result.ret = "发送成功->发送批号:" + batchNum;
                    if (errMsgs.Count > 0)
                    {
                        result.ret = "发送失败->发送批号:" + batchNum + " 错误:" + string.Join(";", errMsgs.Distinct().ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                result.ErrorCode    = 59997;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }