/// <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()); }
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="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)); } }
/// <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>"); } }
protected void WriteString(string result) { ThisResponse.HeaderEncoding = Encoding.UTF8; ThisResponse.Write(result); ThisResponse.End(); }