public void SendFailedMessages(SendMessageDataModel theFaildMessage, string clientAddress) { using (theProxy = new ClientProxy(clientAddress)) { theProxy.SendFailedMessages(theFaildMessage); } }
/// <summary> /// /// </summary> public void Excute() { string returnmessage; if (ValidationAndInit()) { try { ExcuteSelf(); returnmessage = "提交成功,等待被审核"; } catch (ApplicationException ex) { returnmessage = ex.Message; } catch { returnmessage = "提交失败,请联系管理员"; } } else { returnmessage = string.Format("格式错误,{0}", GetTemplageAndExample()); } _SendMessageDataModel = new SendMessageDataModel(-1, _Message.TheNumber, returnmessage, SmsClientProcessCenter._HrmisId); _Sms.SendOneMessage(_SendMessageDataModel); }
public void Test1() { //持久一个对象 SendMessageDataModel aMessage = new SendMessageDataModel(-999, "123456", "hello", "hai,itsMe"); aMessage.SendTime = new DateTime(1999, 1, 1); _TheTarget.SaveSendMessage(aMessage); //加载出来并比较 List <SendMessageDataModel> theMessages = _TheTarget.GetSendMessageByStatus(SendStatusEnum.ToBeSend); Assert.AreEqual(1, theMessages.Count); SendMessageDataModel theLoadedObject = theMessages[0]; Assert.IsTrue(aMessage.Equals(theLoadedObject)); //修改该对象 theLoadedObject.TheStatus = SendStatusEnum.ToBeSend; theLoadedObject.SendTime = new DateTime(1999, 10, 1); theLoadedObject.SystemNumber = "12345"; theLoadedObject.Content = "xxx"; theLoadedObject.HrmisId = "hah"; theLoadedObject.TheStatus = SendStatusEnum.FailSendedCallbacked; theLoadedObject.TriedCount = 99; _TheTarget.SaveSendMessage(theLoadedObject); //查询 List <SendMessageDataModel> theMessagesSecond = _TheTarget.GetSendMessageByStatus(SendStatusEnum.ToBeSend); Assert.AreEqual(0, theMessagesSecond.Count); List <SendMessageDataModel> theMessagesThird = _TheTarget.GetAllSendMessages(); Assert.AreEqual(1, theMessagesThird.Count); Assert.IsTrue(theLoadedObject.Equals(theMessagesThird[0])); }
private void SendOneMessage() { if (ObjectSource.GetMessageBox._WaitSendMessages.Count.Equals(0)) { return; } SendMessageDataModel aMessageToSend = ObjectSource.GetMessageBox._WaitSendMessages[0]; if (aMessageToSend != null) { if (aMessageToSend.TriedCount >= _TryTimes) { //aMessageToSend.IsSuccessed = false; ObjectSource.GetMessageBox.EnqueueFailedMessage(aMessageToSend); SendFailedHandler(aMessageToSend); return; } if (!SendSMS(aMessageToSend)) { aMessageToSend.TriedCount++; aMessageToSend.SendTime = DateTime.Now; ObjectSource.GetMessageBox.EnqueueWaitMessage(aMessageToSend); } else { aMessageToSend.SendTime = DateTime.Now; //aMessageToSend.IsSuccessed = true; ObjectSource.GetMessageBox.EnqueueSuccessMessage(aMessageToSend); } } }
private void SendMessageUpdate(SendMessageDataModel message) { SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_PKID, SqlDbType.Int).Value = message.Pkid; TheNeedParametersForSendMessage(cmd, message); SqlHelper.ExecuteNonQuery("SendMessageUpdate", cmd); }
private void SendFailedHandler(SendMessageDataModel aMessageToSend) { //异步调用事件 if (SendMessageFailed != null) { SendMessageFailed.BeginInvoke(aMessageToSend, new EventArgs(), null, null); } WriteLine(string.Format("发短信失败:发送给的号码是:{0},内容是{1}", aMessageToSend.SendNumber, aMessageToSend.Content)); }
private void TheNeedParametersForSendMessage(SqlCommand cmd, SendMessageDataModel message) { cmd.Parameters.Add(_SendStatusEnum, SqlDbType.Int).Value = message.TheStatus; cmd.Parameters.Add(_SystemSmsId, SqlDbType.Int).Value = message.SystemSmsId; cmd.Parameters.Add(_SendToNumber, SqlDbType.NVarChar, 50).Value = message.SendNumber; cmd.Parameters.Add(_SystemNumber, SqlDbType.NVarChar, 50).Value = message.SystemNumber; cmd.Parameters.Add(_Content, SqlDbType.NVarChar, 1000).Value = message.Content; cmd.Parameters.Add(_TriedCount, SqlDbType.Int).Value = message.TriedCount; cmd.Parameters.Add(_LastestSendTime, SqlDbType.DateTime).Value = message.SendTime < new DateTime(1900, 1, 1) ? new DateTime(1900, 1, 1) : message.SendTime; cmd.Parameters.Add(_HrmisId, SqlDbType.NVarChar, 255).Value = message.HrmisId; }
/// <summary> /// 保存短信,如果是新增的短信则新增,如果只是修改短信,则修改, /// </summary> public void SaveSendMessage(SendMessageDataModel aMessage) { if (!aMessage.IsObjectStatus) { SendMessageInsert(aMessage); } else { SendMessageUpdate(aMessage); } }
private void SendMessageInsert(SendMessageDataModel message) { SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_PKID, SqlDbType.Int).Direction = ParameterDirection.Output; TheNeedParametersForSendMessage(cmd, message); int pkid; SqlHelper.ExecuteNonQueryReturnPKID("SendMessageInsert", cmd, out pkid); message.Pkid = pkid; }
public void DelieveAMessage(SendMessageDataModel aMessage) { try { ObjectSource.GetMessageBox.EnqueueWaitMessage(aMessage); } catch (ApplicationException ae) { throw new FaultException(ae.Message); } }
public bool SendAMessage(SendMessageDataModel aMessage) { try { return(theController.SendAMessage(aMessage)); } catch (ApplicationException ae) { throw new FaultException(ae.Message); } }
public bool SendAMessage(SendMessageDataModel aMessage) { if (!ObjectSource.GetSerialPort.PortIsOpen()) { throw new ApplicationException("端口未打开!"); } if (ObjectSource.GetSmsMachine._WorkNow) { throw new ApplicationException("短信收发线程工作中,无法向端口发送数据"); } return(ObjectSource.GetSmsMachine.SendSMS(aMessage)); }
public void SendFailedMessages(SendMessageDataModel theFaildMessage) { try { StreamWriter sw = new StreamWriter(@"c:\messages.txt", true); sw.WriteLine(theFaildMessage.ToString()); sw.Flush(); sw.Close(); } catch { } }
public bool SendSMS(SendMessageDataModel messageToSend) { //判断短信的字数是否符合规范 int theLength = messageToSend.Content.Length; if (theLength == 0 || theLength > _CutCount * 70) { return(false); } //计算需要发送的短信条数 int theCount = theLength / 70; int theYuShu = theLength % 70; int theAdditionalCount = theYuShu == 0 ? 0 : 1; int realCount = theCount + theAdditionalCount; //切割短信并发送,其中有任意一小条短信发送不成功将视为整个短信发送不成功 _SendPieceMessages.Clear(); for (int index = 0; index < realCount; index++) { //最后一条与之前的短信应该分别处理 if (index < realCount - 1) { _SendPieceMessages.Add(new SendMessageDataModel(messageToSend.SystemSmsId, messageToSend.SendNumber, messageToSend.Content.Substring(70 * index, 70), null)); } else { _SendPieceMessages.Add(new SendMessageDataModel(messageToSend.SystemSmsId, messageToSend.SendNumber, messageToSend.Content.Substring(70 * index), null)); } } foreach (SendMessageDataModel aStandMessage in _SendPieceMessages) { if (!SendStandardSms(aStandMessage)) { return(false); } //应为多条短信留有间隔发送的缓冲,否则可能发送不成功 if (_SendPieceMessages.Count > 1) { Thread.Sleep(2000); } } return(true); }
public void SendOneMessage(SendMessageDataModel aMessage) { Account account = DalInstance.AccountDalInstance.GetAccountByMobileNum(aMessage.SendNumber); if (account == null || !account.IsAcceptSMS) { return; } try { sendSMS.SendOneMessage(aMessage); } catch { } }
public void SendOneMessage(SendMessageDataModel aMessage) { if (!SmsClientProcessCenter.GetSmsServiceEnable.Enable) { throw new ApplicationException("业务已经完成,短信发送失败,具体原因,请联系管理员查看"); } try { ISmsServiceContract proxy = new ChannelFactory <ISmsServiceContract>("ISmsServiceContractService").CreateChannel(); proxy.SendOneMessage(aMessage); ((IChannel)proxy).Close(); } catch (FaultException) { throw new ApplicationException("业务已经完成,短信发送失败,无法访问服务,请联系管理员尝试重置短信服务"); } }
/// <summary> /// 发送标准的字符不超过70的短信,若超过70,则无法发送成功 /// </summary> private bool SendStandardSms(SendMessageDataModel standradMessageToSend) { try { PduEncoding thePdu = new PduEncoding(); string decodedSMS = thePdu.smsDecodedsms(standradMessageToSend.SystemNumber, standradMessageToSend.SendNumber, standradMessageToSend.Content); //发送第一步 字节数 _TheSerialPort.SendString(String.Format("AT+CMGS={0}\r", thePdu.nLength)); _TheSerialPort.ReadTo("> ", 10000); //发送第二步 内容 _TheSerialPort.SendString(String.Format("{0}\x01a", decodedSMS)); _TheSerialPort.ReadTo("+CMGS:", 12000); _TheSerialPort.ReadTo("OK", 2000); return(true); } catch { return(false); } }
public void OnSendFailedMessages(SendMessageDataModel failedMessage) { foreach (ClientInformationModel cam in _TheDal.GetAllClientInfomationModel()) { if (cam.HrmisId.Equals(failedMessage.HrmisId)) { foreach (string address in cam.GetBoardCastAddress()) { try { _TheSingleClientProxy.SendFailedMessages(failedMessage, address); } catch { cam.CloseTheAddress(address); _TheDal.UpdateClientInfomationModel(cam); } } } } }
public List <SendMessageDataModel> GetAllSendMessages() { List <SendMessageDataModel> retVal = new List <SendMessageDataModel>(); SqlCommand cmd = new SqlCommand(); using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetAllSendMessage", cmd)) { while (sdr.Read()) { SendMessageDataModel aMessage = new SendMessageDataModel(int.Parse(sdr[_DBSystemSmsId].ToString()), sdr[_DBSendToNumber].ToString(), sdr[_DBContent].ToString(), sdr[_DBHrmisId].ToString()); aMessage.SystemNumber = sdr[_DBSystemNumber].ToString(); aMessage.TheStatus = (SendStatusEnum)sdr[_DBSendStatusEnum]; aMessage.TriedCount = int.Parse(sdr[_DBTriedCount].ToString()); aMessage.SendTime = DateTime.Parse(sdr[_DBLastestSendTime].ToString()); aMessage.IsObjectStatus = true; aMessage.Pkid = int.Parse(sdr[_DBPKID].ToString()); retVal.Add(aMessage); } } return(retVal); }
public static bool SendAMessage(SendMessageDataModel aMessage) { if (!SmsClientProcessCenter.GetSmsServiceEnable.Enable) { if (SmsClientProcessCenter.GetSmsServiceEnable.SmsFailedTypes == SmsFailedType.Others) { throw new ApplicationException("业务已经完成,短信发送失败,具体原因,请联系管理员查看"); } return(false); } try { ISmsServiceContract proxy = new ChannelFactory <ISmsServiceContract>("ISmsServiceContractService").CreateChannel(); proxy.SendOneMessage(aMessage); ((IChannel)proxy).Close(); } catch { throw new ApplicationException("业务已经完成,短信发送失败,无法访问服务,请联系管理员重置短信服务"); } return(true); }
public void EnqueueWaitMessage(SendMessageDataModel aMessage) { aMessage.TheStatus = SendStatusEnum.ToBeSend; _TheDal.SaveSendMessage(aMessage); }
public void EnqueueFaildMessageCallBacked(SendMessageDataModel aMessage) { aMessage.TheStatus = SendStatusEnum.FailSendedCallbacked; _TheDal.SaveSendMessage(aMessage); }
public void EnqueueFailedMessage(SendMessageDataModel aMessage) { aMessage.TheStatus = SendStatusEnum.FailSendedToBeCallback; _TheDal.SaveSendMessage(aMessage); }
public void EnqueueSuccessMessage(SendMessageDataModel aMessage) { aMessage.TheStatus = SendStatusEnum.SuccessSended; _TheDal.SaveSendMessage(aMessage); }
public void FailedSendMessageProcess(SendMessageDataModel theFaildMessage) { }
public void OnSendFailedMessages(SendMessageDataModel failedMessage) { WriteMessage(string.Format("消息发送失败\r发给:{0}\r内容是:{1}\r在系统中的编号是:{2}", failedMessage.SendNumber, failedMessage.Content, failedMessage.SystemSmsId)); }
public void SendFailedMessages(SendMessageDataModel theFaildMessage) { _Proxy.SendFailedMessages(theFaildMessage); }
/// <summary> /// 消息发送失败 /// </summary> public void SendFailedMessages(SendMessageDataModel theFaildMessage) { _ConfirmMesageFacade.FailedSendMessageProcess(theFaildMessage); }
public void SendFailedMessages(SendMessageDataModel theFaildMessage, string clientAddress) { _SendFailedMessages.Add(clientAddress); }
public void SendFailedMessages(SendMessageDataModel theFaildMessage) { Console.WriteLine(string.Format("第{0}次调用发送失败消息:", _SendFailedMessages) + theFaildMessage); }