示例#1
0
 public List <MonitorDailyeventEntity> GetListForShow()
 {
     try
     {
         var list = MonitorDailyeventMgr.GetListForShow(ShareUtil.ZoneId);
         if (list != null)
         {
             foreach (var entity in list)
             {
                 double date = Convert.ToDouble((DateTime.Now.Date - entity.OpenTime.Date).Days);
                 if (date < 0)
                 {
                     date = 0;
                 }
                 entity.OpenTimeTick  = ShareUtil.GetTimeTick(entity.OpenTime.AddDays(date));
                 entity.StartTimeTick = ShareUtil.GetTimeTick(entity.StartTime.AddDays(date));
                 entity.EndTimeTick   = ShareUtil.GetTimeTick(entity.EndTime.AddDays(date));
             }
         }
         return(list);
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("DailyEventThread-GetListForShow", ex);
         return(null);
     }
 }
示例#2
0
        public void Invoke(DateTime curTime)
        {
            if (curTime < _nextInvokeTime)
            {
                return;
            }
            else if (curTime >= _endTime)
            {
                CalNextTime(curTime);
                return;
            }
            if (0 == Interlocked.Exchange(ref _syncInvoke, 1))
            {
                try
                {
                    DateTime curDate   = curTime.Date;
                    var      openTime  = DailyEventThread.CalTime(curDate, _config.OpenHour, _config.OpenMinute);
                    var      startTime = DailyEventThread.CalTime(curDate, _config.StartHour, _config.StartMinute);
                    var      endTime   = DailyEventThread.CalTime(curDate, _config.EndHour, _config.EndMinute);
                    _dailyeventEntity.OpenTime   = openTime;
                    _dailyeventEntity.StartTime  = startTime;
                    _dailyeventEntity.EndTime    = endTime;
                    _dailyeventEntity.RecordDate = curDate;
                    try
                    {
                        _startDelegate(startTime, endTime);
                    }
                    catch (Exception ex)
                    {
                        SystemlogMgr.Error("Dailyevent info Invoke inner", ex);
                    }

                    MonitorDailyeventMgr.Save(_dailyeventEntity.ZoneId, _dailyeventEntity.EventType,
                                              _dailyeventEntity.OpenTime, _dailyeventEntity.StartTime, _dailyeventEntity.EndTime,
                                              _dailyeventEntity.RecordDate);
                    CalNextTime(curTime);
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("Dailyevent info Invoke", ex);
                }
                finally
                {
                    Interlocked.Exchange(ref _syncInvoke, 0);
                }
            }
        }
示例#3
0
        public bool RegisterEvent(EnumDailyevent eventEnum, DailyeventStartDelegate startDelegate)
        {
            var eventType = (int)eventEnum;

            if (_dailyeventDic.ContainsKey(eventType))
            {
                return(true);
            }
            var config = CacheFactory.ActivityCache.GetDailyevent(eventType);

            if (config == null)
            {
                SystemlogMgr.Error("Dailyevent register", "can't find dailyevent config,id:" + eventType);
                return(false);
            }
            DateTime curDate = DateTime.Today;

            _rwl.AcquireWriterLock(Timeout.Infinite);
            try
            {
                var dailyEvent = MonitorDailyeventMgr.GetByZoneEvent(ShareUtil.ZoneId, eventType);
                if (dailyEvent == null)
                {
                    var lastDate = curDate.AddDays(-1);
                    dailyEvent                = new MonitorDailyeventEntity();
                    dailyEvent.EventType      = eventType;
                    dailyEvent.ZoneId         = ShareUtil.ZoneId;
                    dailyEvent.OpenTime       = CalTime(lastDate, config.OpenHour, config.OpenMinute);
                    dailyEvent.StartTime      = CalTime(lastDate, config.StartHour, config.StartMinute);
                    dailyEvent.EndTime        = CalTime(lastDate, config.EndHour, config.EndMinute);
                    dailyEvent.RecordDate     = lastDate;
                    dailyEvent.NextInvokeTime = dailyEvent.OpenTime.AddDays(1);
                    dailyEvent.Status         = 0;
                    dailyEvent.UpdateTime     = DateTime.Now;
                    MonitorDailyeventMgr.Insert(dailyEvent);
                }
                _dailyeventDic.Add(eventType, new DailyEventInfo(dailyEvent, config, startDelegate));
                LogHelper.Insert(eventEnum.ToString() + " register success.", LogType.Info);
                return(true);
            }
            finally
            {
                _rwl.ReleaseWriterLock();
            }
        }