Example #1
0
        public string PreviewTemplate(SmsTemplateInfo model)
        {
            try
            {
                model.TemplateType = model.TemplateType.Trim();
                model.SmsContent   = model.SmsContent.Trim();
                model.OrderCode    = model.OrderCode.Trim();
                model.ParamsCode   = model.ParamsCode.Trim();
                model.ParamsCode   = model.ParamsCode.Trim();

                if (model.TemplateType == "auto")
                {
                    if (model.OrderCode == "")
                    {
                        return("订单号不能为空字符串,自动模板类型必须有订单号才能预览");
                    }
                }

                SmsTemplate smstBll = new SmsTemplate();
                return(smstBll.GetTemplateContent(model.OrderCode, model));
            }
            catch (Exception ex)
            {
                return("异常:" + ex.Message + "");
            }
        }
Example #2
0
        public string PreviewTemplate(string orderCode, object templateId)
        {
            try
            {
                string content = "";

                if (templateId.ToString() == "")
                {
                    return(MessageContent.GetString(MessageContent.Request_Data_Invalid, "当前模板"));
                }

                Guid gId = Guid.Empty;
                Guid.TryParse(templateId.ToString(), out gId);
                if (gId.Equals(Guid.Empty))
                {
                    return(MessageContent.GetString(MessageContent.Request_InvalidArgument, "模板ID"));
                }

                SmsTemplate smstBll = new SmsTemplate();
                var         model   = smstBll.GetModel(gId);
                if (model == null)
                {
                    return(MessageContent.GetString(MessageContent.Request_Data_Invalid, "当前模板"));
                }
                if (model.TemplateType == "auto")
                {
                    if (string.IsNullOrEmpty(orderCode.Trim()))
                    {
                        return("当前模板为自动类型,订单号为必填项");
                    }

                    return(smstBll.GetTemplateContent(model.Id, orderCode));
                }
                else if (model.TemplateType == "custom")
                {
                    content = string.Format(model.SmsContent, model.ParamsValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                }
                else
                {
                    content = model.SmsContent;
                }

                return(content);
            }
            catch (Exception ex)
            {
                return("异常:" + ex.Message);
            }
        }
Example #3
0
        public string PreviewSmsSend(SmsSendInfo model)
        {
            try
            {
                model.NumberType    = model.NumberType.Trim();
                model.SmsTemplateId = model.SmsTemplateId.ToString().Trim();
                model.NumberCode    = model.NumberCode.Trim();
                model.ParamsCode    = model.ParamsCode.Trim();

                if (model.SmsTemplateId.ToString() != "")
                {
                    #region 使用模板

                    Guid templateId = Guid.Empty;
                    Guid.TryParse(model.SmsTemplateId.ToString(), out templateId);
                    if (templateId.Equals(Guid.Empty))
                    {
                        return(MessageContent.GetString(MessageContent.Request_InvalidArgument, "模板ID"));
                    }

                    SmsTemplate smstBll   = new SmsTemplate();
                    var         smstModel = smstBll.GetModel(templateId);
                    if (smstModel == null)
                    {
                        return(MessageContent.GetString(MessageContent.Request_Data_Invalid, "当前模板"));
                    }
                    if (smstModel.TemplateType == "auto")
                    {
                        if (model.NumberType != "OrderCode")
                        {
                            return("当选择的模板类型为自动类型时,号码类型必须是订单号才能预览");
                        }

                        return(smstBll.GetTemplateContent(model.SmsTemplateId, model.NumberCode));
                    }
                    else if (model.TemplateType == "custom")
                    {
                        return(string.Format(model.SmsContent, model.ParamsValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)));
                    }
                    else
                    {
                        return(model.SmsContent);
                    }

                    #endregion
                }
                else if (model.TemplateType == "auto")
                {
                    if (model.NumberType != "OrderCode" || model.ParamsCode == "")
                    {
                        return("当选择的模板类型为自动类型时,号码类型必须是订单号,且必须选择参数才能预览,");
                    }
                    SmsSend ssBll = new SmsSend();
                    return(ssBll.GetSmsContent(model.NumberCode, model.SmsContent, model.ParamsCode));
                }
                else if (model.TemplateType == "custom")
                {
                    return(string.Format(model.SmsContent, model.ParamsValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)));
                }
                else
                {
                    return(model.SmsContent);
                }
            }
            catch (Exception ex)
            {
                return("异常:" + ex.Message);
            }
        }
        private static void WorkProcessor()
        {
            try
            {
                TimeSpan tsTimeout = TimeSpan.FromSeconds(Convert.ToDouble(transactionTimeout * batchSize));
                SmsSend  smsBll    = new SmsSend();

                while (true)
                {
                    TimeSpan datetimeStarting = new TimeSpan(DateTime.Now.Ticks);
                    double   elapsedTime      = 0;
                    int      processedItems   = 0;

                    List <SmsSendInfo> smsList = new List <Model.SmsSendInfo>();
                    SmsTemplate        smstBll = new SmsTemplate();
                    Order oBll = new Order();

                    for (int j = 0; j < batchSize; j++)
                    {
                        try
                        {
                            if ((elapsedTime + queueTimeout + transactionTimeout) < tsTimeout.TotalSeconds)
                            {
                                smsList.Add(smsBll.ReceiveFromQueue(queueTimeout));
                            }
                            else
                            {
                                j = batchSize;   // exit loop
                            }

                            //update elapsed time
                            elapsedTime = new TimeSpan(DateTime.Now.Ticks).TotalSeconds - datetimeStarting.TotalSeconds;
                        }
                        catch (TimeoutException)
                        {
                            //exit loop because no more messages are waiting
                            j = batchSize;
                        }
                    }

                    if (smsList.Count > 0)
                    {
                        foreach (var smsModel in smsList)
                        {
                            try
                            {
                                if (!string.IsNullOrEmpty(smsModel.MobilePhone))
                                {
                                    string sendContent = "";

                                    Guid templateId = Guid.Empty;
                                    if (smsModel.SmsTemplateId != null)
                                    {
                                        Guid.TryParse(smsModel.SmsTemplateId.ToString(), out templateId);
                                    }
                                    if (!templateId.Equals(Guid.Empty))
                                    {
                                        #region 使用模板发送

                                        sendContent = smstBll.GetTemplateContent(templateId, "");

                                        if (sendContent == "")
                                        {
                                            WriteLog log = new WriteLog();
                                            log.Write("手机号:“" + smsModel.MobilePhone + "”,使用了模板(ID:" + templateId + "),但是模板不存在或已被删除,无法发送短信");
                                            continue;
                                        }

                                        #endregion
                                    }
                                    else if (!string.IsNullOrEmpty(smsModel.SmsContent))
                                    {
                                        sendContent = smsModel.SmsContent;
                                    }

                                    if (string.IsNullOrEmpty(sendContent))
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("手机号:“" + smsModel.MobilePhone + "”,短信内容为空,无法发送短信");
                                        continue;
                                    }

                                    //发送短信并写入数据库
                                    smsModel.SmsContent = sendContent;
                                    SmsSendAndInsert(smsModel, null);
                                }

                                else if (!string.IsNullOrEmpty(smsModel.OrderCode))
                                {
                                    DataTable dt         = null;
                                    string    sendMobile = "";

                                    smsBll.GetSmsSendMobile(smsModel.OrderCode, smsModel.TranNode, out sendMobile, out dt);

                                    if (string.IsNullOrEmpty(sendMobile))
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("订单号:" + smsModel.OrderCode + ",运输环节:" + smsModel.TranNodeText + ",异常:发货方或收货方手机号为空值或无效,无法发送短信");
                                        continue;
                                    }

                                    string[]      mobiles     = sendMobile.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                    List <string> contentList = GetSmsContent(smsModel, dt);
                                    if (contentList.Count != mobiles.Length)
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("订单号:" + smsModel.OrderCode + ",运输环节:" + smsModel.TranNodeText + ",异常:发货方或收货方短信模板找不到或已被删除,无法发送短信");
                                        continue;
                                    }

                                    for (var i = 0; i < mobiles.Length; i++)
                                    {
                                        smsModel.MobilePhone = mobiles[i];
                                        smsModel.SmsContent  = contentList[i];

                                        SmsSendAndInsert(smsModel, dt);
                                    }
                                }
                                else if (!string.IsNullOrEmpty(smsModel.CarScanCode))
                                {
                                    string[] orders = oBll.GetOrderByCarcode(smsModel.CarScanCode);
                                    if (orders.Length == 0)
                                    {
                                        WriteLog log = new WriteLog();
                                        log.Write("派车单号:" + smsModel.CarScanCode + ",没有任何订单号,无法发送短信");
                                        continue;
                                    }
                                    foreach (string orderCode in orders)
                                    {
                                        DataTable dt         = null;
                                        string    sendMobile = "";

                                        smsBll.GetSmsSendMobile(orderCode, smsModel.TranNode == null ? "" : smsModel.TranNode, out sendMobile, out dt);

                                        if (string.IsNullOrEmpty(sendMobile))
                                        {
                                            WriteLog log = new WriteLog();
                                            log.Write("派车单号:“" + smsModel.CarScanCode + "”,订单号:" + orderCode + ",异常:发货方或收货方手机号为空值或无效,无法发送短信");
                                            continue;
                                        }

                                        string[]      mobiles     = sendMobile.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                        List <string> contentList = GetSmsContent(smsModel, dt);
                                        if (contentList.Count != mobiles.Length)
                                        {
                                            WriteLog log = new WriteLog();
                                            log.Write("订单号:" + smsModel.OrderCode + ",运输环节:" + smsModel.TranNodeText + ",异常:发货方或收货方短信模板找不到或已被删除,无法发送短信");
                                            continue;
                                        }

                                        for (var i = 0; i < mobiles.Length; i++)
                                        {
                                            smsModel.MobilePhone = mobiles[i];
                                            smsModel.SmsContent  = contentList[i];

                                            SmsSendAndInsert(smsModel, dt);
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                WriteLog log         = new WriteLog();
                                string   errorAppend = "";
                                if (!string.IsNullOrEmpty(smsModel.MobilePhone))
                                {
                                    errorAppend += "手机号:" + smsModel.MobilePhone + "";
                                }
                                if (!string.IsNullOrEmpty(smsModel.OrderCode))
                                {
                                    errorAppend += "订单号:" + smsModel.OrderCode + "";
                                }
                                if (!string.IsNullOrEmpty(smsModel.CarScanCode))
                                {
                                    errorAppend += "派车单号:" + smsModel.CarScanCode + "";
                                }
                                log.Write("异常:" + ex.Message + "," + errorAppend + "");
                            }

                            processedItems++;
                        }
                    }

                    Thread.Sleep(2000);
                }
            }
            catch (Exception ex)
            {
                WriteLog log = new WriteLog();
                log.Write(ex.Message);
            }
        }
        private static List <string> GetSmsContent(SmsSendInfo smsModel, DataTable dt)
        {
            List <string> list    = new List <string>();
            string        content = "";

            try
            {
                Guid templateId = Guid.Empty;
                if (smsModel.SmsTemplateId != null)
                {
                    Guid.TryParse(smsModel.SmsTemplateId.ToString(), out templateId);
                }
                if (!templateId.Equals(Guid.Empty))
                {
                    SmsTemplate smstBll = new SmsTemplate();
                    content = smstBll.GetTemplateContent(templateId, dt);
                    list.Add(content);
                }
                else if (!string.IsNullOrEmpty(smsModel.TemplateType))
                {
                    if (smsModel.TemplateType == "auto")
                    {
                        DataRow dr = dt.Rows[0];
                        DataColumnCollection dcc = dt.Columns;

                        string[] paramsCodeArr = smsModel.ParamsCode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        string[] tParmsValues  = new string[paramsCodeArr.Length];
                        for (int i = 0; i < paramsCodeArr.Length; i++)
                        {
                            if (dcc.Contains(paramsCodeArr[i]))
                            {
                                if (dr[paramsCodeArr[i]] != DBNull.Value)
                                {
                                    tParmsValues[i] = dr[paramsCodeArr[i]].ToString();
                                }
                                else
                                {
                                    tParmsValues[i] = "";
                                }
                            }
                            else
                            {
                                tParmsValues[i] = "";
                            }
                        }

                        content = string.Format(smsModel.SmsContent, tParmsValues);
                        list.Add(content);
                    }
                    else if (smsModel.TemplateType == "custom")
                    {
                        content = string.Format(smsModel.SmsContent, smsModel.ParamsValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                        list.Add(content);
                    }
                }
                else if (!string.IsNullOrEmpty(smsModel.SmsContent))
                {
                    content = smsModel.SmsContent;
                    list.Add(content);
                }
                else
                {
                    SmsTemplate smstBll = new SmsTemplate();
                    return(smstBll.GetTemplateContentByTranNode(dt, smsModel.TranNode));
                }
            }
            catch (Exception ex)
            {
                string error = "";
                error += "手机号:" + smsModel.MobilePhone == null ? "无" : smsModel.MobilePhone + ",";
                error += "订单号:" + smsModel.OrderCode == null ? "无" : smsModel.OrderCode + ",";
                error += "运输节点:" + smsModel.TranNodeText == null ? "无" : smsModel.TranNodeText + ",";
                error += "派车单号:" + smsModel.CarScanCode == null ? "无" : smsModel.CarScanCode + ",";
                error += "模板ID:" + smsModel.SmsTemplateId == null ? "无" : smsModel.SmsTemplateId.ToString() + ",";
                error += "参数代码:" + smsModel.ParamsCode == null ? "无" : smsModel.ParamsCode + ",";
                error += "参数名称:" + smsModel.ParamsName == null ? "无" : smsModel.ParamsName + ",";
                error += "参数值:" + smsModel.ParamsValue == null ? "无" : smsModel.ParamsValue + ",";
                error += "短信内容:" + smsModel.SmsContent == null ? "无" : smsModel.SmsContent;
                WriteLog log = new WriteLog();
                log.Write("执行获取短信内容时异常(" + ex.Message + "),详情:" + error + "");
            }

            return(list);
        }