public ActionResult GetDetailByDay(PushMessageCondition con) { List <StatisticPushMessageModel> list = m_diffBus.GetDetailByTime(con); var json = JsonConvert.SerializeObject(new { rows = list, total = 0 }, JsonConvertHelper.IsoDateTimeConverter); return(Content(json)); }
/// <summary> /// 消息列表条件 /// </summary> /// <param name="con"></param> /// <returns></returns> private List <string> GetPushMessageConditionList(PushMessageCondition con) { List <string> list = new List <string>(); list.Add(" 1=1 "); if (con != null) { if (!Null.IsNull(con.MessagePriority)) { list.Add(" MessagePriority = @MessagePriority "); } if (!Null.IsNull(con.SNextPushTime)) { list.Add(" NextPushTime >= @SNextPushTime "); } if (!Null.IsNull(con.ENextPushTime)) { list.Add(" NextPushTime <= @ENextPushTime "); } if (!Null.IsNull(con.MessageId)) { list.Add(" MessageId = @MessageId "); } if (!string.IsNullOrWhiteSpace(con.MessageKey)) { if (con.MessageKey.Length <= 20) { list.Add(" MessageKey = @MessageKey "); } else { list.Add(" MessageKey LIKE CONCAT(@MessageKey, '%') "); } } if (con.PushIds != null && con.PushIds.Where(t => !string.IsNullOrEmpty(t)).Count() > 0) { list.Add(string.Format(" PushId IN ('{0}') ", string.Join("', '", con.PushIds.ToArray()))); } if (!Null.IsNull(con.PushStatus)) { list.Add(" PushStatus & @PushStatus = PushStatus "); } if (!Null.IsNull(con.PushId)) { list.Add(" PushId = @PushId "); } if (con.MessageType != null && con.MessageType.Where(t => !string.IsNullOrEmpty(t)).Count() > 0) { list.Add(string.Format(" MessageType IN ('{0}') ", string.Join("', '", con.MessageType.ToArray()))); } } return(list); }
public List <StatisticPushMessageModel> GetDetailByTime(PushMessageCondition con) { List <StatisticPushMessageEntity> entityList = JinRiNotifyFacade.Instance.GetDetailByTime(con); List <StatisticPushMessageModel> list = new List <StatisticPushMessageModel>(); if (entityList.Any()) { entityList.ForEach(x => list.Add(MappingHelper.From <StatisticPushMessageModel, StatisticPushMessageEntity>(x))); } return(list); }
public List <PushMessageModel> GetPushMessageList(PushMessageCondition con) { List <PushMessageEntity> pushMessageEntList = JinRiNotifyFacade.Instance.GetPushMessageList(con); List <PushMessageModel> pushMessageModList = new List <PushMessageModel>(); pushMessageEntList.ForEach(x => { pushMessageModList.Add(MappingHelper.From <PushMessageModel, PushMessageEntity>(x)); }); return(pushMessageModList); }
public List <PushMessage> GetList(PushMessageCondition con) { List <PushMessageModel> pushMessageModList = GetPushMessageList(con); List <PushMessage> list = new List <PushMessage>(); foreach (PushMessageModel m in pushMessageModList) { list.Add(MappingHelper.From <PushMessage, PushMessageModel>(m)); } return(list); }
public List <PushMessageEntity> GetDetailByTime2(PushMessageCondition con) { const string strSql = @"SELECT PushId, MessageId, SettingId, MessagePriority,MessageKey, MessageType, PushData, PushData, NextPushTime, LastModifyTime, MessageCreateTime, PushCount FROM PushMessage WHERE LastModifyTime BETWEEN @StartTime AND @EndTime "; DynamicParameters param = new DynamicParameters(); param.Add("StartTime", con.SNextPushTime); param.Add("EndTime", con.ENextPushTime); using (IDbConnection conn = ConnectionFactory.JinRiNotify_SELECT) { return(conn.Query <PushMessageEntity>(strSql, param).ToList()); } }
public ActionResult Save(PushMessageModel model, string pushIds) { var message = new ReturnMessage { Success = false, Msg = "操作失败!" }; try { PushMessageBusiness business = new PushMessageBusiness(); if (string.IsNullOrEmpty(pushIds)) //单条编辑 { var pushMessage = business.GetFromCache(model.PushId); if (pushMessage == null) { message.Msg = "推送消息不存在!"; return(Content(JsonConvert.SerializeObject(message))); } pushMessage.MessagePriority = model.MessagePriority; pushMessage.MessageType = model.MessageType; pushMessage.PushData = model.PushData; pushMessage.PushStatus = model.PushStatus; pushMessage.NextPushTime = model.NextPushTime; pushMessage.PushCount = model.PushCount; pushMessage.Memo = string.Empty; message.Success = business.Edit(pushMessage); } else { //批量编辑 PushMessageCondition condition = new PushMessageCondition(); condition.PushIds = new List <string>(pushIds.Split(',')); var data = business.GetPushMessageList(condition); data.ForEach(t => { t.NextPushTime = model.NextPushTime; t.PushCount = model.PushCount; t.LastModifyTime = DateTime.Now; t.PushStatus = PushStatusEnum.UnPush; }); if (data.Count > 0) { message.Success = business.EditPushMessage(data); } } } catch (Exception) { } return(Content(JsonConvert.SerializeObject(message))); }
public ActionResult HistoryList(PushMessageCondition condition) { PushMessageBusiness business = new PushMessageBusiness(); condition.QuerySource = 2; var rows = business.GetPageList(condition); var json = JsonConvert.SerializeObject(new { rows = rows, total = condition.RecordCount }, JsonConvertHelper.IsoDateTimeConverter); return(Content(json)); }
public List <PushMessageEntity> GetPushMessageList(PushMessageCondition con) { using (IDbConnection conn = ConnectionFactory.JinRiNotify_SELECT) { const string sql = @"SELECT PushId, MessageId, SettingId, MessagePriority, MessageKey, MessageType, PushData, PushStatus, NextPushTime, LastModifyTime, MessageCreateTime, CreateTime, PushCount FROM PushMessage WHERE {2} ORDER BY {0} {1} LIMIT @PageSize"; string condition = string.Join(" AND ", GetPushMessageConditionList(con).ToArray()); string trueSql = string.Format(sql, con.OrderBy, con.OrderDirection, condition); DBLog.Process("", con.MessagePriority, "", "GetPushMessageList", "", "获取重推数据列表", trueSql); return(conn.Query <PushMessageEntity>(trueSql, con).ToList()); } }
public List <StatisticPushMessageEntity> GetDetailByTime(PushMessageCondition con) { const string strSql = @"SELECT '' NextPushTime,'' LastModifyTime,avg(TIMEDIFF(LastModifyTime,MessageCreateTime)) AvgPushTime FROM PushMessage WHERE PushCount=1 AND PushStatus=2 AND LastModifyTime>MessageCreateTime AND LastModifyTime BETWEEN @StartTime AND @EndTime "; DynamicParameters param = new DynamicParameters(); param.Add("StartTime", con.SNextPushTime); param.Add("EndTime", con.ENextPushTime); using (IDbConnection conn = ConnectionFactory.JinRiNotify_SELECT) { return(conn.Query <StatisticPushMessageEntity>(strSql, param).ToList()); } }
/// <summary> /// 获取推送消息列表(分页) /// </summary> /// <param name="con"></param> /// <returns></returns> public List <PushMessageEntity> GetPushMessagePageList(PushMessageCondition con) { using (IDbConnection conn = ConnectionFactory.JinRiNotify_SELECT) { const string sql = @"SELECT * FROM (SELECT PushId, MessageId, SettingId, MessagePriority, MessageKey, MessageType, PushData, PushStatus, NextPushTime, LastModifyTime, MessageCreateTime, CreateTime, PushCount, Memo FROM {3} WHERE {2} ORDER BY {0} {1} LIMIT @Offset, @PageSize) AS TMP "; string table = con.QuerySource == 2 ? "PushMessage_backup" : "PushMessage"; string condition = string.Join(" AND ", GetPushMessageConditionList(con).ToArray()); string _sql = string.Format("SELECT COUNT(0) FROM {1} WHERE {0}", condition, table); con.RecordCount = conn.Query <int>(_sql, con).FirstOrDefault(); //总记录数 string trueSql = string.Format(sql, con.OrderBy, con.OrderDirection, condition, table); return(conn.Query <PushMessageEntity>(trueSql, con).ToList()); } }
/// <summary> /// 获取推送消息列表(分页) /// </summary> /// <param name="con"></param> /// <returns></returns> public List <PushMessageModel> GetPageList(PushMessageCondition con) { NotifyMessageBusiness business = new NotifyMessageBusiness(); var messageTypeList = business.GetNotifyMessageTypeList(new NotifyMessageTypeCondition()); List <PushMessageEntity> entityList = JinRiNotifyFacade.Instance.GetPushMessagePageList(con); List <PushMessageModel> list = new List <PushMessageModel>(); entityList.ForEach(x => { var model = MappingHelper.From <PushMessageModel, PushMessageEntity>(x); var messageType = messageTypeList.Where(t => t.MessageType == model.MessageType).FirstOrDefault(); if (messageType != null) { model.MessageTypeCName = messageType.Remark; } model.MessagePriorityName = x.MessagePriority.ToString(); model.PushStatusName = Enum.GetName(typeof(PushStatusEnum), x.PushStatus); model.MessageTypeEName = x.MessageType.ToString(); list.Add(model); }); return(list); }
private void GetPushMessageList(object setting) { RedoServiceSetting.ScanSetting scanSetting = (RedoServiceSetting.ScanSetting)setting; int scanStartTimes = scanSetting.PrevScanTimes * scanSetting.InternalTime * (-1); int scanEndTimes = scanSetting.NextScanTimes * scanSetting.InternalTime; int aheadTime = RedoServiceSetting.PushAheadTime; PushMessageCondition con = new PushMessageCondition(); con.PushStatus = scanSetting.PushStatus; con.PageSize = scanSetting.LimitCount; con.MessagePriority = Null.NullString; con.OrderDirection = OrderDirectionEnum.ASC; con.OrderBy = "NextPushTime"; if (!string.IsNullOrWhiteSpace(scanSetting.MessagePriority)) { con.MessagePriority = scanSetting.MessagePriority; } if (scanSetting.MessageType != null && scanSetting.MessageType.Count > 0) { con.MessageType = scanSetting.MessageType; } else { con.MessageType = null; } con.ENextPushTime = DateTime.Now; List <PushMessageModel> pushMessageList; try { int i = 0; while (true) { MetricsKeys.RedoService.MeterMark(); DateTime dtNow = DateTime.Now; con.SNextPushTime = con.ENextPushTime.AddSeconds(scanStartTimes); con.ENextPushTime = con.ENextPushTime.AddSeconds(scanEndTimes); pushMessageList = m_pushMessageBus.GetPushMessageList(con); StringBuilder builder = new StringBuilder(); int canSendNum = 0; int sendedNum = 0; if (pushMessageList != null && pushMessageList.Count > 0) { int count = pushMessageList.Count; foreach (PushMessageModel msgMod in pushMessageList) { if (msgMod.NextPushTime <= DateTime.Now.AddSeconds(aheadTime)) { canSendNum++; PushMessage pushMsg = MappingHelper.From <PushMessage, PushMessageModel>(msgMod); bool isSended = false; m_pushMessageBus.SendPushMessage(pushMsg, RedoServiceSetting.IsOpenBatchSendPushMessage, out isSended); if (isSended) { sendedNum++; } builder.AppendFormat("消息编号:{0},消息类型:{1},是否推送:{2};", msgMod.PushId, msgMod.MessageType, isSended); } Thread.Sleep(100); } //while (count > num) //{ // PushMessageModel msgMod = pushMessageList[idx]; // if (!"1".Equals(msgMod.Memo) && msgMod.NextPushTime <= DateTime.Now.AddSeconds(aheadTime)) // { // num++; // PushMessage pushMsg = MappingHelper.From<PushMessage, PushMessageModel>(msgMod); // bool isSended = false; // m_pushMessageBus.SendPushMessage(pushMsg, RedoServiceSetting.IsOpenBatchSendPushMessage, out isSended); // msgMod.Memo = "1"; // builder.AppendFormat("消息编号:{0},消息类型:{1},是否推送:{2};", msgMod.PushId, msgMod.MessageType, isSended); // } // idx++; // if (idx == count) idx = 0; //} } else { Thread.Sleep(scanSetting.IdleSleepTime); } Process.Debug("消息重扫记录", "GetPushMessageList", string.Format("扫描次数【{0}】,优先级:【{1}】,推送开始时间:【{2}】,推送截止时间:【{3}】,扫描条数【{4}】,执行时间【{5}】,查询条件:【{6}】,可推送条数:【{7}】,实际推送条数:【{8}】,消息:【{9}】", ++i, con.MessagePriority.ToString(), con.SNextPushTime.ToString("yyyy-MM-dd HH:mm:ss"), con.ENextPushTime.ToString("yyyy-MM-dd HH:mm:ss"), pushMessageList.Count, (DateTime.Now - dtNow).TotalMilliseconds, JsonConvert.SerializeObject(con), canSendNum, sendedNum, builder.ToString()), pushMessageList.Count.ToString()); TimeSpan timeSpan = con.ENextPushTime - DateTime.Now; double sleepTime = timeSpan.TotalMilliseconds; if (sleepTime > 0) { Thread.Sleep((int)sleepTime); Process.Debug("消息重扫记录", "Thread.Sleep", string.Format("扫描次数【{0}】,线程休眠【{1}】,优先级:【{2}】,推送开始时间:【{3}】,推送截止时间:【{4}】", ++i, sleepTime, con.MessagePriority.ToString(), con.SNextPushTime.ToString("yyyy-MM-dd HH:mm:ss"), con.ENextPushTime.ToString("yyyy-MM-dd HH:mm:ss")), ""); } } } catch (Exception ex) { Process.Fatal("消息重扫记录", "GetPushMessageList", string.Format("重扫线程异常结束ex【{3}】,优先级:【{0}】,推送开始时间:【{1}】,推送截止时间:【{2}】", con.MessagePriority.ToString(), con.SNextPushTime.ToString("yyyy-MM-dd HH:mm:ss"), con.ENextPushTime.ToString("yyyy-MM-dd HH:mm:ss"), ex.GetString()), ""); } }
/// <summary> /// 获取推送消息列表(分页) /// </summary> /// <param name="con"></param> /// <returns></returns> public List <PushMessageEntity> GetPushMessagePageList(PushMessageCondition con) { return(JinRiNotifyQuery.Instance.GetPushMessagePageList(con)); }
public List <StatisticPushMessageEntity> GetDetailByTime(PushMessageCondition con) { return(JinRiNotifyQuery.Instance.GetDetailByTime(con)); }