コード例 #1
0
 public void SendFailedMessages(SendMessageDataModel theFaildMessage, string clientAddress)
 {
     using (theProxy = new ClientProxy(clientAddress))
     {
         theProxy.SendFailedMessages(theFaildMessage);
     }
 }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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]));
        }
コード例 #4
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);
                }
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 private void SendFailedHandler(SendMessageDataModel aMessageToSend)
 {
     //异步调用事件
     if (SendMessageFailed != null)
     {
         SendMessageFailed.BeginInvoke(aMessageToSend, new EventArgs(), null, null);
     }
     WriteLine(string.Format("发短信失败:发送给的号码是:{0},内容是{1}", aMessageToSend.SendNumber, aMessageToSend.Content));
 }
コード例 #7
0
 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;
 }
コード例 #8
0
 /// <summary>
 /// 保存短信,如果是新增的短信则新增,如果只是修改短信,则修改,
 /// </summary>
 public void SaveSendMessage(SendMessageDataModel aMessage)
 {
     if (!aMessage.IsObjectStatus)
     {
         SendMessageInsert(aMessage);
     }
     else
     {
         SendMessageUpdate(aMessage);
     }
 }
コード例 #9
0
        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;
        }
コード例 #10
0
 public void DelieveAMessage(SendMessageDataModel aMessage)
 {
     try
     {
         ObjectSource.GetMessageBox.EnqueueWaitMessage(aMessage);
     }
     catch (ApplicationException ae)
     {
         throw new FaultException(ae.Message);
     }
 }
コード例 #11
0
 public bool SendAMessage(SendMessageDataModel aMessage)
 {
     try
     {
         return(theController.SendAMessage(aMessage));
     }
     catch (ApplicationException ae)
     {
         throw new FaultException(ae.Message);
     }
 }
コード例 #12
0
 public bool SendAMessage(SendMessageDataModel aMessage)
 {
     if (!ObjectSource.GetSerialPort.PortIsOpen())
     {
         throw new ApplicationException("端口未打开!");
     }
     if (ObjectSource.GetSmsMachine._WorkNow)
     {
         throw new ApplicationException("短信收发线程工作中,无法向端口发送数据");
     }
     return(ObjectSource.GetSmsMachine.SendSMS(aMessage));
 }
コード例 #13
0
 public void SendFailedMessages(SendMessageDataModel theFaildMessage)
 {
     try
     {
         StreamWriter sw = new StreamWriter(@"c:\messages.txt", true);
         sw.WriteLine(theFaildMessage.ToString());
         sw.Flush();
         sw.Close();
     }
     catch
     {
     }
 }
コード例 #14
0
        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);
        }
コード例 #15
0
        public void SendOneMessage(SendMessageDataModel aMessage)
        {
            Account account = DalInstance.AccountDalInstance.GetAccountByMobileNum(aMessage.SendNumber);

            if (account == null || !account.IsAcceptSMS)
            {
                return;
            }

            try
            {
                sendSMS.SendOneMessage(aMessage);
            }
            catch
            {
            }
        }
コード例 #16
0
        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("业务已经完成,短信发送失败,无法访问服务,请联系管理员尝试重置短信服务");
            }
        }
コード例 #17
0
 /// <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);
     }
 }
コード例 #18
0
 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);
                 }
             }
         }
     }
 }
コード例 #19
0
        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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
 public void EnqueueWaitMessage(SendMessageDataModel aMessage)
 {
     aMessage.TheStatus = SendStatusEnum.ToBeSend;
     _TheDal.SaveSendMessage(aMessage);
 }
コード例 #22
0
 public void EnqueueFaildMessageCallBacked(SendMessageDataModel aMessage)
 {
     aMessage.TheStatus = SendStatusEnum.FailSendedCallbacked;
     _TheDal.SaveSendMessage(aMessage);
 }
コード例 #23
0
 public void EnqueueFailedMessage(SendMessageDataModel aMessage)
 {
     aMessage.TheStatus = SendStatusEnum.FailSendedToBeCallback;
     _TheDal.SaveSendMessage(aMessage);
 }
コード例 #24
0
 public void EnqueueSuccessMessage(SendMessageDataModel aMessage)
 {
     aMessage.TheStatus = SendStatusEnum.SuccessSended;
     _TheDal.SaveSendMessage(aMessage);
 }
コード例 #25
0
 public void FailedSendMessageProcess(SendMessageDataModel theFaildMessage)
 {
 }
コード例 #26
0
 public void OnSendFailedMessages(SendMessageDataModel failedMessage)
 {
     WriteMessage(string.Format("消息发送失败\r发给:{0}\r内容是:{1}\r在系统中的编号是:{2}", failedMessage.SendNumber, failedMessage.Content, failedMessage.SystemSmsId));
 }
コード例 #27
0
 public void SendFailedMessages(SendMessageDataModel theFaildMessage)
 {
     _Proxy.SendFailedMessages(theFaildMessage);
 }
コード例 #28
0
 /// <summary>
 /// 消息发送失败
 /// </summary>
 public void SendFailedMessages(SendMessageDataModel theFaildMessage)
 {
     _ConfirmMesageFacade.FailedSendMessageProcess(theFaildMessage);
 }
コード例 #29
0
 public void SendFailedMessages(SendMessageDataModel theFaildMessage, string clientAddress)
 {
     _SendFailedMessages.Add(clientAddress);
 }
コード例 #30
0
 public void SendFailedMessages(SendMessageDataModel theFaildMessage)
 {
     Console.WriteLine(string.Format("第{0}次调用发送失败消息:", _SendFailedMessages) + theFaildMessage);
 }