public static DateTime ComputeNextPushTime(PushMessageModel message, NotifyInterfaceSettingModel setting, out bool isPushNext) { DateTime pushNextTime = Null.NullDate; isPushNext = false; int pushCount = message.PushCount; int limitCount = setting.PushLimitCount; string rule = setting.PushInternalRule; if (pushCount < limitCount) { if (string.IsNullOrWhiteSpace(rule)) { Process.Info("推送配置", "", string.Format("{0}的推送规则为空", setting.SettingId), ""); } int second = 0; isPushNext = true; if (pushCount < setting.PushInternalRuleList.Count) { second = setting.PushInternalRuleList[pushCount]; } else { second = setting.PushInternalRuleList[setting.PushInternalRuleList.Count - 1]; } pushNextTime = DateTime.Now.AddSeconds(second); } return(pushNextTime); }
public void Send(PushMessage message, Action <object> callback) { string cacheKey = string.Format(CacheKeys.SendToMessageHandler_Arg2, message.PushId, message.PushCount); if (!IsSending(message)) { NotifyInterfaceSettingModel settingMod = _pushSettingBus.Get(message.SettingId); if (settingMod != null && settingMod.Status == 2) { PushEntity entity = new PushEntity(); entity.TimeOut = SendServiceSetting.SendToClientTimeout; entity.PushId = message.PushId; entity.Url = settingMod.Address; entity.Data = message.PushData; entity.Callback = callback; entity.ReferObject = message; entity.Encode = Encoding.GetEncoding(settingMod.Encoding); HttpAsyncHelper httpHelper = new HttpAsyncHelper(entity); MethodType methodType = (MethodType)Enum.Parse(typeof(MethodType), settingMod.Method); httpHelper.OnRequestDataComplected += HttpRequestCompleted; try { httpHelper.Request(methodType); MetricsKeys.SenderService_Send.MeterMark("Success"); Process.Debug(message.PushId, "消息推送记录", "Send", message.PushId, string.Format("消息推送中,key【{0}】,地址:{1}", cacheKey, settingMod.Address), ""); } catch (Exception ex) { MetricsKeys.SenderService_Send.MeterMark("Error"); PushMessageResult result = new PushMessageResult(); result.PushId = message.PushId; result.PushStatus = PushResultEnum.Failed; Callback(result); Process.Error(message.PushId, "消息推送记录", "Send", message.PushId, string.Format("消息推送中,key【{0}】,异常:{1}", cacheKey, ex.GetString()), ""); } } else { PushMessageResult result = new PushMessageResult(); result.ReferObject = message; result.PushId = message.PushId; result.PushStatus = PushResultEnum.Abort; result.ErrMsg = "配置被删除"; Callback(result); } } else { Process.Debug(message.PushId, "消息推送记录", "Send", message.PushId, string.Format("缓存已存在,key【{0}】", cacheKey), ""); } }
public ActionResult Save(NotifyInterfaceSettingModel model, int OptType) { var message = new ReturnMessage { Success = false, Msg = "操作失败!" }; try { NotifyInterfaceSettingBusiness business = new NotifyInterfaceSettingBusiness(); if (OptType == 2) //新增 { var settingList = business.GetList(); if (settingList.Where(t => t.AppId == model.AppId && t.MessageType == model.MessageType && t.Address.Equals(model.Address)).Count() > 0) { message.Msg = "配置重复!"; return(Content(JsonConvert.SerializeObject(message))); } model.CreateTime = DateTime.Now; model.LastModifyTime = model.CreateTime; model.Status = 2; message.Success = business.SaveNotifySetting(model); } else { //修改 var setting = business.GetNoCache(model.SettingId); if (setting == null) { message.Msg = "配置不存在!"; return(Content(JsonConvert.SerializeObject(message))); } model.Status = setting.Status; if (OptType == 3) //删除 { model = setting; model.Status = 3; } model.LastModifyTime = DateTime.Now; message.Success = business.UpdateNotifySetting(model); } } catch (Exception) { } return(Content(JsonConvert.SerializeObject(message))); }
/// <summary> /// 更新配置信息 /// </summary> /// <param name="entity"></param> /// <returns></returns> public bool UpdateNotifySetting(NotifyInterfaceSettingModel model) { var entity = MappingHelper.From <NotifyInterfaceSettingEntity, NotifyInterfaceSettingModel>(model); return(JinRiNotifyFacade.Instance.EditNotifyInterfaceSetting(entity) > 0); }