public static void UpdateMsgStatus() { Logger.Debug("开始每日定时刷新消息列表任务"); //获取当日发送的消息批次、渠道和SendId List <RecurringUpdateModel> list = MessageSysBLL.GetUpdateModel(); if (list == null) { Logger.Debug("获取待更新状态的消息列表为Null,结束刷新任务"); } else { foreach (var item in list) { try { //遍历当日发送的数据并更新状态 UpadateSendingStatus(item.BatchId, item.ChannelId, item.SendId); } catch (Exception ex) { Logger.Error("更新消息" + item.BatchId + "," + item.ChannelId + "," + "," + item.SendId + "时出错!", ex); continue; } } } }
/// <summary> /// 按渠道自动发送消息 /// </summary> /// <param name="batchId"></param> /// <param name="uid"></param> /// <param name="uName"></param> public static string SendMsgAuto(string batchId, int uid, string uName) { List <int> channelList = MessageSysBLL.GetBatchChannel(batchId); foreach (var item in channelList) { UpdateOperator(uid, batchId, item); switch (item) { case 1: return(SendingSms(batchId)); //break; case 2: SendingWebNotify(batchId, uid, uName); break; case 3: SendingAppNotify(batchId, uid, uName); break; case 4: //Logger.Debug("发送"); SendingEmail(batchId); break; default: break; } } return("1"); //Logger.Error(); }
/// <summary> /// 获取站内信推送Model /// </summary> /// <param name="batchId"></param> /// <returns></returns> public static WebMessageRequest GetWebBatch(string batchId) { List <MessageDetail> webBatch = MessageSysBLL.GetBatchForSend(batchId, 2); WebMessageRequest webModel = new WebMessageRequest(); string accidList = ""; if (webBatch != null && webBatch.Count > 0) { webModel.msgContent = webBatch[0].Content; webModel.msgTitle = webBatch[0].Title; } else { return(null); } foreach (var item in webBatch) { accidList += item.AccId.ToString() + ","; } accidList = accidList.Substring(0, accidList.LastIndexOf(',')); webModel.accIdList = accidList; return(webModel); }
/// <summary> /// 更新发送后状态 /// </summary> /// <param name="batchId"></param> /// <param name="channelId"></param> /// <returns></returns> public static int UpadateSendingStatus(string batchId, int channelId, string sendId) { string postStr = ""; ////获取批次信息 //MessageBatch batchModel = MessageSysBLL.GetSingleBatchInfo(batchId, channelId); ////获取批次详情 //List<MessageDetail> detailList=MessageSysBLL.GetBatchForSend(batchId, channelId); //从接口获取发送状态信息 string urlAddress = ConfigurationManager.AppSettings["GeneralMessage"].ToString(); Dictionary <string, string> parameters = CreateHeader(); try { switch (channelId) { case 1: postStr = CommonLib.Helper.SendHttpGet(smsUrl + "/" + sendId, null, parameters); break; case 2: postStr = CommonLib.Helper.SendHttpGet(webUrl + "/" + sendId, null, parameters); break; case 3: postStr = CommonLib.Helper.SendHttpGet(mobUrl + "/" + sendId, null, parameters); break; case 4: postStr = CommonLib.Helper.SendHttpGet(webUrl + "/" + sendId, null, parameters); break; } SendStatus resModel = CommonLib.Helper.JsonDeserializeObject <SendStatus>(postStr); //Logger.Debug("得到返回值"); int reVal = MessageSysBLL.UpdateDetailSendingStatus(batchId, channelId, resModel); if (reVal == 0) { return(MessageSysBLL.UpdateBatchSendingStatus(batchId, channelId)); } else { return(reVal); } //return } catch (Exception ex) { Logger.Error("转换接口返回数据出错~", ex); return(0); } //更新批次详情 //更新批次信息 }
/// <summary> /// 获取移动端推送Model /// </summary> /// <param name="batchId"></param> /// <returns></returns> public static MobMessageRequest GetAppBatch(string batchId) { List <MessageDetail> appBatch = MessageSysBLL.GetBatchForSend(batchId, 3); MobMessageRequest appModel = new MobMessageRequest(); string accidList = ""; if (appBatch != null && appBatch.Count > 0) { appModel.msgContent = appBatch[0].Content; appModel.msgTitle = appBatch[0].Title; appModel.ContentType = appBatch[0].ContentType; appModel.ContentUrl = appBatch[0].ContentUrl; } else { return(null); } foreach (var item in appBatch) { accidList += item.AccId.ToString() + ","; } accidList = accidList.Substring(0, accidList.LastIndexOf(',')); appModel.accIdList = accidList; return(appModel); }
public static Dictionary <string, object> GetBatchList(int pageIndex, string stDate, string edDate, string batchId, string remark, string content, int sourceType, int channel) { Dictionary <string, object> dicData = MessageSysBLL.GetBatchList(pageIndex, stDate, edDate, batchId, remark, content, sourceType, channel);; if (dicData != null) { int rowCount = Convert.ToInt32(dicData["count"]); int maxPage = rowCount % 15 == 0 ? rowCount / 15 : (rowCount / 15 + 1); dicData["maxPage"] = maxPage; List <MessageBatch> list = (List <MessageBatch>)dicData["data"]; foreach (var item in list) { if (item.FeedBackArrive != 0) { item.OpenRatio = (Convert.ToDouble(item.FeedBackOpen) / item.FeedBackArrive * 100).ToString("F2") + "%"; } else { item.OpenRatio = "无数据"; } item.OperatorName = Sys_Manage_UserBLL.GetManageUserNameById(item.Operator); } } return(dicData); }
/// <summary> /// 获取对应条件的用户 /// 群发消息用以切分消息批次 /// 限定500条为一批 /// </summary> /// <param name="remark"></param> /// <param name="id"></param> /// <returns></returns> public static Dictionary <string, List <string> > GetConditionUser(string remark, int id) { Dictionary <string, List <string> > dic = new Dictionary <string, List <string> >(); List <string> userList = MessageSysBLL.GetPushUserList(id); //在结果集中添加两个测试账号 if (!userList.Contains("79672")) { userList.Add("79672");//田震 } if (!userList.Contains("397")) { userList.Add("397");//田震 } int j = 500; for (int i = 0; i < userList.Count; i += 500) { List <string> cList = new List <string>(); cList = userList.Take(j).Skip(i).ToList(); j += 500; dic.Add(remark + "_" + (i / 500 + 1).ToString(), cList); } return(dic); }
public static Dictionary <string, object> GetBatchDetailList(int pageIndex, string batchId, int channelId, int arrived = 0) { Dictionary <string, object> dicData = MessageSysBLL.GetBatchDetail(pageIndex, batchId, channelId, arrived);; if (dicData != null) { int rowCount = Convert.ToInt32(dicData["count"]); int maxPage = rowCount % 15 == 0 ? rowCount / 15 : (rowCount / 15 + 1); dicData["maxPage"] = maxPage; } return(dicData); }
public static Dictionary <string, object> GetBatchSummaryInfo(int pageIndex, string stDate, string edDate, string batchId, string remark, int sourceType, int channel) { Dictionary <string, object> dicData = MessageSysBLL.GetBatchSummaryInfo(pageIndex, stDate, edDate, batchId, remark, sourceType, channel); if (dicData != null) { int rowCount = Convert.ToInt32(dicData["count"]); int maxPage = rowCount % 15 == 0 ? rowCount / 15 : (rowCount / 15 + 1); dicData["maxPage"] = maxPage; } return(dicData); }
/// <summary> /// 获取邮件发送Model /// </summary> /// <param name="batchId"></param> /// <returns></returns> public static EmailRequest GetEmailBatch(string batchId) { List <MessageDetail> emailBatch = MessageSysBLL.GetBatchForSend(batchId, 4); EmailRequest emailModel = new EmailRequest(); List <string> tmpList = new List <string>(); if (emailBatch != null && emailBatch.Count > 0) { emailModel.EmailChannel = 2; emailModel.EmailContent = emailBatch[0].Content; emailModel.TemplateIndex = 4; emailModel.SendType = 8; emailModel.Remark = emailBatch[0].Remark; emailModel.EmailTitle = emailBatch[0].Title; } else { return(null); } foreach (var item in emailBatch) { if (!string.IsNullOrEmpty(item.AccIdNumber)) { tmpList.Add(item.AccIdNumber); } else { UpdateDetailUnableMark(item.Id); } } if (tmpList.Count <= 0) { UpdateAllowCount(batchId, 4, 0, "err"); tmpList.Add("000"); } emailModel.AddressList = tmpList.ToArray(); return(emailModel); }
public static string GenerateBatchByChannel(int channelId, string accIdSet, int accIdCount, int sourceType, string filterVerify, string title, string content, string remark, string batchId, string contentType = "", string contentUrl = "") { MessageBatch batchModel = new MessageBatch(); batchModel.AccIdCount = accIdCount; batchModel.AccIdSet = accIdSet; batchModel.BatchId = batchId; batchModel.ChannelId = channelId; batchModel.Content = content; batchModel.CreateTime = DateTime.Now; batchModel.Remark = remark; batchModel.Title = title; batchModel.ReviewState = 0; batchModel.SendingStatus = 0; batchModel.SourceType = sourceType; batchModel.FilterLogVerify = filterVerify; batchModel.ContentType = contentType; batchModel.ContentUrl = contentUrl; return(MessageSysBLL.AddMessageBatch(batchModel)); }
/// <summary> /// 获取短信发送Model /// </summary> /// <param name="batchId"></param> /// <returns></returns> public static SmsRequest GetSmsBatch(string batchId) { List <MessageDetail> smsBatch = MessageSysBLL.GetBatchForSend(batchId, 1); SmsRequest smsModel = new SmsRequest(); List <string> tmpList = new List <string>(); if (smsBatch != null && smsBatch.Count > 0) { smsModel.smsContent = smsBatch[0].Content; smsModel.smsType = 1; } else { return(null); } foreach (var item in smsBatch) { if (!string.IsNullOrEmpty(item.AccIdNumber)) { tmpList.Add(item.AccIdNumber); } else { UpdateDetailUnableMark(item.Id); } } if (tmpList.Count <= 0) { UpdateAllowCount(batchId, 1, 0, "err"); tmpList.Add("000"); } smsModel.phoneList = tmpList.ToArray(); return(smsModel); }
public static int UpdateOperator(int operId, string batchId, int channelId) { return(MessageSysBLL.UpdateOperator(operId, batchId, channelId)); }
public static int GetBatchCount(string batchId, int channelId) { return(MessageSysBLL.GetBatchCount(batchId, channelId)); }
/// <summary> /// 更新没有联系方式用户的标记 /// </summary> /// <param name="id"></param> /// <returns></returns> public static int UpdateDetailUnableMark(int id) { return(MessageSysBLL.UpdateDetailUnableMark(id)); }
/// <summary> /// 更新批次表的发送数和发送表关联ID /// </summary> /// <param name="batchId"></param> /// <param name="channelId"></param> /// <param name="count"></param> /// <param name="sendId"></param> /// <returns></returns> public static int UpdateAllowCount(string batchId, int channelId, int count, string sendId) { return(MessageSysBLL.UpdateAllowCount(batchId, channelId, count, sendId)); }
public static string PreparePushingMsg(string accidSet, int accIdCount, int sourceType, string MobileTitle = "", string PubTitle = "", string EmailTitle = "", string SmsContent = "", string MobileContent = "", string PubContent = "", string EmailContent = "", string remark = "", string verif = "", string taskMark = "", string contentType = "", string contentUrl = "") { MessageSending msgSendingModel = new MessageSending(); //生成批次Id string batchId = System.Guid.NewGuid().ToString(); string reMsg = ""; msgSendingModel.BatchId = batchId; msgSendingModel.AccIdSet = accidSet; msgSendingModel.AccIdCount = accIdCount; msgSendingModel.Remark = remark; string channelSet = ""; if (!string.IsNullOrEmpty(SmsContent)) { channelSet += "1,"; string smsMsg = GenerateBatchByChannel(1, accidSet, accIdCount, sourceType, verif, "", SmsContent, remark, batchId); if (smsMsg.IndexOf(batchId) >= 0) { reMsg += smsMsg; } } if (!(string.IsNullOrEmpty(MobileTitle) || string.IsNullOrEmpty(MobileContent))) { channelSet += "3,"; string mMsg = GenerateBatchByChannel(3, accidSet, accIdCount, sourceType, verif, MobileTitle, MobileContent, remark, batchId, contentType, contentUrl); if (mMsg.IndexOf(batchId) >= 0) { reMsg += mMsg; } } if (!(string.IsNullOrEmpty(PubTitle) || string.IsNullOrEmpty(PubContent))) { channelSet += "2,"; //PubContent = Server.UrlDecode(PubContent); string pMsg = GenerateBatchByChannel(2, accidSet, accIdCount, sourceType, verif, PubTitle, PubContent, remark, batchId); if (pMsg.IndexOf(batchId) >= 0) { reMsg += pMsg; } } if (!(string.IsNullOrEmpty(EmailTitle) || string.IsNullOrEmpty(EmailContent))) { channelSet += "4,"; //EmailContent = Server.UrlDecode(EmailContent); string eMsg = GenerateBatchByChannel(4, accidSet, accIdCount, sourceType, verif, EmailTitle, EmailContent, remark, batchId); if (eMsg.IndexOf(batchId) >= 0) { reMsg += eMsg; } } msgSendingModel.ChannelSet = channelSet; if (string.IsNullOrEmpty(channelSet)) { reMsg = "没有获取到发送渠道!请联系技术~"; } else { if (MessageSysBLL.AddMsgSendingInfo(msgSendingModel) < 1) { reMsg += "添加消息概览信息失败!"; } } if (string.IsNullOrEmpty(reMsg)) { if (string.IsNullOrEmpty(taskMark)) { return("消息提交成功!"); } else { return(batchId); } //return "消息提交成功!"; } else { return(reMsg); } }
/// <summary> /// 根据服务Id推送内容 /// </summary> /// <param name="id"></param> public static void MsgManageByService(int id) { //批次Id列表 List <string> batchIdList = new List <string>(); //用于生成同样内容的公告分批字典 Dictionary <string, List <string> > accParts = new Dictionary <string, List <string> >(); //用于自定义内容的单店消息对象列表 List <SingleShopInfoForMsg> singleList = new List <SingleShopInfoForMsg>(); //推送备注 string remark = ""; switch (id) { case 1: //经营分析报表推送(批量用户) remark = DateTime.Now.Date.ToShortDateString() + "-" + "经营分析日报"; #region 群发共享型消息测试逻辑 //test //List<string> test = new List<string>(); //test.Add(397.ToString()); //test.Add(79672.ToString()); //foreach (var part in accParts) //{ // batchIdList.Add(PreparePushingMsg(JsonConvert.SerializeObject(part.Value), part.Value.Count, 4, "您" + DateTime.Now.Date.ToShortDateString() + "日的经营日报已经出炉,点击查看详情!", "", "", // "", "您" + DateTime.Now.Date.ToShortDateString() + "日的经营日报已经出炉,点击下方按钮看看自己昨天的经营效率吧!", "", "", // part.Key, "", "service", "view", "dailyReport")); //} #endregion accParts = GetConditionUser(remark, id); foreach (var part in accParts) { batchIdList.Add(PreparePushingMsg(CommonLib.Helper.JsonSerializeObject(part.Value), 1, 4, "您昨天的经营日报已经出炉,点击查看详情!", "", "", "", "您" + DateTime.Now.Date.AddDays(-1).ToShortDateString() + "日的经营日报已经出炉,点击下方按钮看看自己昨天的经营效率吧!", "", "", part.Key, "", "service", "view", "dailyReport")); } break; case 2: //付费到期提醒推送(单个用户) //不做Remark特殊处理 singleList = MessageSysBLL.GetSingleUserMsgBatch(id); break; case 3: //优惠券到期提醒(单个用户) singleList = MessageSysBLL.GetSingleUserMsgBatch(id); //不做Remark特殊处理 break; case 4: //周年答谢(批量用户) remark = DateTime.Now.Date.ToShortDateString() + "-" + "周年答谢"; singleList = MessageSysBLL.GetSingleUserMsgBatch(id); break; default: break; } foreach (var str in batchIdList) { MessageSysControl.SendMsgAuto(str, 0, "系统"); } }