/// <summary>
        /// 单场景分析
        /// </summary>
        /// <param name="areaid">区域id</param>
        /// <param name="days">天数</param>
        /// <param name="platFrom">平台</param>
        /// <param name="otherParam">其它参数</param>
        /// <param name="dateRange">日期范围</param>
        /// <returns></returns>
        public SingleSceneModel GetSingleSceneData(int areaid, int days, string platFrom, string otherParam, string dateRange, int type, string version)
        {
            try
            {
                SingleSceneModel data      = new SingleSceneModel();
                List <string>    datelist  = new List <string>();
                string           contition = $"  and type={type} ";
                if (!string.IsNullOrEmpty(version))
                {
                    contition += $"  and version='{version}' ";
                }
                if (platFrom != PlatFromEnum.All.GetName())
                {
                    contition = $" and platForm='{platFrom}' ";
                }
                else
                {
                    contition = $" and platForm in('IOS','Android','Windows') ";
                }
                List <string> legendData = new List <string>();
                legendData.Add(platFrom);
                if (!string.IsNullOrEmpty(otherParam))
                {
                    legendData.Add(otherParam);
                }
                data.legendData = legendData;
                //近*天
                if (days != 0)
                {
                    var start = DateTime.Now.Date.AddDays(-days);
                    data.xAxis = xAxisTools.DataRange(days, true);
                    var end = DateTime.Now;
                    datelist = xAxisTools.DataRange(days);
                    //contition += $"and date between '{start}' and '{end}' ";
                    //数据   缓存数据
                    //var unitData = _repository.GetActionData(areaid, contition);
                    List <UserActionModel> unitData = new List <UserActionModel>();
                    if (string.IsNullOrEmpty(version))
                    {
                        unitData = _cache.GetRawDataForThirty(areaid.ToString(), start, end).Where(i => i.type == type && i.date >= start && i.date <= end).ToList();
                    }
                    else
                    {
                        unitData = _cache.GetRawDataForThirty(areaid.ToString(), start, end).Where(i => i.type == type && i.version == version && i.date >= start && i.date <= end).ToList();
                    }
                    //活跃
                    List <int> actv = new List <int>();
                    //注册
                    List <int> regst = new List <int>();
                    for (int i = 0; i < datelist.Count - 1; i++)
                    {
                        var      x      = datelist[i];
                        DateTime st     = Convert.ToDateTime(x);
                        var      et     = Convert.ToDateTime(datelist[i + 1]);
                        int      acount = 0;
                        int      rcount = 0;
                        if (platFrom == PlatFromEnum.All.GetName())
                        {
                            acount = unitData.Where(i => i.uid != 0 && i.date >= st && i.date < et).GroupBy(i => i.uid).Count();
                            rcount = unitData.Where(i => i.uid == 0 && i.date >= st && i.date < et).Count();
                        }
                        else
                        {
                            acount = unitData.Where(i => i.uid != 0 && i.date >= st && i.date < et && i.platForm.ToLower() == platFrom.ToLower()).GroupBy(i => i.uid).Count();
                            rcount = unitData.Where(i => i.uid == 0 && i.date >= st && i.date < et && i.platForm.ToLower() == platFrom.ToLower()).Count();
                        }
                        actv.Add(acount);
                        regst.Add(rcount);
                    }
                    data.ActiveData.Add(actv);
                    data.RegisterData.Add(regst);
                    //data.legendData.Add(platFrom);
                }
                //日期范围
                if (!string.IsNullOrEmpty(dateRange))
                {
                    var daterange = dateRange.Split('至');
                    var start     = Convert.ToDateTime(daterange[0].Trim());
                    var end       = Convert.ToDateTime(daterange[1].Trim());
                    contition += $"and date between '{start}' and '{end}' ";
                    //data.xAxis = xAxisTools.DataRange(start,end);
                    //数据
                    //var unitData = _repository.GetActionData(areaid, contition);//从缓存取30天数据
                    List <UserActionModel> unitData = new List <UserActionModel>();
                    if (string.IsNullOrEmpty(version))
                    {
                        unitData = _cache.GetRawDataForThirty(areaid.ToString(), start, end).Where(i => i.type == type && i.date >= start && i.date <= end).ToList();
                    }
                    else
                    {
                        unitData = _cache.GetRawDataForThirty(areaid.ToString(), start, end).Where(i => i.type == type && i.version == version && i.date >= start && i.date <= end).ToList();
                    }
                    datelist   = xAxisTools.DataRange(start, end);
                    data.xAxis = xAxisTools.DataRange(start, end, true);
                    List <int> actv = new List <int>();
                    //注册
                    List <int> regst = new List <int>();

                    for (int i = 0; i < datelist.Count - 1; i++)
                    {
                        var      x  = datelist[i];
                        DateTime st = Convert.ToDateTime(x);
                        //data.xAxis.Add(x);
                        var et     = Convert.ToDateTime(datelist[i + 1]);
                        int acount = 0;
                        int rcount = 0;
                        if (platFrom == PlatFromEnum.All.GetName())
                        {
                            acount = unitData.Where(i => i.uid != 0 && i.date >= st && i.date < et).GroupBy(i => i.uid).Count();
                            rcount = unitData.Where(i => i.uid == 0 && i.date >= st && i.date < et).Count();
                        }
                        else
                        {
                            acount = unitData.Where(i => i.uid != 0 && i.date >= st && i.date < et && i.platForm.ToLower() == platFrom.ToLower()).GroupBy(i => i.uid).Count();
                            rcount = unitData.Where(i => i.uid == 0 && i.date >= st && i.date < et && i.platForm.ToLower() == platFrom.ToLower()).Count();
                        }
                        actv.Add(acount);
                        regst.Add(rcount);
                    }
                    data.ActiveData.Add(actv);
                    data.RegisterData.Add(regst);
                    //data.legendData.Add(platFrom);
                }
                if (!string.IsNullOrEmpty(otherParam))
                {
                    data.legendData.Add(otherParam);
                    //数据
                    var        unitData = _repository.GetActionData(areaid, contition);
                    List <int> actv     = new List <int>();
                    //注册
                    List <int> regst = new List <int>();

                    for (int i = 0; i < datelist.Count - 1; i++)
                    {
                        var      x  = datelist[i];
                        DateTime st = Convert.ToDateTime(x);
                        //data.xAxis.Add(x);
                        var et     = Convert.ToDateTime(datelist[i + 1]);
                        int acount = 0;
                        int rcount = 0;
                        if (platFrom == PlatFromEnum.All.GetName())
                        {
                            acount = unitData.Where(i => i.uid != 0 && i.date >= st && i.date < et).GroupBy(i => i.uid).Count();
                            rcount = unitData.Where(i => i.uid == 0 && i.date >= st && i.date < et).Count();
                        }
                        else
                        {
                            acount = unitData.Where(i => i.uid != 0 && i.date >= st && i.date < et && i.platForm.ToLower() == platFrom.ToLower()).GroupBy(i => i.uid).Count();
                            rcount = unitData.Where(i => i.uid == 0 && i.date >= st && i.date < et && i.platForm.ToLower() == platFrom.ToLower()).Count();
                        }
                        actv.Add(acount);
                        regst.Add(rcount);
                    }
                    data.ActiveData.Add(actv);
                    data.RegisterData.Add(regst);
                    //data.legendData.Add(platFrom);
                }

                return(data);
            }
            catch (Exception e)
            {
                _logger.LogError($"SingleScene:{e.Message}");
                throw;
            }
        }