/// <summary>
        /// 近期趋势
        /// </summary>
        /// <param name="areaid"></param>
        /// <param name="type"></param>
        /// <param name="version"></param>
        /// <param name="time"></param>
        /// <returns></returns>
        public DaysDataModel ThirtyDaysData(int areaid, int type, DateTime time)
        {
            DaysDataModel model = new DaysDataModel();

            try
            {
                var        res     = _repository.GetThirtyDaysData(areaid, type, time).OrderBy(i => i.dataTime).ToList();
                List <int> all     = new List <int>();
                List <int> android = new List <int>();
                List <int> ios     = new List <int>();
                List <int> windows = new List <int>();
                for (int i = 0; i < 30; i++)
                {
                    var itemDate = time.AddDays(i);
                    var itemData = res.Where(i => i.dataTime == itemDate).ToList();
                    if (itemData.Count > 0)
                    {
                        model.Active.All.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.All.GetName()).activeUsers);
                        model.Register.All.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.All.GetName()).registeredUsers);
                        model.Active.Android.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.Android.GetName()).activeUsers);
                        model.Register.Android.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.Android.GetName()).registeredUsers);
                        model.Active.IOS.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.IOS.GetName()).activeUsers);
                        model.Register.IOS.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.IOS.GetName()).registeredUsers);
                        model.Active.Windows.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.Windows.GetName()).activeUsers);
                        model.Register.Windows.Add(itemData.FirstOrDefault(i => i.platForm == PlatFromEnum.Windows.GetName()).registeredUsers);
                    }
                    else
                    {
                        model.Active.All.Add(0);
                        model.Register.All.Add(0);
                        model.Active.Android.Add(0);
                        model.Register.Android.Add(0);
                        model.Active.IOS.Add(0);
                        model.Register.IOS.Add(0);
                        model.Active.Windows.Add(0);
                        model.Register.Windows.Add(0);
                    }
                }
                //近30天数据
                model.xAxis = xAxisTools.DataRange(30, true);
                return(model);
            }
            catch (Exception e)
            {
                _logger.LogError($"ThirtyDaysData:{e.Message}");
                throw;
            }
        }
        /// <summary>
        /// 实时数据
        /// </summary>
        /// <param name="areaid"></param>
        /// <param name="value"></param>
        /// <param name="type"></param>
        /// <param name="version"></param>
        /// <returns></returns>
        public DaysDataModel RealTimeData(int areaid, int value, int type, string version)
        {
            DaysDataModel data = new DaysDataModel();

            try
            {
                string ridesKey = "";
                if (string.IsNullOrEmpty(version))
                {
                    ridesKey = $"r_{value}_{type}_{areaid}";
                }
                else
                {
                    ridesKey = $"r_{value}_{type}_{version}_{areaid}";
                }
                long length             = _cache._redisProvider.LLen(ridesKey);
                List <JobRealData> list = _cache._redisProvider.LRange <JobRealData>(ridesKey, 0, length);
                var startTime           = DateTime.Now.AddHours(-24);
                var endTime             = DateTime.Now;
                list        = list.Where(i => i.dateTime >= startTime && i.dateTime <= endTime).OrderBy(i => i.dateTime).ToList();
                data.xAxis  = list.Select(i => i.dateTime.ToString("HH:mm")).ToList();
                data.Active = new platForm()
                {
                    All     = list.Select(i => i.Active.All).ToList(),
                    Android = list.Select(i => i.Active.Android).ToList(),
                    IOS     = list.Select(i => i.Active.IOS).ToList(),
                    Windows = list.Select(i => i.Active.Windows).ToList()
                };
                data.Register = new platForm()
                {
                    All     = list.Select(i => i.Register.All).ToList(),
                    Android = list.Select(i => i.Register.Android).ToList(),
                    IOS     = list.Select(i => i.Register.IOS).ToList(),
                    Windows = list.Select(i => i.Register.Windows).ToList()
                };
            }
            catch (Exception e)
            {
                _logger.LogError($"RealTimeData:{e.Message}");
                throw;
            }

            return(data);
        }