Beispiel #1
0
        public int SingleSend(SendMsgStruct msg)
        {
            int result = -1;

            try
            {
                object[] objArray = new object[10];
                objArray[0] = msg.TelNumber;
                objArray[1] = msg.Content;
                objArray[2] = "";
                objArray[3] = "g";
                objArray[4] = "1010340110101";
                objArray[5] = "科研诚信分公司";
                objArray[6] = "kycx01";
                objArray[7] = "科研诚信";
                objArray[8] = "";
                objArray[9] = true;

                result = (int)WebServiceHelper.InvokeWebService(url, "SMS_Add_ForAll", objArray);
            }
            catch (Exception ex)
            {
                AsyncHelper.RunSync <bool>(() => Manager.Instance.WriteLogFile("cnki发送msg出现问题", ex));
                result = -2;
            }

            return(result);
        }
Beispiel #2
0
        public void CnkiSendAction(List <SendMsgStruct> array)
        {
            foreach (SendMsgStruct item in array)
            {
                item.HName    = SMSHandlerType.Cnki.ToString();
                item.SendTime = DateTime.Now.Ticks;

                Task.Factory.StartNew(() =>
                {
                    try
                    {
                        int result = CnkiSender.Instance.SingleSend(item);

                        if (result == 1)
                        {
                            item.SendState = (int)SendStateType.SendOK;
                        }
                        else
                        {
                            item.SendState = (int)SendStateType.SendError;

                            if (result == -1)
                            {
                                item.ErrorMsg = "对不起,IP不在范围内!";
                            }
                            else if (result == -2)
                            {
                                item.ErrorMsg = "对不起,IP不在范围内!";
                            }
                            else if (result == -100)
                            {
                                item.ErrorMsg = "用户的手机号不正确!";
                            }
                            else
                            {
                                item.ErrorMsg = result.ToString();
                            }
                        }

                        Manager.Instance.WriteLogDB_SMSSendList(SendMsgStruct.Copy(item));
                    }
                    catch (Exception ex)
                    {
                        AsyncHelper.RunSync <bool>(() => Manager.Instance.WriteLogFile("SingleSend出现异常", ex));
                    }
                });
            }
        }
Beispiel #3
0
 public async Task<bool> WriteLogDB_SMSSendList(SendMsgStruct logContent)
 {
     AbstractWorker theWorker = GetWorker("SendDBLogWorker", "SendDBLogWorker");
     var result = await theWorker.PushAsync(logContent);
     return result;
 }
Beispiel #4
0
        private List <SendMsgStruct> EmaySendAction(ReceiveMsgStruct[] array)
        {
            //if (array.Length>0 && array[0] == null)
            //{
            //    Debug.WriteLine("becalled");
            //    return new List<SendMsgStruct>();
            //}

            List <SendMsgStruct> ErrorResultList = new List <SendMsgStruct>();

            if (array != null && array.Length > 0)
            {
                List <ReceiveMsgStruct> copyList = new List <ReceiveMsgStruct>();

                Guid BatchID = UniqueIDMaker.Make();
                LastExecTime = DateTime.Now;

                SMSRequestBody body = new SMSRequestBody();

                foreach (ReceiveMsgStruct item in array)
                {
                    if (item.ReceiveTime + 30 * 10000000 < LastExecTime.Ticks)
                    {
                        //"请求已过期";
                        SendMsgStruct sendItem = new SendMsgStruct()
                        {
                            CSShortName = item.CSShortName,
                            UserName    = item.UserName,
                            HName       = SMSHandlerType.Emay.ToString(),
                            UniqueID    = item.UniqueID,
                            ReceiveTime = item.ReceiveTime,
                            TelNumber   = item.TelNumber,
                            Content     = item.Content,
                            BatchID     = BatchID,
                            SendTime    = LastExecTime.Ticks,
                            SendState   = (int)SendStateType.OutTime
                        };

                        AsyncHelper.RunSync <bool>(() => Manager.Instance.WriteLogDB_SMSSendList(SendMsgStruct.Copy(sendItem)));
                    }
                    else
                    {
                        copyList.Add(item);
                        body.smses.Add(new SMSRequestEntity()
                        {
                            mobile      = item.TelNumber,
                            content     = item.Content,
                            customSmsId = ""
                        });
                    }
                }

                if (copyList.Count == 0)
                {
                    return(ErrorResultList);
                }

                //使用copyList来处理发送

                body.requestTime = DateTime.Now.Ticks;
                SMSResponseBody responseBody = EmaySender.Instance.BatchSend(body);

                //#region forTestCnki
                //SMSResponseBody responseBody = new SMSResponseBody();
                //responseBody.flag = false;
                //responseBody.resultCode = "forTestCnki";
                //#endregion

                //加入dblog
                foreach (ReceiveMsgStruct item in copyList)
                {
                    SendMsgStruct sendItem = new SendMsgStruct()
                    {
                        CSShortName = item.CSShortName,
                        UserName    = item.UserName,
                        HName       = SMSHandlerType.Emay.ToString(),
                        UniqueID    = item.UniqueID,
                        ReceiveTime = item.ReceiveTime,
                        TelNumber   = item.TelNumber,
                        Content     = item.Content,
                        BatchID     = BatchID,
                        SendTime    = body.requestTime
                    };
                    if (responseBody != null && responseBody.flag == true)
                    {
                        sendItem.SendState = (int)SendStateType.SendOK;
                    }
                    else
                    {
                        sendItem.SendState = (int)SendStateType.SendError;
                        sendItem.ErrorMsg  = (responseBody == null ? "SendException" : responseBody.resultCode);

                        ErrorResultList.Add(sendItem);
                    }

                    AsyncHelper.RunSync <bool>(() => Manager.Instance.WriteLogDB_SMSSendList(SendMsgStruct.Copy(sendItem)));
                }
            }
            //防止引用结果被篡改
            List <SendMsgStruct> resultList = new List <SendMsgStruct>();

            foreach (SendMsgStruct item in ErrorResultList)
            {
                resultList.Add(SendMsgStruct.Copy(item));
            }

            return(ErrorResultList);
        }