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 + ""); } }
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); } }
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); }