Пример #1
0
        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);
        }
Пример #2
0
        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), "");
            }
        }
Пример #3
0
        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)));
        }
Пример #4
0
        /// <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);
        }