public void GetServerIp()
        {
            //if (!CheckHasRight("Reports/ServerLogReports/ServiceLogDateReport.aspx"))
            //    return;
            //List<Monitor_DataLogs> logList = new Monitor_DataLogsServer(true).GetLogNameAndServerIpCache(CacheTimeOption.TenMinutes);
            //string logname = GetQueryString("logname");
            //if (logList != null)
            //{
            //    var list = logList.Where(p => p.DataLogName == logname).Select(p=>p.ServerIp).ToList();
            //    StringBuilder sb = new StringBuilder("[");
            //    for (int i = 0; i < list.Count; i++)
            //    {
            //        sb.Append("{").AppendFormat("\"ServerID\":\"{0}\",\"ServerIp\":\"{1}\"",list[i],list[i]).Append("},");
            //    }
            //    ThisResponse.Write( sb.ToString().TrimEnd(',') + "]");

            //}

            string[]      serverIps = Monitor_DataLogsServer.GetServerIPList();
            StringBuilder sb        = new StringBuilder("[");

            for (int i = 0; i < serverIps.Length; i++)
            {
                sb.Append("{").AppendFormat("\"ServerID\":\"{0}\",\"ServerIp\":\"{1}\"", serverIps[i], serverIps[i]).Append("},");
            }
            ThisResponse.Write(sb.ToString().TrimEnd(',') + "]");
        }
        /// <summary>
        /// 版本分布数据EXCEL文件下载
        /// </summary>
        /// <param name="softId"></param>
        /// <param name="platform"></param>
        /// <param name="period"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="channelIds"></param>
        /// <param name="channelTypes"></param>
        private void GetStatUsersByVersionTransverse(int softId, int platform, int period, DateTime startDate, DateTime endDate, int[] channelIds, ChannelTypeOptions[] channelTypes)
        {
            //权限验证
            CheckHasRight(softId, "Reports/StatUsersByVersionTransverse.aspx");

            AddHead("版本分布.xls");

            StatUsersService      suService = new StatUsersService();
            List <Sjqd_StatUsers> users     = suService.GetRankOfVersions(softId, platform, channelIds[0], channelTypes[0], period, ref startDate, ref endDate);

            users = users.OrderByDescending(a => a.NewUserCount).ToList();
            StringBuilder sb = new StringBuilder();

            sb.Append("<table border=\"1\">");
            sb.Append(@"<thead><tr style=""text-align:center;""><th>排名</th><th>版本</th><th>新增用户</th><th>新增占比</th><th>涨跌量</th><th>活跃用户</th><th>活跃占比</th><th>留存率</th></tr></thead><tbody>");
            for (int i = 0; i < users.Count; i++)
            {
                sb.AppendFormat(@"<tr style=""text-align:right;""><td>{0}</td><td style=""text-align:left;"">{1}</td><td>{2:N0}</td>
                                  <td>{3:0.00}%</td><td>{4:N0}</td><td>{5:N0}</td><td>{6:0.00}%</td><td>{7:0.00}</td></tr>", i + 1
                                , users[i].Name
                                , users[i].NewUserCount
                                , users[i].NewUserPercent * 100
                                , users[i].NewUserCount - users[i].LastNewUserCount
                                , users[i].ActiveUserCount
                                , users[i].ActiveUserPercent * 100
                                , users[i].OriginalNewUserCount > 0 ? (((double)users[i].RetainedUserCount) / users[i].OriginalNewUserCount).ToString("0.00") + "%" : "");
            }
            sb.Append("</tbody></table>");
            ThisResponse.Write(sb.ToString());
        }
 /// <summary>
 /// 活跃用户留存率数据EXCEL文件下载
 /// </summary>
 /// <param name="softId"></param>
 /// <param name="platform"></param>
 /// <param name="startDate"></param>
 /// <param name="endDate"></param>
 /// <param name="channelIds"></param>
 /// <param name="channelTypes"></param>
 /// <param name="channelTexts"></param>
 private void GetStatRetainedActiveUsers(int softId, int platform, DateTime startDate, DateTime endDate, int[] channelIds, ChannelTypeOptions[] channelTypes, string[] channelTexts)
 {
     //权限验证
     CheckHasRight(softId, "Reports/StatRetainedActiveUsers.aspx");
     if (channelIds.Length == 1)
     {
         string fileName = string.Format("活跃用户留存率{0}.xls", channelIds[0] > 0 ? "(" + channelTexts[0] + ")" : string.Empty);
         AddHead(fileName);
         List <Sjqd_StatRetainedUsers> users = new StatUsersService().GetStatRetainedActiveUsers(softId, platform, channelIds[0], channelTypes[0], startDate, endDate);
         ThisResponse.Write(TableTemplateHelper.BuildStatRetainedUsersTable((int)net91com.Stat.Core.PeriodOptions.Daily, users, true, string.Empty, true));
     }
 }
 /// <summary>
 /// 活跃用户留存率分地区数据EXCEL文件下载
 /// </summary>
 /// <param name="softId"></param>
 /// <param name="platform"></param>
 /// <param name="startDate"></param>
 /// <param name="endDate"></param>
 /// <param name="channelIds"></param>
 /// <param name="channelTypes"></param>
 /// <param name="channelTexts"></param>
 private void GetStatRetainedActiveUsersByArea(int softId, int platform, DateTime startDate, DateTime endDate, int[] channelIds, ChannelTypeOptions[] channelTypes, string[] channelTexts)
 {
     //权限验证
     CheckHasRight(softId, "Reports/StatRetainedActiveUsersByArea.aspx");
     //地区ID
     string[] areaIds   = string.IsNullOrEmpty(ThisRequest["AreaIds"]) ? new string[0] : ThisRequest["AreaIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
     string[] areaNames = string.IsNullOrEmpty(ThisRequest["AreaNames"]) ? new string[0] : ThisRequest["AreaNames"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
     if (areaIds.Length == 1 && areaIds.Length == areaNames.Length && channelIds.Length == 1)
     {
         string fileName = string.Format("活跃用户留存率({0}{1}).xls", channelIds[0] > 0 ? channelTexts[0] + "-" : string.Empty, areaNames[0]);
         AddHead(fileName);
         List <Sjqd_StatRetainedUsers> users = new StatUsersService().GetStatRetainedActiveUsersByArea(softId, platform, areaIds[0], channelIds[0], channelTypes[0], startDate, endDate);
         ThisResponse.Write(TableTemplateHelper.BuildStatRetainedUsersTable((int)net91com.Stat.Core.PeriodOptions.Daily, users, true, string.Empty, true));
     }
 }
 /// <summary>
 /// 新增用户留存率分版本数据EXCEL文件下载
 /// </summary>
 /// <param name="softId"></param>
 /// <param name="platform"></param>
 /// <param name="period"></param>
 /// <param name="startDate"></param>
 /// <param name="endDate"></param>
 /// <param name="channelIds"></param>
 /// <param name="channelTypes"></param>
 /// <param name="channelTexts"></param>
 private void GetStatRetainedUsersByVersion(int softId, int platform, int period, DateTime startDate, DateTime endDate, int[] channelIds, ChannelTypeOptions[] channelTypes, string[] channelTexts)
 {
     //权限验证
     CheckHasRight(softId, "Reports/StatRetainedUsersByVersion.aspx");
     //版本ID
     string[] versionIds   = string.IsNullOrEmpty(ThisRequest["VersionIds"]) ? new string[0] : ThisRequest["VersionIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
     string[] versionNames = string.IsNullOrEmpty(ThisRequest["VersionNames"]) ? new string[0] : ThisRequest["VersionNames"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
     if (versionIds.Length == 1 && versionIds.Length == versionNames.Length && channelIds.Length == 1)
     {
         string fileName = string.Format("新增用户留存率({0}{1}).xls", channelIds[0] > 0 ? channelTexts[0] + "-" : string.Empty, versionNames[0]);
         AddHead(fileName);
         List <Sjqd_StatRetainedUsers> users = new StatUsersService().GetStatRetainedUsersByVersion(softId, platform, versionIds[0], channelIds[0], channelTypes[0], period, startDate, endDate);
         ThisResponse.Write(TableTemplateHelper.BuildStatRetainedUsersTable(period, users, true, string.Empty));
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 接口主入口
        /// </summary>
        /// <param name="context"></param>
        public override void ProcessRequest(HttpContext context)
        {
            #region 获取公共参数

            int[]                softIds   = string.IsNullOrEmpty(ThisRequest["SoftIds"]) ? new int[] { -1 } : ThisRequest["SoftIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => Convert.ToInt32(a)).ToArray();
            int[]                platforms = string.IsNullOrEmpty(ThisRequest["Platforms"]) ? new int[] { -1 } : ThisRequest["Platforms"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => Convert.ToInt32(a)).ToArray();
            int                  period    = string.IsNullOrEmpty(ThisRequest["Period"]) ? -1 : Convert.ToInt32(ThisRequest["Period"]);
            DateTime             startDate = string.IsNullOrEmpty(ThisRequest["StartDate"]) ? DateTime.MinValue : Convert.ToDateTime(ThisRequest["StartDate"]);
            DateTime             endDate   = string.IsNullOrEmpty(ThisRequest["EndDate"]) ? DateTime.MinValue : Convert.ToDateTime(ThisRequest["EndDate"]);
            int[]                chlIds    = string.IsNullOrEmpty(ThisRequest["ChannelIds"]) ? new int[] { -1 } : ThisRequest["ChannelIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => Convert.ToInt32(a)).ToArray();
            ChannelTypeOptions[] chlTypes  = string.IsNullOrEmpty(ThisRequest["ChannelTypes"]) ? new ChannelTypeOptions[] { ChannelTypeOptions.Category } : ThisRequest["ChannelTypes"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => (ChannelTypeOptions)Convert.ToInt32(a)).ToArray();
            if (chlIds.Length != chlTypes.Length)
            {
                chlIds   = new int[] { -1 };
                chlTypes = new ChannelTypeOptions[] { ChannelTypeOptions.Category };
            }

            #endregion

            //使用GB2312输出
            ThisResponse.ContentEncoding = Encoding.GetEncoding("GB2312");

            switch (ThisRequest["Action"])
            {
            case "GetRankOfSubChannels":
                GetRankOfSubChannels(softIds[0], platforms[0], period, startDate, endDate, chlIds[0]);
                break;

            case "GetRankOfVersions":
                GetRankOfVersions(softIds[0], platforms[0], period, startDate, endDate, chlIds[0], chlTypes[0]);
                break;

            case "GetRankOfAreas":
                GetRankOfAreas(softIds[0], platforms[0], period, startDate, endDate, chlIds[0], chlTypes[0]);
                break;

            case "GetStatUsersByVersionLine":
                GetStatUsersByVersionLine(softIds[0], platforms[0], period, startDate, endDate, chlIds[0], chlTypes[0]);
                break;

            case "GetStatUsersByAreaLine":
                GetStatUsersByAreaLine(softIds[0], platforms[0], period, startDate, endDate, chlIds[0], chlTypes[0]);
                break;
            }

            ThisResponse.Flush();
        }
        /// <summary>
        /// 下载固件版本分布数据
        /// </summary>
        private void DownloadGJBB()
        {
            net91com.Stat.Core.PeriodOptions Period = GetQueryString("zhouqi").ToEnum <net91com.Stat.Core.PeriodOptions>(net91com.Stat.Core.PeriodOptions.LatestOneWeek);
            int excelsoft     = Convert.ToInt32(GetQueryString("soft"));
            int excelplatform = Convert.ToInt32(GetQueryString("platform"));

            CheckHasRight(excelsoft, "Reports/TransverseReports/SoftGJBBTransverse.aspx");
            List <Sjqd_StatUsersByGjbb> list = StatUsersByGjbbService.GetInstance().GetSoftGJBBTransverse(Period,
                                                                                                          Convert.ToInt32(UtilityService.GetInstance().GetMaxTimeCache(Period, ReportType.StatTerminationDistribution, CacheTimeOption.TenMinutes).ToString("yyyyMMdd")), excelsoft, (MobileOption)excelplatform);
            int all = list.Sum(p => p.UseCount);

            ThisResponse.ContentEncoding = System.Text.Encoding.GetEncoding("GBK");
            AddHead("固件版本分布.xls");
            ThisResponse.Write("固件版本\t用户数\t百分比\t\n");
            string temp = string.Empty;

            list.ForEach(gjbb =>
            {
                ThisResponse.Write((string.IsNullOrEmpty(gjbb.Gjbb) ? "未知" : gjbb.Gjbb) + "\t" + gjbb.UseCount + "\t" + (Convert.ToDecimal(gjbb.UseCount) / all * 100).ToString("0.00") + "\t\n");
            });
            ThisResponse.End();
        }
        private void DownResolution()
        {
            net91com.Stat.Core.PeriodOptions Period = GetQueryString("zhouqi").ToEnum <net91com.Stat.Core.PeriodOptions>(net91com.Stat.Core.PeriodOptions.LatestOneWeek);
            int excelsoft     = Convert.ToInt32(GetQueryString("soft"));
            int excelplatform = Convert.ToInt32(GetQueryString("platform"));

            CheckHasRight(excelsoft, "Reports/TransverseReports/ResolutionReport.aspx");
            List <Resolution> list = TerminalService.GetInstance().GetResolutions(excelsoft, excelplatform, (int)Period,
                                                                                  Convert.ToInt32(UtilityService.GetInstance().GetMaxTimeCache(Period, ReportType.StatTerminationDistribution, CacheTimeOption.TenMinutes).ToString("yyyyMMdd"))
                                                                                  );

            ThisResponse.ContentEncoding = System.Text.Encoding.GetEncoding("GBK");
            AddHead("分辨率分布.xls");
            ThisResponse.Write("分辨率\t用户数\t百分比\t\n");
            string temp     = string.Empty;
            int    allcount = list.Sum(p => p.UseCount);

            list.ForEach(resol =>
            {
                ThisResponse.Write((string.IsNullOrEmpty(resol.ResolutionStr) ? "未知分辨率" : resol.ResolutionStr) + "\t" + string.Format("{0:N0}", (resol.UseCount)) + "\t" + (Convert.ToDecimal(resol.UseCount) / allcount * 100).ToString("0.00") + "\t\n");
            });
            ThisResponse.End();
        }
        /// <summary>
        /// 分地区用户数据EXCEL文件下载
        /// </summary>
        /// <param name="softId"></param>
        /// <param name="platform"></param>
        /// <param name="period"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="channelIds"></param>
        /// <param name="channelTypes"></param>
        /// <param name="channelTexts"></param>
        private void GetStatUsersByArea(int softId, int platform, int period, DateTime startDate, DateTime endDate, int[] channelIds, ChannelTypeOptions[] channelTypes, string[] channelTexts)
        {
            //权限验证
            CheckHasRight(softId, "Reports/StatUsersByArea.aspx");
            //地区ID
            string[] areaIds   = string.IsNullOrEmpty(ThisRequest["AreaIds"]) ? new string[0] : ThisRequest["AreaIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            string[] areaNames = string.IsNullOrEmpty(ThisRequest["AreaNames"]) ? new string[0] : ThisRequest["AreaNames"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            if (areaIds.Length > 0 && areaIds.Length == areaNames.Length)
            {
                AddHead("分地区统计.xls");

                StringBuilder firstRowBuilder  = new StringBuilder("<tr style=\"text-align:center\"><th rowspan=\"2\">日期</th>");
                StringBuilder secondRowBuilder = new StringBuilder("<tr style=\"text-align:center\">");
                Dictionary <string, StringBuilder> dataRowBuilders = new Dictionary <string, StringBuilder>();
                List <DateTime> dates = GetDateList((net91com.Stat.Core.PeriodOptions)period, startDate, endDate);
                for (int i = 0; i < dates.Count; i++)
                {
                    dataRowBuilders.Add(dates[i].ToString("yyyy-MM-dd"), new StringBuilder("<tr style=\"text-align:right\"><td>" + dates[i].ToString("yyyy-MM-dd") + "</td>"));
                }
                StringBuilder totalRowBuilder = new StringBuilder("<tr style=\"text-align:right\"><td>总计</td>");
                StringBuilder avgRowBuilder   = new StringBuilder("<tr style=\"text-align:right\"><td>平均</td>");
                //获取分地区用户数据并输出结果
                StatUsersService suService = new StatUsersService();
                for (int i = 0; i < channelIds.Length; i++)
                {
                    for (int j = 0; j < areaIds.Length; j++)
                    {
                        firstRowBuilder.AppendFormat("<th colspan=\"4\">{0}{1}</th>", string.IsNullOrEmpty(channelTexts[i]) ? "" : channelTexts[i] + "-", areaNames[j]);
                        secondRowBuilder.Append("<th>新增用户</th><th>新增价值用户</th><th>活跃用户</th><th>活跃价值用户</th>");
                        List <Sjqd_StatUsers> statUsersList = suService.GetStatUsersByArea(softId, platform, channelTypes[i], channelIds[i], areaIds[j], period, startDate, endDate).OrderByDescending(a => a.StatDate).ToList();
                        for (int k = 0, l = 0; l < dates.Count; l++)
                        {
                            if (k < statUsersList.Count && dates[l] == statUsersList[k].StatDate)
                            {
                                dataRowBuilders[dates[l].ToString("yyyy-MM-dd")].AppendFormat("<td>{0:N0}</td><td>{1:N0}</td><td>{2:N0}</td><td>{3:N0}</td>", statUsersList[k].NewUserCount, statUsersList[k].DownNewUserCount, statUsersList[k].ActiveUserCount, statUsersList[k].DownActiveUserCount);
                                k++;
                            }
                            else
                            {
                                dataRowBuilders[dates[l].ToString("yyyy-MM-dd")].Append("<td></td><td></td><td></td><td></td>");
                            }
                        }
                        totalRowBuilder.AppendFormat("<td>{0:N0}</td><td>{1:N0}</td><td></td><td></td>", statUsersList.Sum(a => a.NewUserCount), statUsersList.Sum(a => a.DownNewUserCount));
                        avgRowBuilder.AppendFormat("<td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td>"
                                                   , statUsersList.Count == 0 ? "" : ((int)statUsersList.Average(a => a.NewUserCount)).ToString("N0")
                                                   , statUsersList.Count == 0 ? "" : ((int)statUsersList.Average(a => a.DownNewUserCount)).ToString("N0")
                                                   , statUsersList.Count == 0 ? "" : ((int)statUsersList.Average(a => a.ActiveUserCount)).ToString("N0")
                                                   , statUsersList.Count == 0 ? "" : ((int)statUsersList.Average(a => a.DownActiveUserCount)).ToString("N0"));
                    }
                }
                ThisResponse.Write("<table border=\"1\">");
                ThisResponse.Write(firstRowBuilder.ToString());
                ThisResponse.Write("</tr>");
                ThisResponse.Write(secondRowBuilder.ToString());
                ThisResponse.Write("</tr>");
                for (int i = 0; i < dates.Count; i++)
                {
                    ThisResponse.Write(dataRowBuilders[dates[i].ToString("yyyy-MM-dd")].ToString());
                    ThisResponse.Write("</tr>");
                }
                ThisResponse.Write(totalRowBuilder.ToString());
                ThisResponse.Write("</tr>");
                ThisResponse.Write(avgRowBuilder.ToString());
                ThisResponse.Write("</tr></table>");
            }
        }
        /// <summary>
        /// 分版本用户数据EXCEL文件下载
        /// </summary>
        /// <param name="softId"></param>
        /// <param name="platform"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        private void GetStatUsersByCountryByVersionEn(int softId, int platform, DateTime startDate, DateTime endDate)
        {
            //权限验证
            CheckHasRight(softId, "Reports/StatUsersByCountryByVersion.aspx");
            //版本
            string[] versionIds   = string.IsNullOrEmpty(ThisRequest["VersionIds"]) ? new string[0] : ThisRequest["VersionIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            string[] versionNames = string.IsNullOrEmpty(ThisRequest["VersionNames"]) ? new string[0] : ThisRequest["VersionNames"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            //国家
            string[] countryIds = string.IsNullOrEmpty(ThisRequest["CountryIds"]) ? new string[0] : ThisRequest["CountryIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            string[] countries  = string.IsNullOrEmpty(ThisRequest["Countries"]) ? new string[0] : ThisRequest["Countries"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            if (versionIds.Length > 0 && countryIds.Length > 0 &&
                versionIds.Length == versionNames.Length &&
                countryIds.Length == countries.Length)
            {
                AddHead("分国家分版本(海外)统计.xls");

                StringBuilder firstRowBuilder  = new StringBuilder("<tr style=\"text-align:center\"><th rowspan=\"2\">日期</th>");
                StringBuilder secondRowBuilder = new StringBuilder("<tr style=\"text-align:center\">");
                Dictionary <string, StringBuilder> dataRowBuilders = new Dictionary <string, StringBuilder>();
                List <DateTime> dates = GetDateList(net91com.Stat.Core.PeriodOptions.Daily, startDate, endDate);
                for (int i = 0; i < dates.Count; i++)
                {
                    dataRowBuilders.Add(dates[i].ToString("yyyy-MM-dd"), new StringBuilder("<tr style=\"text-align:right\"><td>" + dates[i].ToString("yyyy-MM-dd") + "</td>"));
                }
                StringBuilder totalRowBuilder = new StringBuilder("<tr style=\"text-align:right\"><td>总计</td>");
                StringBuilder avgRowBuilder   = new StringBuilder("<tr style=\"text-align:right\"><td>平均</td>");
                //获取分地区用户数据并输出结果
                StatUsersService suService = new StatUsersService();
                Dictionary <string, List <Sjqd_StatUsers> > users = suService.GetStatUsersByCountryByVersionEn(softId, platform, versionIds.ToList(), countryIds.ToList(), startDate, endDate);
                for (int i = 0; i < versionIds.Length; i++)
                {
                    for (int j = 0; j < countryIds.Length; j++)
                    {
                        firstRowBuilder.AppendFormat("<th colspan=\"2\">{0}-{1}</th>", versionNames[i], countries[j]);
                        secondRowBuilder.Append("<th>新增用户</th><th>活跃用户</th>");
                        B_BaseTool_DataAccess bt = new B_BaseTool_DataAccess();
                        string key = string.Format("{0}-{1}", versionIds[i], countryIds[j]);
                        List <Sjqd_StatUsers> statUsersList = users.ContainsKey(key) ? users[key].OrderByDescending(a => a.StatDate).ToList() : new List <Sjqd_StatUsers>();
                        for (int k = 0, l = 0; l < dates.Count; l++)
                        {
                            if (k < statUsersList.Count && dates[l] == statUsersList[k].StatDate)
                            {
                                dataRowBuilders[dates[l].ToString("yyyy-MM-dd")].AppendFormat("<td>{0:N0}</td><td>{1:N0}</td>", statUsersList[k].NewUserCount, statUsersList[k].ActiveUserCount);
                                k++;
                            }
                            else
                            {
                                dataRowBuilders[dates[l].ToString("yyyy-MM-dd")].Append("<td></td><td></td>");
                            }
                        }
                        totalRowBuilder.AppendFormat("<td>{0:N0}</td><td></td>", statUsersList.Sum(a => a.NewUserCount));
                        avgRowBuilder.AppendFormat("<td>{0}</td><td>{1}</td>", statUsersList.Count == 0 ? "" : ((int)statUsersList.Average(a => a.NewUserCount)).ToString("N0"), statUsersList.Count == 0 ? "" : ((int)statUsersList.Average(a => a.ActiveUserCount)).ToString("N0"));
                    }
                }
                ThisResponse.Write("   <table name=\"分国家分版本(海外)统计\" border=\"1\">");
                ThisResponse.Write(firstRowBuilder.ToString());
                ThisResponse.Write("</tr>");
                ThisResponse.Write(secondRowBuilder.ToString());
                ThisResponse.Write("</tr>");
                for (int i = 0; i < dates.Count; i++)
                {
                    ThisResponse.Write(dataRowBuilders[dates[i].ToString("yyyy-MM-dd")].ToString());
                    ThisResponse.Write("</tr>");
                }
                ThisResponse.Write(totalRowBuilder.ToString());
                ThisResponse.Write("</tr>");
                ThisResponse.Write(avgRowBuilder.ToString());
                ThisResponse.Write("</tr></table>");
            }
        }
        /// <summary>
        /// 接口主入口
        /// </summary>
        /// <param name="context"></param>
        public override void ProcessRequest(HttpContext context)
        {
            #region 获取公共参数

            int                  softId    = string.IsNullOrEmpty(ThisRequest["SoftID"]) ? -1 : Convert.ToInt32(ThisRequest["SoftID"]);
            int                  platform  = string.IsNullOrEmpty(ThisRequest["Platform"]) ? -1 : Convert.ToInt32(ThisRequest["Platform"]);
            int                  period    = string.IsNullOrEmpty(ThisRequest["Period"]) ? -1 : Convert.ToInt32(ThisRequest["Period"]);
            DateTime             startDate = string.IsNullOrEmpty(ThisRequest["StartDate"]) ? DateTime.MinValue : Convert.ToDateTime(ThisRequest["StartDate"]);
            DateTime             endDate   = string.IsNullOrEmpty(ThisRequest["EndDate"]) ? DateTime.MinValue : Convert.ToDateTime(ThisRequest["EndDate"]);
            int[]                chlIds    = string.IsNullOrEmpty(ThisRequest["ChannelIds"]) ? new int[] { -1 } : ThisRequest["ChannelIds"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => Convert.ToInt32(a)).ToArray();
            ChannelTypeOptions[] chlTypes  = string.IsNullOrEmpty(ThisRequest["ChannelTypes"]) ? new ChannelTypeOptions[] { ChannelTypeOptions.Category } : ThisRequest["ChannelTypes"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => (ChannelTypeOptions)Convert.ToInt32(a)).ToArray();
            string[]             chlTexts  = string.IsNullOrEmpty(ThisRequest["ChannelTexts"]) ? new string[] { string.Empty } : ThisRequest["ChannelTexts"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            if (chlIds.Length != chlTypes.Length || chlIds.Length != chlTexts.Length)
            {
                chlIds   = new int[] { -1 };
                chlTypes = new ChannelTypeOptions[] { ChannelTypeOptions.Category };
                chlTexts = new string[] { string.Empty };
            }

            #endregion

            //使用GB2312输出
            ThisResponse.ContentEncoding = Encoding.GetEncoding("GB2312");

            switch (ThisRequest["Action"])
            {
            case "GetStatRetainedUsers":
                GetStatRetainedUsers(softId, platform, period, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatRetainedActiveUsers":
                GetStatRetainedActiveUsers(softId, platform, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatUsersByArea":
                GetStatUsersByArea(softId, platform, period, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatRetainedUsersByArea":
                GetStatRetainedUsersByArea(softId, platform, period, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatRetainedActiveUsersByArea":
                GetStatRetainedActiveUsersByArea(softId, platform, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatUsersByVersion":
                GetStatUsersByVersion(softId, platform, period, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatUsersByCountryByVersionEn":
                GetStatUsersByCountryByVersionEn(softId, platform, startDate, endDate);
                break;

            case "GetStatRetainedUsersByVersion":
                GetStatRetainedUsersByVersion(softId, platform, period, startDate, endDate, chlIds, chlTypes, chlTexts);
                break;

            case "GetStatUsersByVersionTransverse":
                GetStatUsersByVersionTransverse(softId, platform, period, startDate, endDate, chlIds, chlTypes);
                break;

            case "GetStatUsersByAreaTransverse":
                GetStatUsersByAreaTransverse(softId, platform, period, startDate, endDate, chlIds, chlTypes);
                break;
            }
            ThisResponse.Flush();
        }
Ejemplo n.º 12
0
 protected void WriteString(string result)
 {
     ThisResponse.HeaderEncoding = Encoding.UTF8;
     ThisResponse.Write(result);
     ThisResponse.End();
 }